1. 程式人生 > >機器學習最佳入門學習資料匯總

機器學習最佳入門學習資料匯總

行程 view 概率 應該 mic 時有 挖掘 書包 發現

譯者:teyla 原文作者:Jasonb
發布:2014-06-05 13:54:15 挑錯

這篇文章的確很難寫,因為我希望它真正地對初學者有幫助。面前放著一張空白的紙,我坐下來問自己一個難題:面對一個對機器學習領域完全陌生的初學者,我該推薦哪些最適合的庫,教程,論文及書籍幫助他們入門?

資源的取舍很讓人糾結,我不得不努力從一個機器學習的程序員和初學者的角度去思考哪些資源才是最適合他們的。

我為每種類型的資源選出了其中最佳的學習資料。如果你是一個真正的初學者,並且有興趣開始機器學習領域的學習,我希望你能在其中找到有用的東西。我的建議是,選取其中一項資源,一本書,或者一個庫,從頭到尾的讀一邊,或者完成所有的教程。選定一個後堅持學習,等到完全掌握以後,再選取另一個資源按同樣的方法學習。現在開始吧。

程序庫

我信奉這麽一句話:學到一定程度後,你需要開始嘗試做事。這就是我怎麽學會編程的,並且我確信其他大部分的人也是這麽學會的。要知道自己的極限,激發自己的能量。如果你知道怎麽編程,你就能快速深入到機器學習的學習中。然後制定一個計劃,在你實現一個工程系統前學習完這項技術相關的數學知識。

找一個庫,先閱讀其文檔,然後就可以照著指南嘗試做一些事情了。以下是最優秀的機器學習庫開源代碼。我並不認為這些庫適用於你的工程項目,但是它們非常適合學習,開發及建模。

先選擇一個你熟悉的語言對應的庫,然後再嘗試其他更功能強大的庫。如果你是個很好的程序員,你應該知道你可以很容易的從一種語言切換到另一種語言。程序邏輯都是一樣的,只是語法和API的區別而已。

R Project for Statistical Computing(用於統計計算的R工程):這是一個軟件環境,采用類lisp腳本語言。提供了你想要的所有統計相關的東西,包括非常贊的繪圖。CRAN(第三方機器學習包)的機器學習分類下有該領域專家們編寫的代碼,最新的接口方法和其他你能想到的功能都可以在上面找到。如果你想快速建模並開發,R工程是必學的。不過你不一定從一開始就從這個工程學起。

WEKA:數據挖掘平臺,提供了API,一些命令行及整個數據挖掘生命周期的圖像化用戶接口。你可以準備數據,進行可視化開發,創建分類、回歸、集群模型和很多內嵌及第三方組件提供的算法。如果你需要基於Hadoop平臺工作,那麽Mahout就是一個很好的機器學習java框架,這個框架和和WEKA不相關。但如果你是大數據和機器學習的新手,那麽還是堅持看WEKA,記得一次只學一樣東西。

Scikit Learn:機器學習Python庫,依賴Numpy和Scipy庫。如果你是Python或者Ruby程序員,這個庫比較合適。該庫接口友好,功能強大,且有完善的文檔支持。如果你想嘗試其他東西,那麽Orange將是一個不錯的選擇。

Octave:如果你熟悉MatLab或者你是Numpy程序員且正嘗試尋找一些不一樣的東西,那麽可以考慮Octave。它提供了跟Matlab相似的數據計算環境,並且可以很簡單的通過編程解決線性及非線性的問題,這些問題是大部分機器學習算法的基礎。如果你有工程師背景,你可以從這裏開始學起。

BigML:可能你不想做任何的編程,那麽你可以全部使用工具,比如WEKA。你還可以更深一步並使用像BigML一樣的服務,BigML提供了web版的機器學習接口,開發及創建模型可以全部在瀏覽器上完成。

選取其中一個平臺用於機器學習的實戰練習。不要只是看,要做。

視頻課程

現在很流行通過觀看視頻來學習機器學習。我在YouTube和VideoLectures.Net上看了很多機器學習的視頻,看視頻的風險在於你很容易只是看而不會去實踐。我建議在看視頻的時候一定要做好筆記,即便之後你很快就會把筆記扔掉。同時建議你不管在學什麽,一定要去動手嘗試。

坦白來說,我看過的視頻中,沒有哪個視頻是特別適合初學者的,我指真正的初學者。他們都是基於讀者有最基本的線性代數和概率理論知識的假設。斯坦福大學Andrew Ng 的教程可能是最適合用於入門的了,另外,我推薦了一些一次性視頻。

Stanford Machine Learning(斯坦福機器學習):通過Coursera可以獲取到,Andrew Ng主講。除了招生,你可以在任何時間看到所有的課程,並且從Stanford CS229 course(斯坦福CS229課程)上下載到所有的講義和課堂筆記。課程包括家庭作業,測試。課程集中在線性代數上,使用Octave環境。

Caltech Learning from Data:可以在edX訪問到,Yaser Abu-Mostafa主講。所有的課程和材料在CalTech網站上都可以獲取到。和斯坦福課程一樣,你可以按你自己的節奏來完成家庭作業和任務。它覆蓋了和斯坦福類似的課程,然後在細節上有一些深入,並且用了更多的數學方面的知識。家庭作業對初學者來說可能太難了。

Machine Learning Category on VideoLectures.Net(VideoLectures.Net上的機器學習分類):初學者很容易沈溺於海量的內容中。你可以找尋一些看起來比較有趣的視頻,然後嘗試看看。如果不是你現階段能看懂的,就先放放。如果你看著合適,就記筆記。我發現我自己總是不斷的找尋自己感興趣的標簽,然後最終選擇了完全不同的標簽。當然,看看該領域專家真正是什麽樣的也挺好的。

“Getting In Shape For The Sport Of Data Science” – Talk by Jeremy Howard:和一個本土R用戶團隊關於機器學習實踐應用的對話,這個團隊在機器學習競賽中獲取了很好的成績。這個視頻很有用,因為很少有人去講將機器學習應用到一個項目中真正是什麽樣的,及怎麽去做這個項目。我幻想著能創建一個網絡真人TV秀,這樣可以能直接看到選手機器學習競賽中的表現。我是多麽的向往啊。

論文概述

如果你不習慣讀研究性論文,你將會發現他們的語言非常枯燥。論文像是教科書的片段,但是論文描述了實驗,或者是該領域其他前沿研究。不過,如果你正要開始學習機器學,這裏有一些論文可能會引起你的興趣。

The Discipline of Machine Learning(機器學習的原則):機器學習原則定義的白皮書,作者Tom Mitchell. 當時有一場辯論,Mitchell最終說服CMU主席成立單獨的機器學習機構,以保證機器學習將在今後的100年裏作為一個學科存在。(也可參考短片Tom Mitchell訪談)。

A Few Useful Things to Know about Machine Learning(一些你必須知道的關於機器學習的事):這是一篇好論文,因為它不拘泥於特定的算法,而是偏向於比如特征選取概述和模型簡化這些重要的問題上。走對方向並且從一開始就想清楚,都是很好的事情。

上面我只羅列了兩篇重要的論文,因為讀論文會真的讓你陷入困境。

機器學習初學者書籍

市面上有很多機器學習的書,但很少有針對初學者編寫的。什麽才是真正的初學者?可能是從其他領域轉入機器學習的,也可能是從計算機科學,軟件編程或者統計學轉入的。即使這樣,大部分的書籍都會認為你至少已經有了線性代數和概率論的知識背景。

然而,這裏還是有一些書鼓勵有興趣的程序員從一個最小的算法開始學習,指定工具和庫,這樣編程人員就可以運行程序並得出結果。最著名的有Programming Collective Intelligence(中文版:《集體智慧編程》)、Machine Learning for Hackers(中文版《機器學習:實用案例解析》)和Data Mining: Practical Machine Learning Tools and Techniques(中文版《數據挖掘:實用機器學習技術》),以上三本分別基於Python,R和Java三種語言。如果有不懂的地方,可以參見這三本書。

[![Books for Machine Learning Beginners](http://machinelearningmastery.com/wp- content/uploads/2013/11/photo-300x225.jpg)](http://machinelearningmastery.com /wp-content/uploads/2013/11/photo.jpg)

Programming Collective Intelligence(中文版:《集體智慧編程》):創建精巧的web 2.0應用:這本書是專門為編程人員寫的,輕理論,重實戰,有大量的代碼示例,實際上遇到的web問題及對應的解決方案。買這本書的讀者,建議邊讀邊做練習!

Machine Learning for Hackers(中文版:《機器學習:使用案例解析》):我建議在讀完Programming Collective Intelligence以後再來讀這本書。該書同樣提供了大量的實用性很強的案例。但是它有更多數據分析的東西並且使用R語言。我真心喜歡這本書。

Machine Learning: An Algorithmic Perspective:這本書像是Programming Collective Intelligence的升級版。這兩本書的目標相同(幫助程序員入門),但是這本書包含了數學和參考文獻,同時也有用Python寫的示例和代碼片段。我建議讀者先看Programming Collective Intelligence,如果看完以後還有興趣,再來看這本書。

Data Mining: Practical Machine Learning Tools and Techniques, Third Edition(中文版:《數據挖掘:實用機器學習技術》):實際上我是從這本書開始學起的,2000年的第一版。當時我還是個java程序員,由於WEKA庫提供了很好的開發環境,我利用這本書結合WEKA庫進行嘗試,用自己的算法做了插件並作了大量的機器學習應用,同時延伸到數據挖掘部分。因此我強力推薦這本書和這種學習方法。

Machine Learning(中文版:《機器學習》):這本書比較老,包含了公式和很多的參考文獻。雖然是本教科書,但是每個算法的實用性依然非常強。

很多人能列舉出很多優秀的機器學習教科書,我也可以。這些書的確很棒,只是個人覺得對初學者來說不太好入門而已。

擴展閱讀

這篇文章經過我仔細推敲,為了確保自己沒有漏掉任何一點重要的東西,我同時也看了其他人列出的資源。為了使內容更全面,這裏再列出一些網上其他優秀的機器學習入門資源列表。

A List of Data Science and Machine Learning Resources:很詳細的資源列表,花點時間讀讀作者的建議,再看看其中的鏈接。很值得一看。

What are some good resources for learning about machine learning? Why?:這個問答的第一個答案很不錯,每次讀我都會做筆記並打上標簽。這個答案裏面最有價值的部分是機器學習課程的筆記列表及Q&A頁面的相關文章列表。

Overwhelmed by Machine Learning: is there an ML101 book?:一個StackOverflow上的帖子,上面確實列出了很多推薦的機器學習書籍列表,第一個回帖的是Jeff Moser,羅列了很多課程視頻和談話。

你是否已經看過或者用過這些資源呢?你覺得怎麽樣?

我不知道我是否為有興趣學習機器學習的程序員提供了真正有用的資源,有任何問題和建議,請留下寶貴留言!

機器學習最佳入門學習資料匯總