http://www.tuicool.com/articles/AFBVVzmjava
一.入門:高屋建瓴python
數據分析的坑很大,一開始走上這條路,就要明確基本的方向,依託於核心的思想,否則只會越走越偏,最後以爲山過高水太深,不了了之。程序員
1.數據與數據分析正則表達式
數據其實就是對事物特徵的定性指稱以及量化描述,好比一我的的身份證號,年齡,收入,身高等就構成了一組數據:{id:001,age:45,income:10000,height:176}——若是把不少人的這些數據匯成表,便構成了「 結構化 」(也就是比較規整一致)的「 數據空間 」。算法
可是呢,有一些或者大部分的數據都不是規整的,也就是分佈比較雜亂或者不是按照咱們想要的那樣分佈的(好比一個網頁中的文本數據分佈),稱之爲「 非結構化 」的數據空間 。數據庫
數據分析的本質是什麼?那就是——將這些結構化或者非結構化的數據, 映射 到指定格式的數據空間裏面,而後進行分析—— 數據分析的基礎就是數據空間的映射 。編程
這句話說的比較繞,可是卻很是深入,它告訴咱們,數據分析的一個基礎(在實踐中也是最重要)的一件事情就是尋找合適的數據空間映射方案——某種程度上就是所謂的 數據清洗 。python3.x
2.對於一些工具的見解api
沿襲上文,工具則能夠分爲兩種,一是基礎性的excel,spss,sas等數據分析軟件以及許多數據庫管理工具, 它們主要處理的是結構化的數據 ,也就是給你把數據弄成了表的規整數據(固然,這些數據不少時候也須要清洗,不過已經不涉及數據空間映射這個問題了);二是編程語言,包括python,R,Java,Ruby等, 這些語言工具主要是處理數據空間映射和清洗工做的 ,其中,比較經常使用的是python和R,前者因爲其可擴充性,已經在大多數狀況下優於後者了。網絡
3.學習:從天而降
所謂「從天而降」指的是從一個比較高的地方降低來學習的方法,比如是拿着一張整體的地圖去探索數據分析與挖掘的世界。推薦閱讀:《 數據科學實戰 》。
其次,請注意一點:python學習,對於 沒有任何計算機基礎 的人來講, 基本上是開頭容易、越日後面越難! (python一開始的相似天然語言的結構很友好,但你到了函數與面向對象的學習的時候,仍是必須明確引用變量的變化(也就是數據如何在內存中流動)以及做用域的動態變化等對入門者不友好的問題。)
在這種狀況下,《head first python》根本不適合,不要用它學習python!
個人建議是,花時間學習一下計算機的基本原理,而後是C語言,Java等,而後再學python,否則你到後面徹底是知其然而不知其因此然!
推薦閱讀:《 計算機科學概論(第11版 》
以及:《 瘋狂Java講義 》(這本書雖然講的是java,但對數據在內存中的流轉也有講,能夠做爲參考,理解程序的運行。)
最後纔是:《 Python基礎教程(第2版•修訂版) 》
而後能夠看看入門的統計學教材:《 深刻淺出統計學 》(很快就能看完,我當時半天多一點就看完了。)
以及入門與深刻理解數據庫原理:《 MySQL必知必會 》+《 數據庫系統概念 》
有了技術基礎了,再看看《 R語言編程藝術 》
另外,入門者不要選擇python3.x,選擇python2.7吧。爲啥?由於不少重要的模塊好比pandas還有網上的許多資料如今仍是最多支持到2.7的,你選3.X對於入門那是捨近求遠。
最後,可使用《 利用Python進行數據分析 》將全部知識串接起來,感覺pandas以及scipy,numpy中的數據計算 是如何體現數據空間映射這個深入概念的。
二.中階:理論
中階主要是理論學習以及一些比較複雜的應用操做。
1.理論基礎:書籍
良好的數學基礎是進一步學習的支撐條件。
如下是推薦閱讀的書目:
1.機率論與數理統計:《 機率論與數理統計 》,進一步學習機率與統計;
2.高等代數:《 高等代數簡明教程(上冊) 》,「數據空間的映射」的思想就來自於高等代數;
3.最優化:《 最優化理論與方法 》,參考書,中階不要細讀。
4.數據挖掘:《 數據挖掘導論 》,偏數學,《 數據挖掘 》,偏結構化的數據庫;
5.信息檢索領域入門:《 信息檢索導論 》
6.統計學習理論快速俯瞰:《 統計學習方法 》
7.實戰之於python:《 集體智慧編程 》+《 機器學習實戰 》
8.實戰之於Mahout平臺:《 Mahout實戰 》
2.實戰:利用數據庫與數據api,實戰學習
(1)淘寶上以及不少百度提供的一些 數據庫 : API Store_爲開發者提供最全面的API服務 等,均可如下載到數據進行處理,有一些經典的研究數據庫,主要是一些大學構建的,也能夠用來訓練模型;
(2).學習寫 網絡爬蟲 ,基於python,爬取文本數據進行分析,其中,文本數據分析可能涉及到中文的天然語言處理,比較麻煩,有一些模塊能夠直接使用(好比jieba),若是以爲不理想,能夠嘗試爬取英文頁面。另:寫爬蟲必須首先理解網頁的數據空間,建議閱讀:《 Head First HTML與CSS、XHTML(中文版) 》;
(3).苦練 清洗數據 的基本功——由於大多數數據工程師的主要工做都在於此,而且在清洗的過程當中,深入理解數據空間的映射。另,清洗數據必備技能:正則表達式。建議閱讀:《 正則表達式必知必會 》;
(4). 混合編程 與 數據可視化 :能夠嘗試以python爲主的混合編程(python+R)以及數據可視化,建議閱讀《 ggplot2 》
三.高階:迴歸、遠行、優化與萬法歸宗
1.迴歸
總的來講,數據挖掘、機器學習相關的工做,看着很新,其實只是好久以前的理論知識的應用罷了,在實戰領域,並無多少新的東西。
因此,從技術上講,咱們須要迴歸到那些最內核的東西。
什麼是最內核的東西,那就是: 算法與數據結構 。
知乎上有一些言論,說算法與數據結構通常狀況下程序員是用不到的,這句話對於通常的寫系統的程序員確實受用,可是對機器學習、數據挖掘的程序員,卻偏偏相反:咱們的主要工做就是在搞算法和數據結構。
好比貝葉斯網絡、人工神經網絡,本質上其實仍是基於圖的算法的應用罷了。
推薦一本書,比《算法導論》好讀:《 算法(第4版) 》
2.遠行
所謂遠行,就是從學習的象牙塔裏面走出來,走向實用或者特殊領域,好比: 金融量化分析 。
傳統的投資經理,作的專業投資,本質上根根結底是什麼?那就是兩個字: 分散 。
所謂分散,說大白話就是「把雞蛋放在多個籃子裏面」,但至於怎麼放,放多少,都是很是複雜的,傳統的手段包括創建 馬科維茲模型 與 指數模型 來做爲分散的參考模型。
機器學習也是能夠來作分散的,而且,知名的文藝復興技術公司作的「最大熵模型」比傳統的那兩大模型還要好,還可以持續跑贏大盤。
若是你對機器學習、數據挖掘相關理論有深入理解的話,你會發現一個事實: 分散本質上就是在尋找有限條件下的最大組合熵! 最大熵模型之因此有效就是由於它使用了超級大的數據量做爲基準,獲得了相對於傳統分散模型更高的熵。
這個要講不少,確實也比較高階,我就點到爲止,未來再細談。
3.優化
優化主要是對python執行效率的優化——要知道,不少時候,量化分析對時間的要求很是嚴格,差之毫釐,損失成百上千萬。
這個時候,就須要瞭解如何優化python。
知道嗎?python是用C寫出來的, 若是你優化的好,你的python可能比C還要快!
優化問題本質上是一個局部最優與全局最優權衡的問題,有空細講。
優化的另一個問題是 數值計算 ,包括矩陣的分塊計算、並行計算,MapReduce對大量數據的處理等,這也是比較複雜的,有空細講。
4.萬法歸宗:信息論
數據處理的的最高境界,實際上是對信息論的深入理解。