如何通過自學,成爲數據挖掘“高手”?

問題:
求教各位對數據挖掘有一定了解的達人,如何從“零”開始學習數據挖掘?需要掌握哪些基本的技能?(比如是不是一定要會用R進行簡單編程、掌握哪些基本的數學知識等)

喜歡數學,本科有最基本的數學基礎(數學分析、線代、概率論與統計、數論…),本身對數據挖掘很有興趣,如果掌握了,對現在的工作也會很有幫助,所以下決心來從頭學起。

誠摯感謝!

 
回答:
基礎篇:

1. 讀書《Introduction to Data Mining》,這本書很淺顯易懂,沒有複雜高深的公式,很合適入門的人。另外可以用這本書做參考《Data Mining : Concepts and Techniques》。第二本比較厚,也多了一些數據倉庫方面的知識。如果對算法比較喜歡,可以再閱讀《Introduction to Machine Learning》。

2. 實現經典算法。有幾個部分:
a. 關聯規則挖掘 (Apriori, FPTree, etc.)
b. 分類 (C4.5, KNN, Logistic Regression, SVM, etc.)
c. 聚類 (Kmeans, DBScan, Spectral Clustering, etc.)
d. 降維 (PCA, LDA, etc.)
e. 推薦系統 (基於內容的推薦,協同過濾,如矩陣分解等)
然後在公開數據集上測試,看實現的效果。可以在下面的網站找到大量的公開數據集:http://archive.ics.uci.edu/ml/

3. 熟悉幾個開源的工具: Weka (用於上手); LibSVM, scikit-learn, Shogun

4. 到 https://www.kaggle.com/ 上參加幾個101的比賽,學會如何將一個問題抽象成模型,並從原始數據中構建有效的特徵 (Feature Engineering). 

到這一步的話基本幾個國內的大公司都會給你面試的機會。

進階篇:

1. 讀書,下面幾部都是大部頭,但學完進步非常大。
a.《Pattern Recognition and Machine Learning》
b.《The Elements of Statistical Learning》
c.《Machine Learning: A Probabilistic Perspective》
第一本比較偏Bayesian;第二本比較偏Frequentist;第三本在兩者之間,但我覺得跟第一本差不多,不過加了不少新內容。當然除了這幾本大而全的,還有很多介紹不同領域的書,例如《Boosting Foundations and Algorithms》,《Probabilistic Graphical Models Principles and Techniques》;以及理論一些的《Foundations of Machine Learning》,《Optimization for Machine Learning》等等。這些書的課後習題也非常有用,做了纔會在自己寫Paper的時候推公式。

2. 讀論文。包括幾個相關會議:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM;以及幾個相關的期刊:TKDD,TKDE,JMLR,PAMI等。跟蹤新技術跟新的熱點問題。當然,如果做相關research,這一步是必須的。例如我們組的風格就是上半年讀Paper,暑假找問題,秋天做實驗,春節左右寫/投論文。

3. 跟蹤熱點問題。例如最近幾年的Recommendation System,Social Network,Behavior Targeting等等,很多公司的業務都會涉及這些方面。以及一些熱點技術,例如現在很火的Deep Learning。

4. 學習大規模並行計算的技術,例如MapReduce、MPI,GPU Computing。基本每個大公司都會用到這些技術,因爲現實的數據量非常大,基本都是在計算集羣上實現的。

5. 參加實際的數據挖掘的競賽,例如KDDCUP,或 https://www.kaggle.com/ 上面的競賽。這個過程會訓練你如何在一個短的時間內解決一個實際的問題,並熟悉整個數據挖掘項目的全過程。

6. 參與一個開源項目,如上面提到的Shogun或scikit-learn還有Apache的Mahout,或爲一些流行算法提供更加有效快速的實現,例如實現一個Map/Reduce平臺下的SVM。這也是鍛鍊Coding的能力。

到這一步國內的大公司基本是想哪去哪,而且待遇也不差;如果英語好,去US那邊的公司難度也不大了。



回答2:
一,可以先找一些數據挖掘方面優秀教材來看,把一些基礎且重要的東西理解清楚。R/matlab/SAS之類是都是一些工具,雖然學會使用工具挺重要,但關鍵還是工具後面的思想。關於自學,不知lz是否看過下面的帖子。其中,我挺贊同帖子中pongba的‘只看好書’的看法。
http://www.guokr.com/question/132920/?bsh_bid=98365272

二,個人覺得非常重要的一點,儘量參與一些真實的實踐項目,從實際項目/問題出發學得更快,也學得更好!數據挖掘是個很寬泛的概念,涉及面很廣,不同應用領域的數據挖掘也不一樣。從一些項目作爲切入點,你可以瞭解到哪些知識是最欠缺的,哪些最需要學的,然後再逐漸擴充相關的知識。

三,估計學什麼都差不多,需要不斷堅持和積累吧。


 

回答3:
首先是要弄明白你想挖點什麼出來?如果你說不知道,抱歉,你可能還是在追科研的路。

實際的項目中:
首先就是要明確你希望挖的東西能產生什麼業務價值,而非用什麼挖掘算法,那是手段,可以在後面再關注;要能夠具體描繪你的挖掘目標、價值,以及挖掘成果的預期展現形式,說服力如何,等等;
其次,和相關的小夥伴討論,爲了挖出你想要的成果,需要利用到哪些數據?這些數據中,哪些是已經有的,哪些還得想辦法去收集?其中是否有些數據根本是不可能收集到的?這些收集不到的數據對於你想挖的成果會有什麼影響?如果是致命影響,直接導致你的挖掘成果缺乏說服力,那就此歇菜,另找其他方向吧。反之,則安排計劃和資源,把能收集到的數據儘快收集起來;
再次,根據收集到的數據的特點和收集過程的質量情況,清洗收集到的數據;
根據挖掘目標的情況和收集到的數據的特點,制定挖掘規劃,選擇合適的挖掘算法;
然後,就開始挖吧;
第一輪挖完,看看成果如何?有道理嗎?有說服力嗎?大多數情況,你會發現,哦,暈,忘了應該把這幾個因素考慮進去了,還應該加進去這幾方面的數據才能看出來。好,繼續轉向第2步,繼續收集數據、清洗、調算法/參數,挖出來後再評估,一般情況得這麼循環N個回合;
馬馬虎虎出來個差不多靠譜、勉強能自圓其說的初胚,這個成果看上去像那麼回事兒了。
總結一個說法(分析成果)出來,爲了你的說法,把數據再針對性地洗上幾遍,給出一個更加乾淨的分析成果,這個版本基本上有說服力了。
講究一點的,再畫個信息圖什麼的,圖文並茂,就可以初步交作業了;
在真實的項目中,還有一步,就是選取重要的評估視角和指標,根據具體的業務特點,把你的分析過程做成每週/每日/每小時都能給個角度固定的分析報告的服務。
再往前一步,如果你對這塊業務真的很熟的話,還可以針對不同類型的分析結果,能給出相應的建議應對措施(Action),這樣這此挖掘的業務價值就真正明確了。你做的活兒也沒有停留在“活兒”這個份兒上,而是決策支持這個級別上了。



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章