如何系統地學習數據挖掘?
雖然是本科畢業,但是在看數據挖掘方面的演算法理論時經常感覺一些公式的推導過程如天書一般,例如看svm的數學證明,EM演算法..,感覺知識跳躍比較大, 是我微積分學的不好還是中間有什麼好的教材補充一下,數據挖掘系統的學習過程是怎麼樣的,應該看那些書(中文最好)?
數據挖掘:What?Why?How?
這個問題思考了很久,作為過來人談一談,建議先看下以前的一些回答。
- 什麼是數據挖掘?
- 怎麼培養數據分析的能力?
- 如何成為一名數據科學家?
磨刀不誤砍柴工。在學習數據挖掘之前應該明白幾點:
- 數據挖掘目前在中國的尚未流行開,猶如屠龍之技。
- 數據初期的準備通常占整個數據挖掘項目工作量的70%左右。
- 數據挖掘本身融合了統計學、資料庫和機器學習等學科,並不是新的技術。
- 數據挖掘技術更適合業務人員學習(相比技術人員學習業務來的更高效)
- 數據挖掘適用於傳統的BI(報表、OLAP等)無法支持的領域。
- 數據挖掘項目通常需要重複一些毫無技術含量的工作。
如果你閱讀了以上內容覺得可以接受,那麼繼續往下看。
學習一門技術要和行業靠攏,沒有行業背景的技術如空中樓閣。技術尤其是計算機領域的技術發展是寬泛且快速更替的(十年前做網頁設計都能成立公司),一般人沒有這個精力和時間全方位的掌握所有技術細節。但是技術在結合行業之後就能夠獨當一面了,一方面有利於抓住用戶痛點和剛性需求,另一方面能夠累計行業經驗,使用互聯網思維跨界讓你更容易取得成功。不要在學習技術時想要面面俱到,這樣會失去你的核心競爭力。
一、目前國內的數據挖掘人員工作領域大致可分為三類。- 1)數據分析師:在擁有行業數據的電商、金融、電信、諮詢等行業里做業務諮詢,商務智能,出分析報告。
- 2)數據挖掘工程師:在多媒體、電商、搜索、社交等大數據相關行業里做機器學習演算法實現和分析。
- 3)科學研究方向:在高校、科研單位、企業研究院等高大上科研機構研究新演算法效率改進及未來應用。
二、說說各工作領域需要掌握的技能。
(1).數據分析師
- 需要有深厚的數理統計基礎,但是對程序開發能力不做要求。
- 需要熟練使用主流的數據挖掘(或統計分析)工具如Business Analytics and Business Intelligence Software(SAS)、SPSS、EXCEL等。
- 需要對與所在行業有關的一切核心數據有深入的理解,以及一定的數據敏感性培養。
- 經典圖書推薦:《概率論與數理統計》、《統計學》推薦David Freedman版、《業務建模與數據挖掘》、《數據挖掘導論》、《SAS編程與數據挖掘商業案例》、《Clementine數據挖掘方法及應用 》、《Excel 2007 VBA參考大全》、《IBM SPSS Statistics 19 Statistical Procedures Companion》等。
(2).數據挖掘工程師
- 需要理解主流機器學習演算法的原理和應用。
- 需要熟悉至少一門編程語言如(Python、C、C++、Java、Delphi等)。
- 需要理解資料庫原理,能夠熟練操作至少一種資料庫(Mysql、SQL、DB2、Oracle等),能夠明白MapReduce的原理操作以及熟練使用Hadoop系列工具更好。
- 經典圖書推薦:《數據挖掘概念與技術》、《機器學習實戰》、《人工智慧及其應用》、《資料庫系統概論》、《演算法導論》、《Web數據挖掘》、《 Python標準庫》、《thinking in Java》、《Thinking in C++》、《數據結構》等。
(3).科學研究方向
- 需要深入學習數據挖掘的理論基礎,包括關聯規則挖掘 (Apriori和FPTree)、分類演算法(C4.5、KNN、Logistic Regression、SVM等) 、聚類演算法 (Kmeans、Spectral Clustering)。目標可以先吃透數據挖掘10大演算法各自的使用情況和優缺點。
- 相對SAS、SPSS來說R語言更適合科研人員The R Project for Statistical Computing,因為R軟體是完全免費的,而且開放的社區環境提供多種附加工具包支持,更適合進行統計計算分析研究。雖然目前在國內流行度不高,但是強烈推薦。
- 可以嘗試改進一些主流演算法使其更加快速高效,例如實現Hadoop平台下的SVM雲演算法調用平台--web 工程調用hadoop集群。
- 需要廣而深的閱讀世界著名會議論文跟蹤熱點技術。如KDD,ICML,IJCAI,Association for the Advancement of Artificial Intelligence,ICDM 等等;還有數據挖掘相關領域期刊:ACM Transactions on Knowledge Discovery from Data,IEEE Transactions on Knowledge and Data Engineering,Journal of Machine Learning Research Homepage,IEEE Xplore: Pattern Analysis and Machine Intelligence, IEEE Transactions on等。
- 可以嘗試參加數據挖掘比賽培養全方面解決實際問題的能力。如Sig KDD ,Kaggle: Go from Big Data to Big Analytics等。
- 可以嘗試為一些開源項目貢獻自己的代碼,比如Apache Mahout: Scalable machine learning and data mining ,myrrix等(具體可以在SourceForge或GitHub.上發現更多好玩的項目)。
- 經典圖書推薦:《機器學習》 《模式分類》《統計學習理論的本質》《統計學習方法》《數據挖掘實用機器學習技術》《R語言實踐》,英文素質是科研人才必備的《Machine Learning: A Probabilistic Perspective》《Scaling up Machine Learning : Parallel and Distributed Approaches》《Data Mining Using SAS Enterprise Miner : A Case Study Approach》《Python for Data Analysis》等。
三、以下是通信行業數據挖掘工程師的工作感受。
真正從數據挖掘項目實踐的角度講,溝通能力對挖掘的興趣愛好是最重要的,有了愛好才可以願意鑽研,有了不錯的溝通能力,才可以正確理解業務問題,才能正確把業務問題轉化成挖掘問題,才可以在相關不同專業人才之間清楚表達你的意圖和想法,取得他們的理解和支持。所以我認為溝通能力和興趣愛好是個人的數據挖掘的核心競爭力,是很難學到的;而其他的相關專業知識誰都可以學,算不上個人發展的核心競爭力。
說到這裡可能很多數據倉庫專家、程序員、統計師等等都要扔磚頭了,對不起,我沒有別的意思,你們的專業對於數據挖掘都很重要,大家本來就是一個整體的,但是作為單獨一個個體的人來說,精力有限,時間有限,不可能這些領域都能掌握,在這種情況下,選擇最重要的核心,我想應該是數據挖掘技能和相關業務能力吧(從另外的一個極端的例子,我們可以看, 比如一個迷你型的挖掘項目,一個懂得市場營銷和數據挖掘技能的人應該可以勝任。這其中他雖然不懂數據倉庫,但是簡單的Excel就足以勝任高打6萬個樣本的數據處理;他雖然不懂專業的展示展現技能,但是只要他自己看的懂就行了,這就無需什麼展示展現;前面說過,統計技能是應該掌握的,這對一個人的迷你項目很重要;他雖然不懂編程,但是專業挖掘工具和挖掘技能足夠讓他操練的;這樣在迷你項目中,一個懂得挖掘技能和市場營銷業務能力的人就可以圓滿完成了,甚至在一個數據源中根據業務需求可以無窮無盡的挖掘不同的項目思路,試問就是這個迷你項目,單純的一個數據倉庫專家、單純的一個程序員、單純的一個展示展現技師、甚至單純的一個挖掘技術專家,都是無法勝任的)。這從另一個方面也說明了為什麼溝通能力的重要,這些個完全不同的專業領域,想要有效有機地整合在一起進行數據挖掘項目實踐,你說沒有好的溝通能力行嗎?
數據挖掘能力只能在項目實踐的熔爐中提升、升華,所以跟著項目學挖掘是最有效的捷徑。國外學習挖掘的人都是一開始跟著老闆做項目,剛開始不懂不要緊,越不懂越知道應該學什麼,才能學得越快越有效果。我不知道國內的數據挖掘學生是怎樣學的,但是從網上的一些論壇看,很多都是紙上談兵,這樣很浪費時間,很沒有效率。
另外現在國內關於數據挖掘的概念都很混亂,很多BI只是局限在報表的展示和簡單的統計分析,卻也號稱是數據挖掘;另一方面,國內真正規模化實施數據挖掘的行業是屈指可數(銀行、保險公司、移動通訊),其他行業的應用就只能算是小規模的,比如很多大學都有些相關的挖掘課題、挖掘項目,但都比較分散,而且都是處於摸索階段,但是我相信數據挖掘在中國一定是好的前景,因為這是歷史發展的必然。
講到移動方面的實踐案例,如果你是來自移動的話,你一定知道國內有家叫華院分析的公司(申明,我跟這家公司沒有任何關係,我只是站在數據挖掘者的角度分析過中國大多數的號稱數據挖掘服務公司,覺得華院還不錯,比很多徒有虛名的大公司來得更實際),他們的業務現在已經覆蓋了絕大多數中國省級移動公司的分析挖掘項目,你上網搜索一下應該可以找到一些詳細的資料吧。我對華院分析印象最深的一點就是2002年這個公司白手起家,自己不懂不要緊,一邊自學一邊開始拓展客戶,到現在在中國的移動通訊市場全面開花,的確佩服佩服呀。他們最開始都是用EXCEL處理數據,用肉眼比較選擇比較不同的模型,你可以想像這其中的艱難吧。
至於移動通訊的具體的數據挖掘的應用,那太多了,比如不同話費套餐的制訂、客戶流失模型、不同服務交叉銷售模型、不同客戶對優惠的彈性分析、客戶群體細分模型、不同客戶生命周期模型、渠道選擇模型、惡意欺詐預警模型,太多了,記住,從客戶的需求出發,從實踐中的問題出發,移動中可以發現太多的挖掘項目。最後告訴你一個秘密,當你數據挖掘能力提升到一定程度時,你會發現無論什麼行業,其實數據挖掘的應用有大部分是重合的相似的,這樣你會覺得更輕鬆。
四、成為一名數據科學家需要掌握的技能圖。(原文:Data Science: How do I become a data scientist?)
人一能之,己十之;人十能之,己千之。果能此道矣,雖愚,必明;雖柔,必強。
與君共勉。
以上,祝各位挖掘到自己的快樂和金礦:)
-----------2017年1月更新-----
歡迎關注我存儲知識的地方:預見未來——Han Hsiao的知乎專欄Foresee謝邀。
你的情況很正常,本科畢業的學生並不能完全看懂大部分演算法的證明。本科學的概率論或者是統計學都是基礎,而且我不得不說,這個基礎很不牢固,我個人當初就是花了很多時間補那些當初本科課程裡面沒有講但是後面研究很重要的「基礎」知識。這麼說吧,凡事當初概率論老師課上不講的,後面研究都是有用的。因為本科的教育目的不是讓所有人都讀博士,所以老師對講義內容的選取也是可以理解的,這個就需要你自己研究了。我之前回答過相關的問題,你可以去我的回答看。不過我覺得我之前的回答比較寬泛,並不一定能夠完全回答你的問題。對於知識跳躍比較大的問題,沒有好辦法,你什麼不會,就去看哪塊。說起來很簡單,其實挺耗費時間的,但是一旦踏實地學了進去,你的收穫一定是大大的。另外一種可以稍微省力一些的方法是去搜索,現在有很多機器學習研究者會寫一些淺顯入門的內容,關於SVM的就有很多,你只要在Google裡面搜一下,我想一定會找到很多圖文並茂,深入淺出的內容的。
對於最後的括弧內容(中文最好),我勸你放棄這個想法。雖然說現在教材出版已經很快了,但是教材這個東西都不是最新的內容,甚至是英文教材。教材都是把經典的方法講出來,當作既成事實,而一本出名的英文教材翻譯成中文,再出版發行,這裡面的時間間隔是按年為單位計算的。另外,很遺憾的說,本土出版的、質量優秀、被業界公認的、原創數據挖掘教程還沒有(till 2013年1月30日,說不定將來會有呢)。所以,放棄這個念頭吧。
下面推薦一些資源供你參考。
- 公開課。個人認為最好的系統學習機器學習和數據挖掘的方法是去參加公開課的學習。強烈推薦的是Andrew Ng的 Machine Learning課程,再coursera上有的,據說搜狐公開課也翻譯了,不過沒去搜狐看過,不知道翻譯質量如何。除了Coursera之外,還有很多國外優秀大學的公開課平台供你選擇。
- 國外大學關於機器學習和數據挖掘課程的主頁。比如Andrew Ng在coursera上Machine Learning的前身就是Stanford CS229。美國歐洲的知名大學都有機器學習課程,課程主頁上都有詳細的syllabus,還有非常多非常棒的資源提供。而且國外的課程內容都是會每年更新的,所以跟這種課程也能學到很多東西。具體有哪些,你可以自己搜一下,on the top of my head,CMU Andrew Moore的課程很老很經典,Eric Xing的課程很新很棒!Jerry Zhu的CS 731 Advanced Artificial Intelligence,還有 Stanford CS369M Algorithms for Massive Data Set Analysis。
- 龍星計劃。這個好像知乎上提的很少,大多數研究者也不太清楚。摘抄一下:龍星計劃----計算機科學技術學術交流系列活動是一個傑出的海外華人教授回國系統講授研究生課程的計劃。由中國科學院資助,龍星計劃委員會負責,
設在中國科學院計算技術研究所的龍星計劃辦公室提供日常服務。個人極力推崇的是2010年Eric Xing教授和Feifei Li教授在上海那期的機器學習課程,兩位老師都非常負責任,內容極為翔實。聽說2012年的內容也不錯,網上也有視頻,你可以找來聽聽。
哦,上面的內容都不是看書,具體看什麼書,我之前也寫過,你自己看一下我的回答吧。我不想每個回答裡面都貼自己之前回答的鏈接。
-------------------------------------------------------------------------------------
如果你覺得我的答案對你有幫助,可以考慮向我付費:
http://w.url.cn/s/AAVHe65 (二維碼自動識別)
以下主要是書單以及視頻的推薦
本人是即將畢業的計算機專業本科生,從大二開始學習數據挖掘,到目前算是初窺門徑,由於身邊很多同學考上研究生並決定選擇機器學習/深度學習等相關方向,向我詢問如何學習機器學習,特地來寫此答案,本人並非老司機,兩年多的學習也只是使自己初窺門徑,希望自己的經驗能夠幫助新手少走彎路。
————————————————
數學基礎:
大部分的人說,學機器學習,只要掌握大學三門課(數學分析、線性代數、概率論與數理統計),但這很不客觀,有很多數學知識是這三門課中沒有講到的,這就會成為學習的瓶頸。想深入學習機器學習的人,很有必要學習以下數學課程:
1.《矩陣分析》:機器學習很多演算法需要使用計算機來計算,就需要轉換成計算機所接受的格式,而且很多矩陣相關的內容在線性代數中並沒有涉及,所以學習《矩陣分析》是很有必要的。
書籍:推薦 Horn的《矩陣分析》
2.《統計學》:大學期間開的概率統計的主要部分在於概率,而統計部分則是淺嘗即止,就算包含了大數定律、抽樣分布還是參數估計,也只涉及了很淺顯的一部分(是以考研數學一的標準來衡量,而並非是課本,因為答主考的就是數學一,雖然浙大那本書里甚至包含了Markov Chain,但內容真的看不下去)。這些統計知識可以說是機器學習演算法的基礎組成,而且在實際項目中,掌握很多統計學方法會如虎添翼。
書籍:推薦 門登霍爾的《統計學》
(以上兩門課程,可以在學習機器學習演算法的同時進行學習,畢竟的確很多機器學習演算法只需要大學數學的水平就夠了,但學習這兩門課是很必要的)
3.《最優化》
optimization是大部分機器學習演算法都會遇到的問題,因為很多機器學習演算法都會被變成目標函數,最優化就是用來對目標函數參數求解的工具。
推薦:鼎鼎大名的《凸優化》
此書算是一本大部頭,但並不難,本人當初只有大學工科數學基礎就能比較流暢地通讀一遍。
以及一位朋友在評論中推薦的 《最優化導論》(答主未讀過,暫不評價)
————————————————
入門書單與視頻:
《數據挖掘導論》
學習數據挖掘,要先了解其到底是什麼,這本書作為入門書非常好。這本書以實際應用為主,對演算法的分析只觸及到一點點,通過這本書說明的主要是演算法的運行過程和意義,而非演算法本身的數學推理。這本書上的內容,高中生都能讀懂,但答主讀了不只三遍,而且在不同的階段階段,讀這本書都有很大的體悟和收穫。
李航老師的《統計學習方法》、周志華老師的《機器學習》(西瓜書)、Mitchell的《機器學習》
這三本書都是機器學習入門的經典書籍,之所以同時推薦三本,不是為了從這三本書中選一個,而是全部買下來對照著看:《統計學習方法》對公式的推理相對詳細;周志華的書內容更加廣泛,但推理不太詳細;Mitchell的書重在演算法的思路,對公式的推理很淺顯,但易懂。建議學習的時候以李航老師的書為基礎,對周志華老師的書進行系統的學習。
視頻:台大的《機器學習基石》與《機器學習技法》
一直以來,很多人推薦的入門視頻都是Andrew NG的課程,但本人更加傾向於台大這兩門課,這兩門課從最基礎的理論到各種典型的機器學習演算法都包括,非常注重公式的推導,相比NG的課難度更高,但收穫也更多。當完整的學習完整個課程,將會對機器學習的知識體系有很好的理解。
————————————————
實戰:
《集體智慧編程》
此書無公式推導,只告訴我們哪個演算法能做什麼,需要做什麼。雖然淺顯,但真正的涉及到了數據挖掘存在的意義:數據挖掘真正的目的就是對數據進行分析挖掘,得到有用的信息。數據挖掘最基礎的當然是數學和統計學,但如果只會對數學公式進行推導確不知道如何使用這些數學公式,那應該是一個假的數據科學家。答主大一時學習的是Java,當時主要搞的是JavaEE開發,也很喜歡數據結構以及ACM,自然對於編程算是比較擅長的,答主是以一個程序員的身份開始學習的數據挖掘,所以對這本以Coding來對數據挖掘進行介紹的書很有好感。
《機器學習實戰》[選修]
這本書是真正的造輪子,將各種機器學習演算法真正的用python實現了一邊,雖然對於數值分析等方面考慮的並不周祥,但已經算是一本造輪子的書。學習了機器學習演算法後,造著這本書實現一遍,是一件很有成就感的事情,但這本書並非必讀,答主也只是實現了其中幾個演算法而已,因為這本書的很多演算法寫的並不是很好,而想對這本書的程序進行改善,通常會走彎路,所以行有餘力,則讀此書
《利用Python進行數據分析》
這本書介紹了最主要的python數據處理工具:numpy,pandas,matplotlib等,當通讀完一遍之後,這本書就可以被當成工具書,偶爾查一查。
《機器學習系統設計》
python平台上最火機器學習庫肯定是scikit-learn,在答主還沒有準備考研的時候,這本書還沒出,當時答主將主要目標放在了演算法的學習上,雖然對scikit-learn傾慕已久,但苦於沒有中文版的書籍又懶得讀英文版(當時中二的認為自己編程很吊,等出了中文版隨便看看就學會了,沒有必要浪費腦細胞去讀英文版),所以一直到考研結束後繼續學習機器學習之路,發現這本書後,欣喜若狂,很快就將這本書買下並拜讀。
————————————————
中級:
在這一階段,基礎的機器學習演算法已經不是問題,較為深入的部分也分出了方向,答主目前在學習深度學習,但一直沒有放棄深入學習機器學習的目標
機器學習:《pattern recognition and machine learning》
這本書已經有很多人介紹過了,這本書雖然是大部頭,但作者寫的行雲流水,把貝葉斯玩的很6,思路非常清晰,而且全。每當我在推導演算法的時候遇到障礙,都會從這本書中找答案,幸運的是這本書通常都會給我答案。比如前幾天學習Boltzmann機的時候對MCMC和Gibbs演算法的理解不太好,有寫疑惑,我回頭翻了這本書的中文版(馬春鵬學長翻譯的版本,我自己印成了書),讀了書中第11章,又在網路上找了相關的知識,就完全理解了。
深度學習:Yoshua Bengio的《深度學習》
這本書就不介紹了,因為答主也正在讀這本書,而且對深度學習連入門都不算,只是有一點神經網路基礎。網路上很多人推薦這本書,目前答主正在讀此書第二部分,受益匪淺。
深度學習:Nielsem的《Neural Networks and Deep Learning》
這本書簡短精悍,從BP演算法和介紹到了CNN,算是深度學習很好的入門書籍。
機器學習視頻:徐亦達的機器學習視頻
youtube地址:https://www.youtube.com/channel/UConITmGn5PFr0hxTI2tWD4Q/playlists
他的視頻是之前在複習EM演算法的時候發現自己的理解不太深,在youtube上查相關的講解,發現到的。他上傳的視頻只有四個系列,主要在於公式的推導,講解深入淺出,個人認為是非常優秀的機器學習教程。
(還有很多優秀的書籍沒有推薦,比如《ESL》《MLAPP》等等,為什麼沒有推薦,不是書不好,而是答主精力及能力有限,還未拜讀到,如果日後讀到了,會給補上。)
————————————————
高級:
本人目前還只是一個準研究生,對機器學習只算略知一二,由於是計算機專業並沒有數學和統計學背景,本人也正在苦逼的學習數學專業課程和統計學專業課程,感覺寫到中級已經很自以為是了,如果本人有朝一日真正有資格寫高級部分的時候,定會來此補上。
————————————————
你選的入門書太難。
推薦http://www-users.cs.umn.edu/~kumar/dmbook/index.php
謝邀。以上說的都很全面了,大家可以參考著看,提點個人看法。我就不TMD一坨一坨的寫了
1,教材還是很重要的。寫進教科書的都是非常基礎、非常經典、非常有用的演算法,你在paper上看到非常牛的演算法,可能在現實工程里渣的一逼;教科書裡面講的東西,是作為基礎中的基礎,是繼續閱讀和研究的前提。
熟悉了經典演算法之後,你會發現,很多(not all)paper里的東西,哎呀媽呀,全TMD灌水炒冷飯。
2,數據挖掘,大數據,這些詞還是相當寬泛的。不同的目標,需要掌握不同的知識。
歸納起來說,其實就四種:數據採集,數據挖掘,數據計算,數據存儲。
數據採集:就是抓數據了,主要是寫爬蟲。
數據挖掘:涉及機器學習、推薦系統等等,從數據里挖出有用的信息。
數據計算:計算框架和平台,比如Hadoop,spark,vw等
數據存儲:mysql、oracle、oceanbase以及nosql,以及分散式存儲等。
我覺得我這個分類是獨創的,是全面的,是有見識的。
我曾經回本科母校做了一個talk,對以上四類做了一定的介紹。可以參看:
http://www.yebangyu.org/talkV201505.pdf
看到大家的回答也是忍不住要插一腳。
給大家分享一篇還湊合的文章吧。
小編根據自己的學習經驗,並同多位過來人交流,整理了以下的書單、視頻學習資源,希望能對各位有所幫助。
書單
推薦理由:這本書著重於數學推導,能讓我們深入地了解數據挖掘領域的一些演算法,為啃經典名著打下基礎。
購買地址:http://item.jd.com/10975302.html
推薦理由:這本《模式分類》是很多高校的數據挖掘導論課程的教科書,重在理論的學習。如果不通讀這本書,你會發現在研究很多問題的時候,甚至一些相對簡單的問題(比如貝葉斯在高斯假設下為什麼退化成線性分類器)你都要重新複習。
購買地址:http://item.jd.com/10057422.html
推薦理由:本書講述了數據挖掘裡面的很多實用的演算法,而且從實際的例子入手,輔以python的代碼,讓你很快的就能理解到這種演算法能夠應用在哪個實際問題上,並且還能自己上手寫寫代碼。
但是缺點是不夠深入,數學推導較少,而且不夠全面,內容不夠詳實。
購買地址:http://item.jd.com/1505666918.html
推薦理由:相
對上一本書要稍微難一點,但是也不難理解,本書作者就是著名的Weka的編寫者。整本書的思想脈絡也是儘可能的由易到難,從簡單的模型入手擴展到現實生活
中實際的演算法問題,最難能可貴的是書的最後還稍微講了下如何使用weka,這樣大家就能在學習演算法之餘能夠用weka做做小實驗,有更加直觀的認識。
購買地址:http://item.jd.com/11458406.html
推薦理由:這本書可以看作是對於十多年前的機器學習的一個綜述,作者簡單明了的講述了很多流行的演算法,並且對於各個演算法的適用點和特點都有詳細的解說,輕快地在一本薄薄的小書里給了大家一個機器學習之旅。
購買地址:https://www.amazon.cn/
推薦理由:本書把演算法按照它們實現的功能和目的,分成比如回歸、分類、聚類等等,然後講可以實現聚類的演算法有哪些,可以實現回歸的有哪些,這種方式對於構建一個大概的機器學習體系還是有好處的,但是深度不夠。
購買地址:http://item.jd.com/10380545.html
視頻學習資源
在看書的過程中,可能還有很多地方不是很清楚,這時候如果有視頻教程的輔助,那肯定是事半功倍的,學習過程中也不容易分心。
課程名稱:Machine Learning作者:Andrew Ng(吳恩達)
視頻網址:http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning
中文網址:http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B
【已經有中英雙語字幕,在公眾號iCloudUnion後台回復「機器學習」可獲取視頻資源】 這是一份很完整的課程,可以先進性系統性地學習,之後再針對性地去看一些公開課,斯坦福大學、麻省理工學院等都有很多免費的高質量的公開課。
但是我也給大家一個不成熟的小建議,一定要先建立好自己的學習系統,有了整體的知識體系以後再去針對性地學習,切記不可東一榔頭西一棒槌地找一些很高大上的資料,那樣到最後學習效果反而不佳。 Coursera上也有吳恩達的課程,但是播放效果並不是很理想,有時候視頻略卡。網址:https://www.coursera.org/learn/machine-learning/lecture/RKFpn/welcome 對於吳恩達的課程,知乎上有專欄分享了聽課筆記,大家也可以參考一下。網址:https://zhuanlan.zhihu.com/mlearn
網站
CSDN:了解行業最新資訊和進展,並有眾多的優秀博客可學習,也可在論壇里與高手交流。網址:http://www.csdn.net/?ref=toolbar專欄:Augusdi的專欄網址:http://blog.csdn.net/augusdi/article/details/20238157
知乎:知乎上有很多關於數據挖掘和機器學習方面的討論,閑暇之餘可以瀏覽一下,也可以在回答問題中檢驗自己的學習深度。
之所以不想跟大家推薦太多,是因為逛網站論壇什麼的並不能構成學習的主體通道,只是給大家提供一些了解他人思想的渠道而已。
代表人物
更多更詳細的人物介紹可關注公眾號iCloudUnion,在大數據精英欄目查看。
http://weixin.qq.com/r/pTleRp7EJcNardol92y3 (二維碼自動識別)
寫在最後
想要在這個領域有所建樹,代碼是要寫好的、工具是要用熟的、數學基礎是必須的、論文是一定要看的……
相關會議:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM等。
相關期刊:TKDD,TKDE,JMLR,PAMI等。
以上資源親測實用,請大膽獲取。
文章摘自公眾號iCloudUnion,若有侵權,我刪除即可。
隨著互聯網技術的不斷成長,數據上雲已經成為絕對的趨勢,利用雲端挖掘、分析數據,將為企業節省研發與基礎設施的大量成本,今後數據工程師只要學會如何處理雲端數據,懂得操作步驟就可以輕鬆完成每天TB級別的數據處理,比如墨跡天氣的這個案例,歡迎參考研究。【大數據乾貨】輕鬆處理每天2TB的日誌數據,支撐運營團隊進行大數據分析挖掘,隨時洞察用戶個性化需求。-博客-雲棲社區-阿里雲
作為過來人,說一點我的建議
1. 首先看吳恩達老師在course上的機器學習課程,這是入門的最經典資料,沒有之一。建議上面的課程作業自己獨立完成,收穫會非常大。這是我自己做的課程作業,供有需要的同學參考。
2. 李航老師的統計學習方法,或者周志華老師的機器學習,兩者學一本就行了。裡面的數學推導要看懂。如果有不懂的也可以多看看網上大牛寫的博客。這是我自己在學習過程中記錄的博客,供大家參考。
3. 用自己熟悉的語言去實現基本的機器學習方法,一定要自己實現。這一步是為了加深對演算法的理解。
如果能夠認真走後以上三步,去大廠找個實習應該沒問題。如果能夠實習的話,還是去實習。如果不能實習的話,就去參加比賽吧,天池,kaggle……
4. 找一個自己感興趣的方向,比如推薦系統,深入下去。可以看看最新的論文。
5. 如果有剩餘精力,了解一下hadoop,spark等大數據工具。
如果能夠認真走好以上步驟,校招就可以無所畏懼了
Introduction to Statistical learning with Applications in R
Elements of Statistical Learning: data mining, inference, and prediction.
2nd Edition.
深入淺出:怎麼從0開始學習大數據挖掘分析,才能成為合格的數據挖掘分析師及數據科學家
最近有很多人諮詢,想學習大數據,但不知道怎麼入手,從哪裡開始學習,需要學習哪些東西?對於一個初學者,學習大數據挖掘分析的思路邏輯是什麼?本文就梳理了如何從0開始學習大數據挖掘分析,學習的步驟思路,可以給大家一個學習的建議。
很多人認為數據挖掘需要掌握複雜高深的演算法,需要掌握技術開發,才能把數據挖掘分析做好,實際上並非這樣。如果鑽入複雜演算法和技術開發,只能讓你走火入魔,越走越費勁,並且效果不大。在公司實際工作中,最好的大數據挖掘工程師一定是最熟悉和理解業務的人。對於大數據挖掘的學習心得,作者認為學習數據挖掘一定要結合實際業務背景、案例背景來學習,這樣才是以解決問題為導向的學習方法。那麼,大體上,大數據挖掘分析經典案例有以下幾種:
A、預測產品未來一段時間用戶是否會流失,流失情況怎麼樣;
B、公司做了某個促銷活動,預估活動效果怎麼樣,用戶接受度如何;
C、評估用戶信用度好壞;
D、對現有客戶市場進行細分,到底哪些客戶才是目標客群;
E、產品上線投放市場後,用戶轉化率如何,到底哪些運營策略最有效;
F、運營做了很多工作,公司資源也投了很多,怎麼提升產品投入產出比;
G、一些用戶購買了很多商品後,哪些商品同時被購買的幾率高;
H、預測產品未來一年的銷量及收益。。。。
大數據挖掘要做的就是把上述類似的商業運營問題轉化為數據挖掘問題。
(一)如何將商業運營問題轉化為大數據挖掘問題
那麼,問題來了,我們該如何把上述的商業運營問題轉化為數據挖掘問題?可以對數據挖掘問題進行細分,分為四類問題:分類問題、聚類問題、關聯問題、預測問題;
1、分類問題
用戶流失率、促銷活動響應、評估用戶度都屬於數據挖掘的分類問題,我們需要掌握分類的特點,知道什麼是有監督學習,掌握常見的分類方法:決策樹、貝葉斯、KNN、支持向量機、神經網路和邏輯回歸等;
2、聚類問題
細分市場、細分客戶群體都屬於數據挖掘的聚類問題,我們要掌握聚類特點,知道無監督學習,了解常見的聚類演算法,例如劃分聚類、層次聚類、密度聚類、網格聚類、基於模型聚類等。
3、關聯問題
交叉銷售問題等屬於關聯問題,關聯分析也叫購物籃分析,我們要掌握常見的關聯分析演算法:Aprior演算法、Carma演算法,序列演算法等。
4、預測問題
我們要掌握簡單線性回歸分析、多重線性回歸分析、時間序列等。
(二)用何種工具實操大數據挖掘
能實現數據挖掘的工具和途徑實在太多,SPSS、SAS、Python、R等等都可以,但是我們需要掌握哪個或者說要掌握哪幾個,才算學會了數據挖掘?這需要看你所處的層次和想要進階的路徑是怎樣的。
第一層級:達到理解入門層次,了解統計學和資料庫即可。
第二層級:達到初級職場應用層次,資料庫+統計學+SPSS(也可以是SPSS代替軟體)
第三層級:達到中級職場應用層次,SAS或R
第四層級:達到數據挖掘師層次,SAS或R+Python(或其他編程語言)
(三)如何利用Python學習大數據挖掘
只要能解決實際問題,用什麼工具來學習數據挖掘都是無所謂,這裡首推Python。那該如何利用Python來學習數據挖掘?需要掌握Python中的哪些知識?
1、Pandas庫的操作
Panda是數據分析特別重要的一個庫,我們要掌握以下三點:
1)pandas 分組計算;
2)pandas 索引與多重索引;
索引比較難,但是卻是非常重要的
3)pandas 多表操作與數據透視表
2、numpy數值計算
numpy數據計算主要應用是在數據挖掘,對於以後的機器學習,深度學習,這也是一個必須掌握的庫,我們要掌握以下內容:
1)Numpy array理解;
2)數組索引操作;
3)數組計算;
4)Broadcasting(線性代數裡面的知識)
3、數據可視化-matplotlib與seaborn
1)Matplotib語法
python最基本的可視化工具就是matplotlib。咋一看Matplotlib與matlib有點像,要搞清楚二者的關係是什麼,這樣學習起來才會比較輕鬆。
2)seaborn的使用
seaborn是一個非常漂亮的可視化工具。
3)pandas繪圖功能
前面說過pandas是做數據分析的,但它也提供了一些繪圖的API。
4、數據挖掘入門
這部分是最難也是最有意思的一部分,要掌握以下幾個部分:
1)機器學習的定義
在這裡跟數據挖掘先不做區別
2)代價函數的定義
3)Train/Test/Validate
4) Overfitting的定義與避免方法
5、數據挖掘演算法
數據挖掘發展到現在,演算法已經非常多,下面只需掌握最簡單的,最核心的,最常用的演算法:
1)最小二乘演算法;
2)梯度下降;
3)向量化;
4)極大似然估計;
5)Logistic Regression;
6) Decision Tree;
7) RandomForesr;
8) XGBoost;
6、數據挖掘實戰
通過機器學習裡面最著名的庫scikit-learn來進行模型的理解。
以上,就是為大家釐清的大數據挖掘學習思路邏輯。可是,這還僅僅是開始,在通往數據挖掘師與數據科學家路上,還要學習文本處理與自然語言知識、Linux與Spark的知識、深度學習知識等等,我們要保持持續的興趣來學習數據挖掘。
關於數據挖掘演算法的學習,推薦《數據挖掘導論》
實際應用中,最關鍵的是對數據、業務的正確理解,演算法有時候並不是那麼重要(入門時很容易陷入各種fantasy的演算法而不自知)
數據挖掘看樓主要往哪個方向走了,一方面是做演算法或者建模型,這方面要求對常見的機器學習模型:廣義線性模型,最大熵模型,SVM,隱馬爾可夫鏈等的方法公式推導要深入理解。以廣義線性模型為例,要知道哪些問題適合哪個概率分布,理解模型的建立過程中如何降低模型複雜度或提高模型泛化能力等等。這要求紮實的數學功底。建議多閱讀經典的英文原版書籍或者知名學者的課堂notes,比如PRML,The element of statistical learning.因為大部分中文書籍只是講講應用或者模型的推倒過於簡單或講解過於單一,不能讓你加深對模型的理解。
另一方面,如果要走向工程方向,那麼建議多去提高自己的代碼能力,多去熟悉並應用常見的數據挖掘的框架,比如Spark,Hadoop,Mahout等等。這裡推薦Stanfotd 的一個課:Mining of massive datasets。這個課有對應的教材,很適合入門祥讀。當然工程實踐也必不可少。
很難系統,你可以是搞計算機應用出道的,比如圖像和視覺,也可以是資料庫,當然你還可以是搞統計學和金融工程出道的,還可以是搜索等技術轉向數據挖掘。由於方法在互相滲透,技術在不斷融合,所以找到立足點處理數據就好了。
想要系統地學習數據挖掘,必須學習以下六條:
1.基礎數學知識,微積分、概率論、線性代數。不用系統學習,了解概念和原理即可;
2.經典演算法及其原理,這有很多都要有高等數學、線性代數的知識;
3.適當學習一下matlab,很有用;
4.收集一些論文和數據,如果你英語好最好是外國的論文,自己也試算一下;
5.看一些教學視頻,推薦你收看 網易公開課 機器學習課程,很不錯;
6.使用數據挖掘軟體 推薦你兩款 一個是 SPSS的 clemetine國外的,有教程;另外一款是國內的叫Pluto,裡面有很多比較新的演算法。
相信在不久的將來,雲計算、人工智慧、大數據、物聯網,經過數年的發展,將完全融入我們的生活,我們應該對其進行擁抱,建議大家有時間,可以留心關注這方面的信息資訊,學術,科普類的平台,多智時代:http://duozhishidai.com ,引領智能變革,雷峰網——讀懂智能未來等等,讓我們一起迎接人工智慧時代的社會、經濟與文化變革,擁抱智能,暢享未來
說實話,在接觸一個新領域之初,迷茫、憂慮是每一個新人的通病。很多學習數據挖掘的人會因為自己是非計算機專業,而對數據挖掘心生畏懼,望而卻步。實際上,非計算機專業出來學挖掘的,一般對資料庫編程要求不會很高。進行數據挖掘通常都是由團隊進行的,團隊一般會有人幫你寫,你主要是對業務要了解。如果要自己寫,也不用很精通,只要能取出自己想要的數據就行了。優化方面起碼要會寫存儲過程,讓數據自己自動執行。如果公司要求在程序開發情況下進行挖掘,一般要求會JAVA。主流的數據挖掘是必須會的。當然了,如果有編程基礎就更好了,學習起來能更快地輕車熟路起來。
首先,還是建議大家按照自己當前程度,選擇適合自己的數據挖掘的書。現在微信比較流行,很多人在閱讀學習方面更依賴微信。但微信的文章雖然也有比較詳細的,但對於沒有編程基礎的童鞋,學習難度還是不小。所以更建議大家買書學習,把基礎知識掌握牢固。
其次,在學習數據挖掘的過程中必須注意培養你的思維,盡量縝密敏捷。這樣才可以發現數據中的不同!因為有的數據挖掘是計算機處理的。有的則是紙面上的。所以必須學會記錄。
掌握數據挖掘理論之後,要把它應用到實踐中。具體項目大家自己去找。
在實際的數據挖掘項目中:
(1)明確你希望挖的東西能產生什麼業務價值,而非用什麼挖掘演算法,挖掘演算法是手段,後面再關注它就行。要能夠具體描繪你的挖掘目標、價值,以及挖掘成果的預期展現形式,說服力如何,等等。
(2)為了得到你想要的成果,要多和相關的小夥伴討論,比如需要利用到哪些數據?這些數據中,哪些是已經有的,哪些還需要想辦法去收集?其中是否有些數據根本是不可能收集到的?這些收集不到的數據對於你想挖的成果會有什麼影響?如果是致命影響,直接導致你的挖掘成果缺乏說服力,那就另找其他方向吧。反之,則安排計劃和資源,把能收集到的數據儘快收集起來。
(3)根據收集到的數據的特點和收集過程的質量情況,清洗收集到的數據。根據挖掘目標的情況和收集到的數據的特點,制定挖掘規劃,選擇合適的挖掘演算法。總結一個成果,為了你的說法,把數據再針對性地洗幾遍,給出一個更加乾淨的分析成果,更有說服力。
(4)再畫個信息圖什麼的,圖文並茂,就可以初步交差。:在真實的項目中,還有一步,就是選取重要的評估視角和指標,根據具體的業務特點,把你的分析過程做成每周每小時都能給個角度固定的分析報告的服務。再往前一步,如果你對這塊業務真的很熟的話,還可以針對不同類型的分析結果,能給出相應的建議應對措施,這樣這此挖掘的業務價值就真正明確了。
數據挖掘包括的東西很多,大家學習數據挖掘一定要耐心,不要老想著短期內就要看到成果。知識都是積累的,積累完再到靈活運用都需要時間。
這裡再強調一下:大家學習數據挖掘的時候一定要注意分級,找准自己的定位。欲速則不達,不要一心求速忽略學習質量。
剛開始,建議是用輪子,當然要結合項目,分詞分類現在都有工具,可以直接用,然後你就會發現,使用這些工具,總會有些自己不得勁的地方,比如你會懷疑,數據挖掘怎麼就這麼沒意思?總是各種抄代碼,同時也會伴隨著不自信,這些演算法都是別人的,雖然取得一些成功,但不是自己的,然後你就會想著去研究研究這些工具的原理,他們怎麼實現的呢?
這就是第二階段了,邊用輪子邊學造輪子,這些原理需要會的課程:微分,數理統計,矩陣理論,概率論,配合老吳的課,很快就會理解各種演算法,但是推導公式會有難度,看智商了,反正我不會,,,
最後大成的一步!原理懂了,那實際問題中就不想用輪子了,想自己造或者自己改改,比如一篇文章中描述了3種汽車,胡亂描述,不是按順序,分別抽出對他們的描述,分析評價,或小學語文中的閱讀理解,目前我正在做的,,,自己造輪子中
數據挖掘的概念範疇很廣,從大的方面說,包括理論和實踐兩方面。理論方面:高數、線代、概率論、數據結構、機器學習演算法、最優化、運籌學、隨機過程等。實踐方面:分析工具(Matlab、Python、R、SAS等)、分析範式、數據理解、可視化等。前者看一本經典教材即可,推薦《機器學習》或《數據挖掘概念與技術》,後者就需要多練習多實踐,熟能生巧,如果用Python的話推薦《機器學習實戰》邊學邊練。數據分析就像做飯一樣,做的次數多了自然就有經驗了,是一門工程性很強的實踐活動,分享讀博士期間收集的一些數據集,可用來練習實踐。各領域公開數據集下載 - 知乎專欄
別說本科了,碩士階段也搞不定這個東西,真的是個深坑。如果沒有毅力,不要去碰觸這個東西,學個一知半解還不如學好Java找工作。
機器學習系列(7)_機器學習路線圖(附資料) - CSDN博客 ,轉載一波,非常系統且全面。
要是入門的話,個人覺得alpaydin的機器學習導論不錯,難易適中,覆蓋面全,語言簡潔。
如果有條件的話,可以看原版,網上不難找到。
推薦閱讀:
※用機器學習的方法來處理大數據,是直接學 Spark,還是重點學習 Hadoop,了解 Spark?
※機器學習,數據挖掘在研究生階段大概要學些什麼?
※反欺詐(Fraud Detection)中所用到的機器學習模型有哪些?
※連續特徵的離散化:在什麼情況下將連續的特徵離散化之後可以獲得更好的效果?
TAG:數據挖掘 |