四年前我一次聽說資料探勘這個詞,三年前我學習了資料探勘理論知識,兩年前我做了幾個與資料探勘有關的專案,一年前我成為一名資料探勘工程師,今天我把資料探勘入門資料整理了一下,希望能夠對新人有幫助。
一、python
推薦粗讀《Head First Python》一書,該書淺顯易懂,有C語言基礎的人只需一天就能讀完,並能夠使用python進行簡單程式設計。“Head First”系列的數都很適合初學者,我還讀過《Head First 設計模式》和《Head First Statistics》,感覺都不錯。不過後兩本,我讀得比較細也比較慢,畢竟當時是首次接觸設計模式和統計學相關知識,書中很多東西對我而言都是全新的。而當我讀《Head First Python》時,我已經掌握了C、C++、java等多種程式語言,所以再看python就覺得比較簡單了。學任何一種程式語言,一定要動手練習。python的整合開發環境有很多,我個人比較青睞PyCharm。
用python做資料探勘的人一般都會用到pandas資料分析包。推薦閱讀《pandas: powerful Python data analysis toolkit》文件,其中《10 Minutes to pandas》這一節能讓你輕鬆上手pandas。讀了這一節你會知道怎麼用一句話得到資料的一些基本統計量(每一列特徵的均值、標準差、最大最小值、四分位點等),怎麼簡單地實現多條件的過濾,怎麼將兩張表按key連線,怎麼將資料視覺化。除了這篇文件,我還想推薦一本書《利用Python進行資料分析》,這本書和之前文件的主要內容差不多。可以書和文件交叉看,加深印象。與文件相比,書增加了資料應用等內容。與書相比,文件增加了與R、SQL對比等內容。即使是主題相同的章節,例如繪圖,文件和書將知識組織起來的方式以及側重點也有所不同。個人認為,文件和書都值得一看。
二、統計學
雖然我也粗讀過統計學的幾本書,但從易懂性來說,都沒有學校老師給的ppt好,或者說自己看書比較困難,但是聽老師講課就很容易懂。所以,我建議有條件的同學能夠選修統計學這門課,沒條件的同學可以去網上找一些相關影片,配套書籍可以選擇茆詩松的《機率論與數理統計》。另外,《Head First Statistics》一書可以用來預熱。
學了統計學,你至少應該知道基本的抽樣方法、偏差與方差的區別、怎樣進行資料預處理、怎樣整理和顯示資料、資料分佈的描述統計量有哪些、假設檢驗是用來做什麼的、置信區間的概念、R-squared的含義等等。你需要了解各種圖的作用和適用場景,常用圖包括條形圖、餅圖、直方圖、折線圖、箱線圖、散點圖、雷達圖等。你需要了解各種統計量的含義,常見統計量包括均值、方差、中位數、四分位數、加權平均數、偏態、峰態等。你需要了解一些重要的分佈,比如正態分佈、chi-square分佈、t分佈、F分佈等。
三、機器學習和資料探勘
機器學習資料首推吳恩達的《史丹佛大學公開課:機器學習課程》影片。這20集影片確實是好影片,但對初學者來說難度偏大。我有了一點機器學習方面的基礎後,再去看該影片,還花了2.5倍的時間才基本看懂。每當我跟不上影片時,就會暫停或者回退,再仔細看看課件,所以看完影片花掉的時間是影片原時長的2.5倍。另外,周志華的《機器學習》和李航的《統計學習方法》可以作為機器學習入門書籍,經典教材《Pattern Recognition and Machine Learning》可以作為機器學習進階書籍,而《機器學習實戰》一書能手把手地教你怎麼實現機器學習模型的底層演算法(書中包含了大量的程式清單)。
資料探勘方面,推薦Jiawei Han的《資料探勘概念與技術》。該書比較容易讀懂,內容廣泛且實用性強,特別適合初學者。
四、其他資料和建議
除了系統化的學習專業知識,我們也可以每天吸收一些碎片化的知識。例如,Quora上有不少關於機器學習和資料探勘的問答,其答案質量普遍高於知乎,有興趣的同學可以常去Quora的機器學習相關版塊逛逛。訂閱好東西傳送門的《機器學習日報》是一個不錯的選擇。每天從日報中挑選1~2篇文章讀讀,可以擴充套件自己的知識面,同時養成天天學習的好習慣。
從Quora和《機器學習日報》中獲取的一些知識點:
隨機森林模型不適合用稀疏特徵。
測試集必須使用與訓練集相同的方法進行預處理。
L1正則(特徵選擇)最小樣本數目m與特徵n呈log關係,m = O(log n) ;
L2正則(旋轉不變)最小樣本數目m與特徵n呈線性關係,m = O(n) 。
標準的PCA是一種線性轉換技術。
呈長尾分佈的特徵通常需要進行對數轉換。
線性SVM適合小樣本。
AUC適合作為類不平衡問題的衡量標準。
在nested k-foldcross validation中,“外層迴圈”的目的是模型評估,“內層迴圈”的目的是模型選擇。
在樣本數量較少的情況下,極大似然估計的效果比普通的最小二乘法差。
想幹資料探勘這一行,光有理論知識是不夠的,我們還需要積累實戰經驗。對於學生來講,可以跟著老師做專案,可以參加各種大資料競賽,也可以去公司實習。如果是參加競賽的話,一般比賽結束後,前幾名的演算法會公開。我們要特別關注一下他們的演算法創新點,說不定在下一個專案中就能用上。
阿里巴巴第一屆大資料競賽前9名團隊的演算法創新點整理:
第九:
缺失值填充。
考慮了行為轉移特徵(例如曾經購買過該品牌,近期再次發生點選但尚未購買;近期從購物車轉移到收藏夾)。
第八:
在LR模型中,用dummy coding的方法處理了所有的特徵。
第七:
模型融合做得不錯。分別用滑動視窗和固定視窗建模。再用LR進行一級模型融合,最後對第一級的預測結果進行平均融合。
第六:
對不同的使用者-品牌型別進行了分類,並採取了不同的處理方法。
第五:
對正例採取上取樣方式,負例採取下采樣方式。
先用一個欠擬合的random forest初始化gbrt的殘差,再用一個樹的棵樹不是很大的gbrt來訓練,從而能夠在相對短的時間內得到比用較大棵樹的gbrt還要高一些的效能。
第四:
對特徵進行Laplace平滑。
第三:
對資料進行歸一化、分箱和去噪。
第二:
去除離群點。
第一:
用LR濾去超過80%的樣本。
採用了神經網路演算法。