㈠ 如何讓數據流動起來,讓數據擁抱數據
圍牆里的大數據註定成為死數據。大數據需要開放式創新,從數據的開放、共享和交易,到價值提取能力的開放,再到基礎處理和分析平台的開放,讓數據如同血液在數據社會的軀體中長流,滋潤數據經濟,讓更多的長尾企業和數據思維創新者產生多姿多彩的化學作用,才能創造大數據的黃金時代。
我的大數據研究軌跡
我做了4-5年的移動架構和Java虛擬機,4-5年的眾核架構和並行編程系統,最近4-5年也在追時髦,先是投入物聯網,最近幾年一直在做大數據。我們團隊的大數據研究軌跡如下圖所示:
2010-2012年,主要關注數據和機器的關系:水平擴展、容錯、一致性、軟硬體協同設計,同時釐清各種計算模式,從批處理(MapRece)到流處理、Big SQL/ad hoc query、圖計算、機器學習等等。事實上,我們的團隊只是英特爾大數據研發力量的一部分,上海的團隊是英特爾Hadoop發行版的主力軍,現在英特爾成了Cloudera的最大股東,自己不做發行版了,但是平台優化、開源支持和垂直領域的解決方案仍然是英特爾大數據研發的重心。
從2013年開始關注數據與人的關系:對於數據科學家怎麼做好分布式機器學習、特徵工程與非監督學習,對於領域專家來說怎麼做好互動式分析工具,對於終端用戶怎麼做好互動式可視化工具。英特爾研究院在美國卡內基梅隆大學支持的科研中心做了GraphLab、Stale Synchronous Parallelism,在MIT的科研中心做了互動式可視化和SciDB上的大數據分析,而中國主要做了Spark SQL和MLlib(機器學習庫),現在也涉及到深度學習演算法和基礎設施。
2014年重點分析數據和數據的關系:我們原來的工作重心是開源,後來發現開源只是開放式創新的一個部分,做大數據的開放式創新還要做數據的開放、大數據基礎設施的開放以及價值提取能力的開放。
數據的暗黑之海與外部效應
下面是一張非常有意思的圖,黃色部分是化石級的,即沒有聯網、沒有數字化的數據,而絕大多數的數據是在這片海裡面。只有海平面的這些數據(有人把它稱作Surface Web)才是真正大家能訪問到的數據,爬蟲能爬到、搜索引擎能檢索到的數據,而絕大多數的數據是在暗黑之海裡面(相應地叫做Dark Web),據說這一部分佔數據總量的85%以上,它們在一些孤島裡面,在一些企業、政府裡面躺在地板上睡大覺。
數據之於數據社會,就如同水之於城市或者血液之於身體一樣。城市因為河流而誕生也受其滋養,血液一旦停滯身體也就危在旦夕。所以,對於號稱數據化生存的社會來說,我們一定要讓數據流動起來,不然這個社會將會喪失諸多重要功能。
所以,我們希望數據能夠像「金風玉露一相逢」那樣產生化學作用。馬化騰先生提出了一個internet+的概念,英特爾也有一個大數據X,相當於大數據乘以各行各業。如下圖所示,乘法效應之外,數據有個非常奇妙的效應叫做外部效應(externality),比如這個數據對我沒用但對TA很有用,所謂我之毒葯彼之蜜糖。
比如,金融數據和電商數據碰撞在一起,就產生了像小微貸款那樣的互聯網金融;電信數據和政府數據相遇,可以產生人口統計學方面的價值,幫助城市規劃人們居住、工作、娛樂的場所;金融數據和醫學數據在一起,麥肯錫列舉了很多應用,比如可以發現騙保;物流數據和電商數據湊在一塊,可以了解各個經濟子領域的運行情況;物流數據和金融數據產生供應鏈金融,而金融數據和農業數據也能發生一些化學作用。比如Google analytics出來的幾個人,利用美國開放氣象數據,在每一塊農田上建立微氣象模型,可以預測災害,幫助農民保險和理賠。
所以,要走數據開放之路,讓不同領域的數據真正流動起來、融合起來,才能釋放大數據的價值。
三個關於開放的概念
1、數據開放
首先是狹義的數據開放。數據開放的主體是政府和科研機構,把非涉密的政府數據及科研數據開放出來。現在也有一些企業願意開放數據,像Netflix和一些電信運營商,來幫助他們的數據價值化,建構生態系統。但是數據開放不等於信息公開。首先,數據不等於信息,信息是從數據裡面提煉出來的東西。我們希望,首先要開放原始的數據(raw data),其次,它是一種主動和免費的開放,我們現在經常聽說要申請信息公開,那是被動的開放。
Tim Berners Lee提出了數據開放的五星標准,以保證數據質量:一星是開放授權的格式,比如說PDF;其次是結構化,把數據從文件變成了像excel這樣的表;三星是開放格式,如CSV;四星是能夠通過URI找到每一個數據項;五星代表能夠和其它數據鏈接,形成一個開放的數據圖譜。
現在主流的數據開放門戶,像data.dov或data.gov.uk,都是基於開源軟體。英特爾在MIT的大數據科研中心也做了一種形態,叫Datahub:吉祥物很有趣,一半是大象,代表資料庫技術,一半是章魚,取自github的吉祥物章魚貓。它提供更多的功能比如易管理性,提供結構化數據服務和訪問控制,對數據共享進行管理,同時可以在原地做可視化和分析。
廣義的數據開放還有數據的共享及交易,比如點對點進行數據共享或在多邊平台上做數據交易。馬克思說生產資料所有制是經濟的基礎,但是現在大家可以發現,生產資料的租賃制變成了一種主流(參考《Lean Startup》),在數據的場景下,我不一定擁有數據,甚至不用整個數據集,但可以租賃。租賃的過程中要保證數據的權利。
首先,我可以做到數據給你用,但不可以給你看見。姚期智老先生82年提出「millionaires』 dilemma(百萬富翁的窘境)」,兩個百萬富翁比富誰都不願意說出自己有多少錢,這就是典型的「可用但不可見」場景。在實際生活中的例子很多,比如美國國土安全部有恐怖分子名單(數據1),航空公司有乘客飛行記錄(數據2),國土安全部向航空公司要乘客飛行記錄,航空公司不給,因為涉及隱私,他反過來向國土安全部要恐怖分子名單,也不行,因為是國家機密。雙方都有發現恐怖分子的意願,但都不願給出數據,有沒有辦法讓數據1和數據2放一起掃一下,但又保障數據安全呢?
其次,在數據使用過程中要有審計,萬一那個掃描程序偷偷把數據藏起來送回去怎麼辦?再者,需要數據定價機制,雙方數據的價值一定不對等,產生的洞察對各方的用途也不一樣,因此要有個定價機制,比大鍋飯式的數據共享更有激勵性。
從點對點的共享,走到多邊的數據交易,從一對多的數據服務到多對多的數據市場,再到數據交易所。如果說現在的數據市場更多是對數據集進行買賣的話,那麼數據交易所就是一個基於市場進行價值發現和定價的,像股票交易所那樣的、小批量、高頻率的數據交易。
我們支持了不少研究來實現剛才所說的這些功能,比如說可用而不可見。案例一是通過加密資料庫CryptDB/Monomi實現,在數據擁有方甲方這邊的資料庫是完全加密的,這事實上也防止了現在出現的很多數據泄露問題,大家已經聽到,比如說某互聯網服務提供商的員工偷偷把數據拿出來賣,你的數據一旦加密了他拿出來也沒用。其次,這個加密資料庫可以運行乙方的普通SQL程序,因為它採用了同態加密技術和洋蔥加密法,SQL的一些語義在密文上也可以執行。
針對「百萬富翁的窘境」,我們做了另一種可用但不可見的技術,叫做數據咖啡館。大家知道咖啡館是讓人和人進行思想碰撞的地方,這個數據咖啡館就是讓數據和數據能夠碰撞而產生新的價值。
比如兩個電商,一個是賣衣服的,一個是賣化妝品的,他們對於客戶的洞察都是相對有限的,如果兩邊的數據放在一起做一次分析,那麼就能夠獲得全面的用戶畫像。再如,癌症是一類長尾病症,有太多的基因突變,每個研究機構的基因組樣本都相對有限,這在某種程度上解釋了為什麼過去50年癌症的治癒率僅僅提升了8%。那麼,多個研究機構的數據在咖啡館碰一碰,也能夠加速癌症的研究。
在咖啡館的底層是多方安全計算的技術,基於英特爾和伯克利的一個聯合研究。在上面是安全、可信的Spark,基於「data lineage」的使用審計,根據各方數據對結果的貢獻進行定價。
2、大數據基礎設施的開放
現在有的是有大數據思維的人,但他們很捉急,玩不起、玩不會大數據,他不懂怎麼存儲、怎麼處理這些大數據,這就需要雲計算。基礎設施的開放還是傳統的Platform as a Service,比如Amazon AWS里有MapRece,Google有Big Query。這些大數據的基礎處理和分析平台可以降低數據思維者的門檻,釋放他們的創造力。
比如decide.com,每天爬幾十萬的數據,對價格信息(結構化的和非結構化的)進行分析,然後告訴你買什麼牌子、什麼時候買最好。只有四個PhD搞演算法,其他的靠AWS。另一家公司Prismatic,也利用了AWS,這是一家做個性化閱讀推薦的,我專門研究過它的計算圖、存儲和高性能庫,用LISP的一個變種Clojure寫的非常漂亮,真正做技術的只有三個學生。
所以當這些基礎設施社會化以後,大數據思維者的春天很快就要到來。
3、價值提取能力的開放
現在的模式一般是一大一小或一對多。比如Tesco和Dunnhumby,後者剛開始是很小的公司,找到Tesco給它做客戶忠誠度計劃,一做就做了幾十年,這樣的長期戰略合作優於短期的數據分析服務,決策更注重長期性。當然,Dunnhumby現在已經不是小公司了,也為其他大公司提供數據分析服務。再如沃爾瑪和另外一家小公司合作,做數據分析,最後他把這家小公司買下來了,成了它的Walmart Labs。
一對多的模式,典型的是Palantir——Peter Thiel和斯坦福的幾個教授成立的公司,目前還是私有的,但估值近百億了,它很擅長給各類政府和金融機構提供數據價值提取服務。真正把這種能力開放的是Kaggle,它的雙邊,一邊是10多萬的分析師,另一邊是需求方企業,企業在Kaggle上發標,分析師競標,獲得業務。這可能是真正解決長尾公司價值提取能力的辦法。當然,如果能和我們的數據咖啡館結合,就更好了。
㈡ 如何用Python和機器學習炒股賺錢
相信很多人都想過讓人工智慧來幫你賺錢,但到底該如何做呢?瑞士日內瓦的一位金融數據顧問 Gaëtan Rickter 近日發表文章介紹了他利用 Python 和機器學習來幫助炒股的經驗,其最終成果的收益率跑贏了長期處於牛市的標准普爾 500 指數。雖然這篇文章並沒有將他的方法完全徹底公開,但已公開的內容或許能給我們帶來如何用人工智慧炒股的啟迪。
我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。
這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:
「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」
在研究者給出的許多有見地的觀察中,其中有一個總結很突出:
「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」
我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。
我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。
如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。
我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。
㈢ 為什麼手動實現決策樹效率比調包低很多
1.每個演算法模塊按照「原理講解→分析數據→自己動手實現→特徵與調參」的順序,「原理加實踐,頂天立地」。
2.拒絕簡單的「調包」——增加3次「機器學習的角度看數學」和3次「Python數據清洗和特徵提取」,提升學習深度、降低學習坡度。
3.增加網路爬蟲的原理和編寫,從獲取數據開始,重視將實踐問題轉換成實際模型的能力,分享工作中的實際案例或Kaggle案例:廣告銷量分析、環境數據異常檢測和分析、數字圖像手寫體識別、Titanic乘客存活率預測、用戶-電影推薦、真實新聞組數據主題分析、中文分詞、股票數據特徵分析等。
㈣ 數據挖掘工程師一般都做什麼
數據挖掘工程師是做什麼的?
數據挖掘,從字面上理解,就是在數據中找到有用的東西,哪些東西有用就要看具體的業務目標了。最簡單的就是統計應用了,比如電商數據,如淘寶統計過哪個省購買泳衣最多、哪個省的女生胸罩最大等,進一步,可以基於用戶的瀏覽、點擊、收藏、購買等行為推斷用戶的年齡、性別、購買能力、愛好等能表示一個人的畫像,就相當於用這些挖掘出來的屬性來刻畫一個人,這些還是最簡單的東西,更深層次的比如預測(股票預測),但是比較難。
數據挖掘往往與機器學習離不開。比如分類、聚類、關聯規則挖掘、個性化推薦、預測、神經網路、深度學習等。
數據挖掘 = 業務知識 + 自然語言處理技術( NLP ) + 計算機視覺技術( CV ) + 機器學習 / 深度學習( ML/DL )
( 1 )其中業務知識具體指的是個性化推薦,計算廣告,搜索,互聯網金融等; NLP , CV 分別是處理文本,圖像視頻數據的領域技術,可以理解為是將非結構化數據提取轉換成結構化數據;最後的ml/dl 技術則是屬於模型學習理論;
( 2 )在選擇崗位時,各個公司都沒有一套標準的稱呼,但是所做的事情無非 2 個大方向,一種是主要鑽研某個領域的技術,比如自然語言處理工程師,計算機視覺工程師,機器學習工程師等;一種是將各種領域技術應用到業務場景中去解決業務需求,比如數據挖掘工程師,推薦系統工程師等;具體的稱呼不重要,重要的是平時的工作內容;
PS :在互聯網行業,數據挖掘相關技術應用比較成功的主要是推薦以及計算廣告領域,而其中涉及到的數據主要也是文本,所以 NLP 技術相對來講比較重要,至於 CV 技術主要還是在人工智慧領域(無人車,人臉識別等)應用較多,本人了解有限,相關的描述會較少;
數據挖掘崗位需要具備的3 種基本能力
1. 工程能力
( 1 )編程基礎:需要掌握一大一小兩門語言,大的指 C++ 或者 Java ,小的指 Python 或者 shell 腳本;需要掌握基本的資料庫語言;
建議: MySQL + python + C++ ;語言只是一種工具,看看語法就好;
推薦書籍:《 C++ primer plus 》
( 2 )開發平台: Linux ;
建議:掌握常見的命令,掌握 Linux 下的源碼編譯原理;
推薦書籍:《 Linux 私房菜》
( 3 )數據結構與演算法分析基礎:掌握常見的數據結構以及操作(線性表,隊,列,字元串,樹,圖等),掌握常見的計算機演算法(排序演算法,查找演算法,動態規劃,遞歸等);
建議:多敲代碼,多上 OJ 平台刷題;
推薦書籍:《大話數據結構》《劍指 offer 》
( 4 )海量數據處理平台: Hadoop ( mr 計算模型, java 開發)或者 Spark ( rdd 計算模型, scala開發),重點推薦後者;
建議:主要是會使用,有精力的話可以看看源碼了解集群調度機制之類的;
推薦書籍:《大數據 spark 企業級實戰》
2. 演算法能力
( 1 )數學基礎:概率論,數理統計,線性代數,隨機過程,最優化理論
建議:這些是必須要了解的,即使沒法做到基礎扎實,起碼也要掌握每門學科的理論體系,涉及到相應知識點時通過查閱資料可以做到無障礙理解;
( 2 )機器學習 / 深度學習:掌握 常見的機器學習模型(線性回歸,邏輯回歸, SVM ,感知機;決策樹,隨機森林, GBDT , XGBoost ;貝葉斯, KNN , K-means , EM 等);掌握常見的機器學習理論(過擬合問題,交叉驗證問題,模型選擇問題,模型融合問題等);掌握常見的深度學習模型( CNN ,RNN 等);
建議:這里的掌握指的是能夠熟悉推導公式並能知道模型的適用場景;
推薦書籍:《統計學習方法》《機器學習》《機器學習實戰》《 UFLDL 》
( 3 )自然語言處理:掌握常見的方法( tf-idf , word2vec , LDA );
3. 業務經驗
( 1 )了解推薦以及計算廣告相關知識;
推薦書籍:《推薦系統實踐》《計算廣告》
( 2 )通過參加數據挖掘競賽熟悉相關業務場景,常見的比賽有 Kaggle ,阿里天池, datacastle 等。
想要學習數據挖掘的話可以看一下這篇文章《AI時代就業指南:數據挖掘入門與求職》
㈤ 如何用Python和機器學習炒股賺錢
如何用Python和機器學習炒股賺錢?(圖片太多未貼,可以去找原文)
我終於跑贏了標准普爾 500 指數 10 個百分點!聽起來可能不是很多,但是當我們處理的是大量流動性很高的資本時,對沖基金的利潤就相當可觀。更激進的做法還能得到更高的回報。
這一切都始於我閱讀了 Gur Huberman 的一篇題為《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的論文。該研究描述了一件發生在 1998 年的涉及到一家上市公司 EntreMed(當時股票代碼是 ENMD)的事件:
「星期天《紐約時報》上發表的一篇關於癌症治療新葯開發潛力的文章導致 EntreMed 的股價從周五收盤時的 12.063 飆升至 85,在周一收盤時接近 52。在接下來的三周,它的收盤價都在 30 以上。這股投資熱情也讓其它生物科技股得到了溢價。但是,這個癌症研究方面的可能突破在至少五個月前就已經被 Nature 期刊和各種流行的報紙報道過了,其中甚至包括《泰晤士報》!因此,僅僅是熱情的公眾關注就能引發股價的持續上漲,即便實際上並沒有出現真正的新信息。」
在研究者給出的許多有見地的觀察中,其中有一個總結很突出:
「(股價)運動可能會集中於有一些共同之處的股票上,但這些共同之處不一定要是經濟基礎。」
我就想,能不能基於通常所用的指標之外的其它指標來劃分股票。我開始在資料庫裡面挖掘,幾周之後我發現了一個,其包含了一個分數,描述了股票和元素周期表中的元素之間的「已知和隱藏關系」的強度。
我有計算基因組學的背景,這讓我想起了基因和它們的細胞信號網路之間的關系是如何地不為人所知。但是,當我們分析數據時,我們又會開始看到我們之前可能無法預測的新關系和相關性。
選擇出的涉及細胞可塑性、生長和分化的信號通路的基因的表達模式
和基因一樣,股票也會受到一個巨型網路的影響,其中各個因素之間都有或強或弱的隱藏關系。其中一些影響和關系是可以預測的。
我的一個目標是創建長的和短的股票聚類,我稱之為「籃子聚類(basket clusters)」,我可以將其用於對沖或單純地從中獲利。這需要使用一個無監督機器學習方法來創建股票的聚類,從而使這些聚類之間有或強或弱的關系。這些聚類將會翻倍作為我的公司可以交易的股票的「籃子(basket)」。
首先我下載了一個數據集:http://54.174.116.134/recommend/datasets/supercolumns-elements-08.html,這個數據集基於元素周期表中的元素和上市公司之間的關系。
然後我使用了 Python 和一些常用的機器學習工具——scikit-learn、numpy、pandas、matplotlib 和 seaborn,我開始了解我正在處理的數據集的分布形狀。為此我參考了一個題為《Principal Component Analysis with KMeans visuals》的 Kaggle Kernel:https://www.kaggle.com/arthurtok/principal-component-analysis-with-kmeans-visuals
importnumpy asnp
importpandas aspd
fromsklearn.decomposition
importPCA
fromsklearn.cluster
importKMeans
importmatplotlib.pyplot asplt
importseaborn assbnp.seterr(divide= 'ignore', invalid= 'ignore')
# Quick way to test just a few column features
# stocks = pd.read_csv('supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01.csv', usecols=range(1,16))
stocks = pd.read_csv( 'supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01.csv')print(stocks.head())str_list = []
forcolname, colvalue instocks.iteritems():
iftype(colvalue[ 1]) == str: str_list.append(colname)
# Get to the numeric columns by inversion
num_list = stocks.columns.difference(str_list)stocks_num = stocks[num_list]print(stocks_num.head())
輸出:簡單看看前面 5 行:
概念特徵的皮爾遜相關性(Pearson Correlation)。在這里案例中,是指來自元素周期表的礦物和元素:
stocks_num = stocks_num.fillna(value= 0, axis= 1)X = stocks_num.values
fromsklearn.preprocessing importStandardScalerX_std = StandardScaler().fit_transform(X)f, ax = plt.subplots(figsize=( 12, 10))plt.title( 'Pearson Correlation of Concept Features (Elements & Minerals)')
# Draw the heatmap using seaborn
sb.heatmap(stocks_num.astype(float).corr(),linewidths= 0.25,vmax= 1.0, square= True, cmap= "YlGnBu", linecolor= 'black', annot= True)sb.plt.show()
輸出:(這個可視化例子是在前 16 個樣本上運行得到的)。看到元素周期表中的元素和上市公司關聯起來真的很有意思。在某種程度時,我想使用這些數據基於公司與相關元素或材料的相關性來預測其可能做出的突破。
測量「已解釋方差(Explained Variance)」和主成分分析(PCA)
已解釋方差=總方差-殘差方差(explained variance = total variance - resial variance)。應該值得關注的 PCA 投射組件的數量可以通過已解釋方差度量(Explained Variance Measure)來引導。Sebastian Raschka 的關於 PCA 的文章對此進行了很好的描述,參閱:http://sebastianraschka.com/Articles/2015_pca_in_3_steps.html
# Calculating Eigenvectors and eigenvalues of Cov matirx
mean_vec = np.mean(X_std, axis= 0)cov_mat = np.cov(X_std.T)eig_vals, eig_vecs = np.linalg.eig(cov_mat)
# Create a list of (eigenvalue, eigenvector) tuples
eig_pairs = [ (np.abs(eig_vals[i]),eig_vecs[:,i]) fori inrange(len(eig_vals))]
# Sort from high to low
eig_pairs.sort(key = lambdax: x[ 0], reverse= True)
# Calculation of Explained Variance from the eigenvaluestot = sum(eig_vals)var_exp = [(i/tot)* 100fori insorted(eig_vals, reverse= True)] cum_var_exp = np.cumsum(var_exp)
# Cumulative explained variance# Variances plot
max_cols = len(stocks.columns) - 1plt.figure(figsize=( 10, 5))plt.bar(range(max_cols), var_exp, alpha= 0.3333, align= 'center', label= 'indivial explained variance', color = 'g')plt.step(range(max_cols), cum_var_exp, where= 'mid',label= 'cumulative explained variance')plt.ylabel( 'Explained variance ratio')plt.xlabel( 'Principal components')plt.legend(loc= 'best')plt.show()
輸出:
從這個圖表中我們可以看到大量方差都來自於預測主成分的前 85%。這是個很高的數字,所以讓我們從低端的開始,先只建模少數幾個主成分。更多有關分析主成分合理數量的信息可參閱:http://setosa.io/ev/principal-component-analysis
使用 scikit-learn 的 PCA 模塊,讓我們設 n_components = 9。代碼的第二行調用了 fit_transform 方法,其可以使用標准化的電影數據 X_std 來擬合 PCA 模型並在該數據集上應用降維(dimensionality rection)。
pca = PCA(n_components= 9)x_9d = pca.fit_transform(X_std)plt.figure(figsize = ( 9, 7))plt.scatter(x_9d[:, 0],x_9d[:, 1], c= 'goldenrod',alpha= 0.5)plt.ylim( -10, 30)plt.show()
輸出:
這里我們甚至沒有真正觀察到聚類的些微輪廓,所以我們很可能應該繼續調節 n_component 的值直到我們得到我們想要的結果。這就是數據科學與藝術(data science and art)中的「藝術」部分。
現在,我們來試試 K-均值,看看我們能不能在下一章節可視化任何明顯的聚類。
K-均值聚類(K-Means Clustering)
我們將使用 PCA 投射數據來實現一個簡單的 K-均值。使用 scikit-learn 的 KMeans() 調用和 fit_predict 方法,我們可以計算聚類中心並為第一和第三個 PCA 投射預測聚類索引(以便了解我們是否可以觀察到任何合適的聚類)。然後我們可以定義我們自己的配色方案並繪制散點圖,代碼如下所示:
# Set a 3 KMeans clustering
kmeans = KMeans(n_clusters= 3)
# Compute cluster centers and predict cluster indices
X_clustered = kmeans.fit_predict(x_9d) # Define our own color map
LABEL_COLOR_MAP = { 0: 'r', 1: 'g', 2: 'b'}label_color = [LABEL_COLOR_MAP[l] forl inX_clustered]
# Plot the scatter digram
plt.figure(figsize = ( 7, 7))plt.scatter(x_9d[:, 0],x_9d[:, 2], c= label_color, alpha= 0.5)plt.show()
輸出:
這個 K-均值散點圖看起來更有希望,好像我們簡單的聚類模型假設就是正確的一樣。我們可以通過這種顏色可視化方案觀察到 3 個可區分開的聚類。
當然,聚類和可視化數據集的方法還有很多,參考:https://goo.gl/kGy3ra使用 seaborn 方便的 pairplot 函數,我可以以成對的方式在數據框中自動繪制所有的特徵。我們可以一個對一個地 pairplot 前面 3 個投射並可視化:
# Create a temp dataframe from our PCA projection data "x_9d"
df = pd.DataFrame(x_9d)df = df[[ 0, 1, 2]]df[ 'X_cluster'] = X_clustered
# Call Seaborn's pairplot to visualize our KMeans clustering on the PCA projected data
sb.pairplot(df, hue= 'X_cluster', palette= 'Dark2', diag_kind= 'kde', size= 1.85)sb.plt.show()
輸出:
構建籃子聚類(Basket Clusters)
你應該自己決定如何微調你的聚類。這方面沒有什麼萬靈葯,具體的方法取決於你操作的環境。在這個案例中是由隱藏關系所定義的股票和金融市場。
一旦你的聚類使你滿意了,你就可以設置分數閾值來控制特定的股票是否有資格進入一個聚類,然後你可以為一個給定的聚類提取股票,將它們作為籃子進行交易或使用這些籃子作為信號。你可以使用這種方法做的事情很大程度就看你自己的創造力以及你在使用深度學習變體來進行優化的水平,從而基於聚類或數據點的概念優化每個聚類的回報,比如 short interest 或 short float(公開市場中的可用股份)。
你可以注意到了這些聚類被用作籃子交易的方式一些有趣特徵。有時候標准普爾和一般市場會存在差異。這可以提供本質上基於「信息套利(information arbitrage)」的套利機會。一些聚類則和谷歌搜索趨勢相關。
看到聚類和材料及它們的供應鏈相關確實很有意思,正如這篇文章說的一樣:https://www.fairphone.com/en/2017/05/04/zooming-in-10-materials-and-their-supply-chains/
我僅僅使用該數據集操作了 Cobalt(鈷)、Copper(銅)、Gallium(鎵)和 Graphene(石墨烯)這幾個列標簽,只是為了看我是否可能發現從事這一領域或受到這一領域的風險的上市公司之間是否有任何隱藏的聯系。這些籃子和標准普爾的回報進行了比較。
通過使用歷史價格數據(可直接在 Quantopian、Numerai、Quandl 或 Yahoo Finance 使用),然後你可以匯總價格數據來生成預計收益,其可使用 HighCharts 進行可視化:
我從該聚類中獲得的回報超過了標准普爾相當一部分,這意味著你每年的收益可以比標准普爾還多 10%(標准普爾近一年來的漲幅為 16%)。我還見過更加激進的方法可以凈掙超過 70%。現在我必須承認我還做了一些其它的事情,但因為我工作的本質,我必須將那些事情保持黑箱。但從我目前觀察到的情況來看,至少圍繞這種方法探索和包裝新的量化模型可以證明是非常值得的,而其唯一的缺點是它是一種不同類型的信號,你可以將其輸入其它系統的流程中。
生成賣空籃子聚類(short basket clusters)可能比生成買空籃子聚類(long basket clusters)更有利可圖。這種方法值得再寫一篇文章,最好是在下一個黑天鵝事件之前。
如果你使用機器學習,就可能在具有已知和隱藏關系的上市公司的寄生、共生和共情關系之上搶佔先機,這是很有趣而且可以盈利的。最後,一個人的盈利能力似乎完全關乎他在生成這些類別的數據時想出特徵標簽(即概念(concept))的強大組合的能力。
我在這類模型上的下一次迭代應該會包含一個用於自動生成特徵組合或獨特列表的單獨演算法。也許會基於近乎實時的事件,這可能會影響那些具有隻有配備了無監督學習演算法的人類才能預測的隱藏關系的股票組。
㈥ 數據分析師養成攻略
數據分析師養成攻略
可能大家都會疑惑,數據分析師具體是干什麼的?簡而言之,就是分析數據的。數據分析師的工作職責:是在具體問題下,分析數據從而了解現狀,後給出解決問題的相應對策。本人是數據分析小白一枚,對數據分析師這一崗位關注蠻多。因此想大膽地回答幾個常見問題:招聘大量數據分析工作人員的行業公司有哪些?數據分析工作主要分為哪幾類?以及如何學習數據分析?最後還要推薦一些學習資料給小伙們。
招聘大量數據分析工作人員的行業公司有哪些?
數據分析可以說是互聯網經濟下的產物。互聯網企業最需要數據分析人才。正所謂「巧婦難為無米之炊」,互聯網企業大量的數據是進行數據分析工作的基礎,工作薪酬也普遍較高。互聯網各類企業包括電商、金融、出行、O2O、新聞資訊,都需要數據分析人才。舉例子:電商有網易考拉海購、京東、淘寶;金融呢有51信用卡、微貸網;出行有滴滴打車、曹操專車;020有美團、餓了嗎;新聞資訊有今日頭條。
數據分析工作主要分為哪幾類?
數據挖掘工作到底是什麼?可以參考這兩個網站:第一個是阿里雲天池大賽,第二個是國外Kaggle數據挖掘大賽網頁。網路搜索關鍵詞可到達網頁。
想去到薪資較高的數據挖掘崗位,比如大型電商平台,BAT,滴滴等自學是不大可能的。因為數據挖掘挺難學的,而且自學很難被認可。需要去讀個計算機研究生或者數學系研究生。個人覺得計算機研究生更好。
那跟數據分析相關的工作,要求不那麼高的,同時薪資也相對低的,也有。
你如果有比較好的文案能力,可以尋找像房地產分析,股票證券分析之類的工作。這類工作的特點為有固定的分析模板,需要寫文案。
你如果不具備較好的文案能力,像服裝企業的商品專員,像銷售部門的銷售助理,像快遞行業的快遞分析這類的崗位,你可以留意一下,需要較好的EXCEL操作能力和平常的溝通能力和執行能力。
如何學習數據分析?
數據分析的學習,可以分為兩方面:一是所從事行業的商業知識,二是分析的技術手段。舉一個便利店例子,便利店店主知道天氣和每日客流量之間的相互作用關系,天氣好,客人會多,店內的熟食商品就應該多准備一點。這就是所從事行業的商業知識的范疇。而且店主還把每日的天氣、銷售量、客流量等記錄在冊,通過手工計算或腦內思考進行數據分析。後者就屬於數據分析的技術手段。明顯,店主的技術手段比較落後。