這是一篇很難寫的文章,由於我但願這篇文章能對學習者有所啓發。我在空白頁前坐下,而且問本身了一個很難的問題:什麼樣的庫、課程、論文和書籍對於機器學習的初學者來講是最好的。程序員
文章裏到底寫什麼、不寫什麼,這個問題真的讓我很煩惱。我必須把本身當作一個程序員和一個機器學習的初學者,站在這個角度去考慮最合適的資源。web
我找出了每一個類型中最適合的資源。若是你是一個真正的初學者,而且樂意於開始瞭解機器學習領域的相關知識,我但願,你能夠在個人文章中找到有用的資料。個人建議是,從中挑出一件來,一本書或者是一個庫,反覆閱讀或者認真學習全部的相關教程。挑出一個而且堅持學習,直到你徹底掌握,再從新選擇一個,重複這個學習過程。如今就讓咱們開始吧!算法
Programming Libraries 編程庫資源
我是一個「學習要勇於冒險和嘗試」觀念的倡導者。這是我學習編程的方式,我相信不少人也是這樣學習程序設計的。先了解你的能力極限,而後去拓展你的能力。若是你瞭解如何編程,能夠將編程經驗很快借鑑到深刻學習機器學習上。在你實現一個實際的產品系統以前,你必須遵循一些規則、學習相關數學知識。apache
找到一個庫而且仔細閱讀相關文檔,根據教程,開始嘗試實現一些東西。下面列出的是開源的機器學習庫中最好的幾種。我認爲,並非他們中的每一種都適合用在你的系統中,可是他們是你學習、探索和實驗的好材料。編程
你能夠從一個由你熟悉的語言編寫的庫開始學習,而後再去學習其餘功能強大的庫。若是你是一個優秀的程序員,你會知道怎樣從一種語言,簡單合理地遷移到另外一種語言。語言的邏輯都是相同的,只是語法和API稍有不一樣。segmentfault
- R Project for Statistical Computing:這是一個開發環境,採用一種近似於Lisp的腳本語言。在這個庫中,全部你想要的與統計相關的功能都經過R語言提供,包括一些複雜的圖標。CRAN(你能夠認爲是機器學弟的第三方包)中的機器學習目錄下的代碼,是由統計技術方法和其餘相關領域中的領軍人物編寫的。若是你想作實驗,或是快速拓展知識,R語言都是必須學習的。但它可能不是你學習的第一站。
- WEKA:這是一個數據挖掘工做平臺,爲用戶提供數一系列據挖掘全過程的API、命令行和圖形化用戶接口。你能夠準備數據、可視化、創建分類、進行迴歸分析、創建聚類模型,同時能夠經過第三方插件執行其餘算法。除了WEKA以外, Mahout是Hadoop中爲機器學習提供的一個很好的JAVA框架,你能夠自行學習。若是你是機器學習和大數據學習的新手,那麼堅持學習WEKA,而且全心全意地學習一個庫。
- Scikit Learn:這是用Python編寫的,基於NumPy和SciPy的機器學習庫。若是你是一個Python或者Ruby語言程序員,這是適合你用的。這個庫很用戶接口友好,功能強大,而且配有詳細的文檔說明。若是你想試試別的庫,你能夠選擇Orange。
- Octave:若是你很熟悉MatLab,或者你是尋求改變的NumPy程序員,你能夠考慮 Octave。這是一個數值計算環境,與MatLab像是,藉助Octave你能夠很方便地解決線性和非線性問題,好比機器學習算法底層涉及的問題。若是你有工程背景,那麼你能夠由此入手。
- BigML:可能你並不想進行編程工做。你徹底能夠不經過代碼,來使用 WEKA那樣的工具。你經過使用BigMLS的服務來進行更加深刻的工做。BigML經過Web頁面,提供了機器學習的接口,所以你能夠經過瀏覽器來創建模型。
挑選出一個平臺,而且在你實際學習機器學習的時候使用它。不要紙上談兵,要去實踐!瀏覽器
Video Courses視頻課程
不少人都是經過視頻資源開始接觸機器學習的。我在YouTube和VideoLectures上看了不少於機器學習相關的視頻資源。這樣作的問題是,你可能只是觀看視頻而並不實際去作。個人建議是,你在觀看視頻的時候,應該多記筆記,及時後來你會拋棄你的筆記。同時,我建議你將學到的東西付諸實踐。框架
坦白講,我沒有看見特別合適初學者的視頻資源。視頻資源都須要你掌握必定的線性代數、機率論等知識。Andrew Ng在斯坦福的講解多是最適合初學者的,下面是我推薦的一些視頻資源。機器學習
Overview Papers綜述論文
若是你並不習慣閱讀科研論文,你會發現論文的語言很是晦澀難懂。一篇論文就像是一本教科書的片斷,可是論文會介紹一個實驗或者是領域中其餘的前沿知識。然而,若是你準備從閱讀論文開始學習機器學習的話,你仍是能夠找到一些頗有意思的文章的。ide
Beginner Machine Learning Books給機器學習初學者的書
關於機器學習的書有不少,可是幾乎沒有爲初學者量身定作的。什麼樣的人才是初學者呢?最有可能的狀況是,你從另一個徹底不一樣的領域好比:計算機科學、程序設計或者是統計學,來到機器學習領域。那麼,大部分的書籍要求你有必定的線性代數和機率論的基礎。
可是,還有一些書經過講解最少的算法來鼓勵程序員學習機器學習,書中會介紹一些可使用工具、編程函數庫來讓程序員嘗試。其中最有表明性的書是:《Programming Collective Intelligence》,《Machine Learning for Hackers》,《Hackersand Data Mining: Practical Machine Learning Tools and Techniques》(Python版, R版, 以及Java版)。若是感到迷惑的話,你能夠選擇其中一本開始學習。

- Programming Collective Intelligence: Building Smart Web 2.0 Applications:這本書是爲程序員寫的。書中簡略介紹相關理論,重點以程序爲例,介紹web中的實際問題和解決辦法。你能夠買來這本書,閱讀,而且作一些練習。
- Machine Learning for Hackers (中文版:機器學習:實用案例解析 ):我建議你在閱讀了《Programming Collective Intelligence》一書以後,再閱讀這本書。這本書中也提供了不少實踐練習,可是涉及更多的數據分析,而且使用R語言。我我的很喜歡這本書!
- Machine Learning: An Algorithmic Perspective:這本書是《Programming Collective Intelligence》的高級版本。它們目的相同(讓程序員開始瞭解機器學習),可是這本書包括一些數學知識,參考樣例和phython程序片斷。若是你有興趣的話,我建議你在看完《Programming Collective Intelligence》以後來閱讀這本書。
- 數據挖掘:實用機器學習工具與技術(英文版·第3版) :我本身是從這本書開始瞭解機器學習的,那時是2000年這本書仍是初版。我那時是Java程序員,這本書和WEKA庫爲個人學習和實踐提供了一個很好的環境。我經過這樣的平臺和一些插件,實現個人算法,而且真正開始實踐機器學習和數據挖掘的過程。我強烈推薦這本書,和這樣的學習過程。
- Machine Learning(中文版:計算機科學叢書:機器學習 ):這是一本很老的書,包括了一些規則和不少參考資料。這是一本教科書,爲每一個算法提供了相關講解。
有一些人認爲那些經典的機器學習教科書很了不得。 我也贊同,那些書的確很是好。可是,我認爲,對於初學者來講,這些書可能並不合適。
Further Reading 繼續閱讀
在寫這篇文章時,我認真思考了相關問題,同時也參考了其餘人推薦的資料,以確保我沒有遺漏任何重要參考資料。爲了確保文章的完整性,下面也列出了一些網上流行的,能夠供初學者使用的材料。.
我是否是如願爲那些對機器學習有興趣的初學者提供了重要、有用的資源呢?請留下你的建議,讓咱們分享!
原文:Best Machine Learning Resources for Getting Started
翻譯:伯樂在線 - programmer_lin