機器學習最好的入門資料
文章推薦指數: 80 %
這是一篇很難寫的文章,因為我希望這篇文章能對學習者有所啟發。
我在空白頁前坐下,並且問自己了一個很難的問題:什麼樣的庫、課程、論文和書籍對於機器學習的初學者來說是最好的。
文章里到底寫什麼、不寫什麼,這個問題真的讓我很煩惱。
我必須把自己當做一個程式設計師和一個機器學習的初學者,站在這個角度去考慮最合適的資源。
我找出了每個類型中最適合的資源。
如果你是一個真正的初學者,並且樂意於開始了解機器學習領域的相關知識,我希望,你可以在我的文章中找到有用的資料。
我的建議是,從中挑出一件來,一本書或者是一個庫,反覆閱讀或者認真學習所有的相關教程。
挑出一個並且堅持學習,直到你完全掌握,再重新選擇一個,重複這個學習過程。
現在就讓我們開始吧!
Programming Libraries 編程庫資源
我是一個「學習要敢於冒險和嘗試」觀念的倡導者。
這是我學習編程的方式,我相信很多人也是這樣學習程序設計的。
先了解你的能力極限,然後去拓展你的能力。
如果你了解如何編程,可以將編程經驗很快借鑑到深入學習機器學習上。
在你實現一個實際的產品系統之前,你必須遵循一些規則、學習相關數學知識。
找到一個庫並且仔細閱讀相關文檔,根據教程,開始嘗試實現一些東西。
下面列出的是開源的機器學習庫中最好的幾種。
我認為,並不是他們中的每一種都適合用在你的系統中,但是他們是你學習、探索和實驗的好材料。
你可以從一個由你熟悉的語言編寫的庫開始學習,然後再去學習其他功能強大的庫。
如果你是一個優秀的程式設計師,你會知道怎樣從一種語言,簡單合理地遷移到另一種語言。
語言的邏輯都是相同的,只是語法和API稍有不同。
• 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在斯坦福的講解可能是最適合初學者的,下面是我推薦的一些視頻資源。
• Stanford Machine Learning斯坦福的機器學習課程:可以在Coursera上觀看,這門課是由 Andrew Ng講解的。
只要註冊,你可以隨時觀看所有的課程視頻,從Stanford CS229
course下載講義和筆記。
這門課包括了家庭作業和小測試,課程主要講解了線性代數的知識,使用Octave庫。
• Caltech Learning from Data加利福尼亞理工學院的數據分析課程:你可以在edX上學習這門課程,課程是由Yaser
Abu-Mostafa講解的。
所有的課程視頻和資料都在加利福尼亞理工學院的網站上。
與斯坦福的課程類似,你可以根據自己的情況安排學習進度,完成家庭作業和小論文。
它與斯坦福的課程主題相似,關注更多的細節和數學知識。
對於初學者來說,家庭作業可能稍有難度。
• Machine Learning Category on
VideoLectures.Net網站中的機器學習目錄:這是個很容易令人眼花繚亂的資源庫。
你可以找出比較感興趣的資源,並且深入學習。
不要糾結於不適合你的視頻,或者對於感興趣的內容你可以做筆記。
我自己會一直重複深入學習一些問題,同時發現新的話題進行學習。
此外,在這個網站上你可以發現是這個領域的大師是什麼樣的。
•「Getting In Shape For The Sport Of Data Science」 – 由Jeremy
Howard講授:這是與機器學習競賽者的對話,他們是一些實踐中的R語言用戶。
這是非常珍貴的資源,因為很少有人會討論研究一個問題的完整過程和究竟怎樣做。
我曾經幻想過在網上找到一個TV秀,記錄機器學習競賽的全過程。
這就是我開始學習機器學習的經歷!
Overview Papers綜述論文
如果你並不習慣閱讀科研論文,你會發現論文的語言非常晦澀難懂。
一篇論文就像是一本教科書的片段,但是論文會介紹一個實驗或者是領域中其他的前沿知識。
然而,如果你準備從閱讀論文開始學習機器學習的話,你還是可以找到一些很有意思的文章的。
• The Discipline of Machine Learning機器學習中的規則:這是由Tom Mitchell編著的白皮書,其中定義了機器學習的規則。
Mitchell在說服CMU總裁為一個百年內都存在的問題建立一個獨立的機器學習部門時,也用到了這本書中的觀點。
• A Few Useful Things to Know about Machine Learning:這是一篇很好的論文,因為它以詳細的算法為基礎,又提出了一些很重要的問題,比如:選擇特徵的一般化,模型簡化等。
我只是列出了兩篇重要的論文,因為閱讀論文會讓你陷入困境。
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 繼續閱讀
在寫這篇文章時,我認真思考了相關問題,同時也參考了其他人推薦的資料,以確保我沒有遺漏任何重要參考資料。
為了確保文章的完整性,下面也列出了一些網上流行的,可以供初學者使用的材料。
.
• A List of Data Science and Machine Learning Resources:這是一份仔細整理的列表。
你可以花一些時間,點擊連結,仔細閱讀作者的建議。
值得一讀!
• What are some good resources for learning about machine learning
Why:這個問題的第一個答案令人吃驚。
每次我閱讀這篇文章的時候,都會做好筆記,並且插入新的書籤。
答案中對我最有啟發的部分是機器學習課程列表,以及相應的課程筆記和問答網站。
• Overwhelmed by Machine Learning: is there an ML101 book:這是StackOverflow上的問題。
並且提供了一系列機器學習推薦書籍。
Jeff Moser提供的第一個答案是很有用的,其中有課程視頻和講座的連結。
你是不是以及讀過或者用過上面的一些資源了呢?你怎麼看這個問題?
我是不是如願為那些對機器學習有興趣的初學者提供了重要、有用的資源呢?請留下你的建議,讓我們分享!
機器學習,深度學習資料1000+
機器學習是研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。它是人 工智能的核心,是使計算機具有智能的根本途徑。深度學習是機器學習研究中...
獻給程式設計師的最好的一份機器學習自學手冊
該文章來自Github上開源項目翻譯靈感來自 谷歌面試學習手冊原文地址:Machine Learning for Software Engineers