你可能在各種應用中聽說過機器學習machine learning(ML),比如垃圾郵件過濾、光學字元識別(OCR)和計算機視覺。
開啟機器學習之旅是一個涉及多方面的漫長旅途。對於新手,有很多的書籍,有學術論文,有指導練習,有獨立專案。在這些眾多的選擇裡面,很容易迷失你最初想學習的目標。
所以在今天的文章中,我會列出 7 個步驟(和 50 多個資源)幫助你開啟這個令人興奮的電腦科學領域的大門,並逐漸成為一個機器學習高手。
請注意,這個資源列表並不詳盡,只是為了讓你入門。 除此之外,還有更多的資源。
1、 學習必要的背景知識
你可能還記得 DataCamp 網站上的學習資料科學這篇文章裡面的資訊圖:數學和統計學是開始機器學習(ML)的關鍵。 基礎可能看起來很容易,因為它只有三個主題。 但不要忘記這些實際上是三個廣泛的話題。
在這裡需要記住兩件非常重要的事情:
- 首先,你一定會需要一些進一步的指導,以瞭解開始機器學習需要覆蓋哪些知識點。
- 其次,這些是你進一步學習的基礎。 不要害怕花時間,有了這些知識你才能構建一切。
第一點很簡單:學習線性代數和統計學是個好主意。這兩門知識是必須要理解的。但是在你學習的同時,也應該嘗試學習諸如最優化和高等微積分等主題。當你越來越深入 ML 的時候,它們就能派上用場。
如果是從零開始的,這裡有一些入門指南可供參考:
- Khan 學院 對於初學者是非常好的資源,可以考慮學習他們的線性代數和微積分課程。
- 在 麻省理工學院 OpenCourseWare 網站上學習線性代數 課程。
- Coursera course 網站上對描述統計學、概率論和推論統計學的介紹內容。
統計學是學習 ML 的關鍵之一
如果你更多喜歡閱讀書籍,請參考以下內容:
- 線性代數及其應用Linear Algebra and Its Applications
- 應用線性代數Applied Linear Algebra
- 線性代數解決的 3000 個問題3,000 Solved Problems in Linear Algebra
- 麻省理工學院線上教材
然而,在大多數情況下,你已經對統計學和數學有了一個初步的瞭解。很有可能你已經瀏覽過上面列舉的的那些資源。
在這種情況下,誠實地回顧和評價你的知識是一個好主意,是否有一些領域是需要複習的,或者現在掌握的比較好的?
如果你一切都準備好了,那麼現在是時候使用 R 或者 Python 應用這些知識了。作為一個通用的指導方針,選擇一門語言開始是個好主意。另外,你仍然可以將另一門語言加入到你的技能池裡。
為什麼這些程式設計知識是必需的?
嗯,你會看到上面列出的課程(或你在學校或大學學習的課程)將為你提供關於數學和統計學主題的更理論性的介紹(而不是應用性的)。 然而,ML 非常便於應用,你需要能夠應用你所學到的所有主題。 所以最好再次複習一遍之前的材料,但是這次需要付諸應用。
如果你想掌握 R 和 Python 的基礎,可以看以下課程:
- DataCamp 上關於 Python 或者 R 的介紹性課程: Python 語言資料科學介紹 或者 R 語言程式設計介紹。
- Edx 上關於 Python 或者 R 的介紹性課程: Python 語言資料科學介紹 和 R 語言資料科學介紹。
- 還有很多其他免費的課程。檢視 Coursera 或者 Codeacademy 瞭解更多。
當你打牢基礎知識後,請檢視 DataCamp 上的部落格 Python 統計學:40+ 資料科學資源。 這篇文章提供了統計學方面的 40 多個資源,這些資源都是你開始資料科學(以及 ML)需要學習的。
還要確保你檢視了關於向量和陣列的 這篇 SciPy 教程文章,以及使用 Python 進行科學計算的研討會。
要使用 Python 和微積分進行實踐,你可以瞭解下 SymPy 軟體包。
2、 不要害怕在 ML 的“理論”上浪費時間
很多人並不會花很多精力去瀏覽理論材料,因為理論是枯燥的、無聊的。但從長遠來看,在理論知識上投入時間是至關重要的、非常值得的。 你將會更好地瞭解機器學習的新進展,也能和背景知識結合起來。 這將有助於你保持學習積極性。
此外,理論並不會多無聊。 正如你在介紹中所看到的,你可以藉助非常多的資料深入學習。
書籍是吸收理論知識的最佳途徑之一。 它們可以讓你停下來想一會兒。 當然,看書是一件非常平靜的事情,可能不符合你的學習風格。 不過,請嘗試閱讀下列書籍,看看它是否適合你:
- 機器學習教程Machine Learning textbook, Tom Mitchell 著,書可能比較舊,但是卻很經典。這本書很好的解釋介紹了機器學習中最重要的課題,步驟詳盡,逐層深入。
- 機器學習: 使資料有意義的演算法藝術和科學Machine Learning: The Art and Science of Algorithms that Make Sense of Data(你可以在這裡看到這本書的幻燈片版本):這本書對初學者來說非常棒。 裡面討論了許多實踐中的應用程式,其中有一些是在 Tom Mitchell 的書中缺少的。
- 機器學習之嚮往Machine Learning Yearning :這本書由吳恩達Andrew Ng編寫的,仍未完本,但對於那些正在學習 ML 的學生來說,這一定是很好的參考資料。
- 演算法與資料結構Algorithms and Data Structures 由 Jurg Nievergelt 和 Klaus Hinrichs 著。
- 也可以參閱 Matthew North 的面向大眾的資料探勘Data Mining for the Masses。 你會發現這本書引導你完成一些最困難的主題。
- 機器學習介紹Introduction to Machine Learning 由 Alex Smola 和 S.V.N. Vishwanathan 著。
花些時間看書並研究其中涵蓋的資料
視訊和慕課對於喜歡邊聽邊看來學習的人來說非常棒。 慕課和視訊非常的多,多到可能你都很難找到適合你的。 下面列出了最知名的幾個:
- 這個著名的機器學習慕課,是吳恩達Andrew Ng講的,介紹了機器學習及其理論。 別擔心,這個慕課講的非常好,一步一步深入,所以對初學者來說非常適用。
- 麻省理工學院 Open Courseware 的 6034 課程的節目清單,已經有點前沿了。 在你開始本系列之前,你需要做一些 ML 理論方面的準備工作,但是你不會後悔的。
在這一點上,重要的是要將各種獨立的技術融會貫通,形成整體的結構圖。 首先了解關鍵的概念:監督學習supervised learning和無監督學習unsupervised learning的區別、分類和迴歸等。 手動(書面)練習可以派上用場,能幫你瞭解演算法是如何工作的以及如何應用這些演算法。 在大學課程裡你經常會找到一些書面練習,可以看看波特蘭州立大學的 ML 課程。
3、 開始動手
通過看書和看視訊瞭解理論和演算法都非常好,但是需要超越這一階段,就要開始做一些練習。你要學著去實現這些演算法,應用學到的理論。
首先,有很多介紹 Python 和 R 方面的機器學習的基礎知識。當然最好的方法就是使用互動式教程:
- Python 機器學習:Scikit-Learn 教程,在這篇教程裡面,你可以學到使用 Scikit-Learn 構建模型的 KMeans 和支援向量機(SVM)相關的知名演算法。
- 給初學者的 R 語言機器學習教程 用 R 中的類和 caret 包介紹機器學習。
- [Keras 教程:Python 深度學習25 涵蓋了如何一步一步的為分類和迴歸任務構建多層感知器(MLP)。
還請檢視以下靜態的(非互動的)教程,這些需要你在 IDE 中操作:
- 循序漸進:Python 機器學習: 一步一步地學習 Scikit-Learn。
- 循序漸進:使用 Keras 開發你的第一個神經網路: 按這個教程一步一步地使用 Keras 開發你的第一個神經網路。
- 你可以考慮看更多的教程,但是機器學習精要這篇教程是非常好的。
除了教程之外,還有一些課程。參加課程可以幫助你係統性地應用學到的概念。 經驗豐富的導師很有幫助。 以下是 Python 和機器學習的一些互動課程:
- 用 scikit-learn 做監督學習: 學習如何構建預測模型,調整引數,並預測在未知資料上執行的效果。你將使用 Scikit-Learn 操作真實世界的資料集。
- 用 Python 做無監督學習: 展示給你如何從未標記的資料集進行聚類、轉換、視覺化和提取關鍵資訊。 在課程結束時,還會構建一個推薦系統。
- Python 深度學習: 你將獲得如何使用 Keras 2.0 進行深度學習的實踐知識,Keras 2.0 是前沿的 Python 深度學習庫 Keras 的最新版本。
- 在 Python 中應用機器學習: 將學習者引入到機器學習實踐中,更多地關注技術和方法,而不是這些方法背後的統計學知識。
理論學習之後,花點時間來應用你所學到的知識。
對於那些正在學習 R 語言機器學習的人,還有這些互動課程:
- 機器學習介紹 可以讓你巨集觀瞭解機器學習學科最常見的技術和應用,還可以更多地瞭解不同機器學習模型的評估和訓練。這門課程剩下的部分重點介紹三個最基本的機器學習任務: 分類、迴歸和聚類。
- R 語言無監督學習 ,用 R 語言從 ML 角度提供聚類和降維的基本介紹。 可以讓你儘快獲得資料的關鍵資訊。
- 實操機器學習涵蓋了構建和應用預測功能的基本組成部分,其重點是實際應用。
最後,還有很多書籍以偏向實踐的方式介紹了 ML 主題。 如果你想借助書籍內容和 IDE 來學習,請檢視這些書籍:
- Python 機器學習Python Machine Learning Book,Sebastian Raschka 著。
- 人工神經網路與深度學習導論:Python 應用實用指南Introduction to Artificial Neural Networks and Deep Learning: A Practical Guide with Applications in Python,Sebastian Raschka 著。
- R 語言機器學習Machine Learning with R,Brett Lantz 著。
4、 練習
實踐比使用 Python 進行練習和修改材料更重要。 這一步對我來說可能是最難的。 在做了一些練習後看看其他人是如何實現 ML 演算法的。 然後,開始你自己的專案,闡述你對 ML 演算法和理論的理解。
最直接的方法之一就是將練習的規模做得更大些。 要做一個更大的練習,就需要你做更多的資料清理和功能工程。
- 從 Kaggle 開始。 如果你需要額外的幫助來征服所謂的“資料恐懼”,請檢視 Kaggle 的 Python 機器學習教程 和 Kaggle 的 R 語言機器學習教程。 這些將帶給您快速的提升。
- 此後,你也可以自己開始挑戰。 檢視這些網站,您可以在其中找到大量的 ML 資料集:UCI 機器學習倉庫,用於機器學習的公開資料集 和 data.world。
熟能生巧。
5、 專案
雖然做一些小的練習也不錯,但是在最後,您需要做一個專案,可以在其中展示您對使用到的 ML 演算法的理解。
最好的練習是實現你自己的 ML 演算法。 您可以在以下頁面中閱讀更多關於為什麼您應該做這樣的練習,以及您可以從中學到什麼內容:
接下來,您可以檢視以下文章和倉庫。 可以從中獲得一些靈感,並且瞭解他們是如何實現 ML 演算法的。
開始時專案可能會很難,但是可以極大增加你的理解。
6、 不要停止
對 ML 的學習永遠不能停止,即使你在這個領域工作了十年,總是有新的東西要學習,許多人都將會證實這一點。
例如,ML 趨勢,比如深度學習deep learning現在就很受歡迎。你也可以專注於那些現在不怎麼火,但是將來會火的話題上。如果你想了解更多,可以看看這個有趣的問題和答案。
當你苦惱於掌握基礎知識時,你最先想到的可能不是論文。 但是它們是你緊跟最新研究的一個途徑。 論文並不適合剛剛開始學習的人,但是絕對適合高階人員。
其他技術也是需要考慮的。 但是當你剛開始學習時,不要擔心這些。 例如,您可以專注於 Python 或 R 語言 (取決於你已經知道哪一個),並把它到你的技能池裡。 你可以通過這篇文章來查詢一些感興趣的資源。
如果您還想轉向大資料,您可以考慮研究 Spark。 這裡有一些有趣的資源:
- 在 R 語言中使用 sparklyr 來了解 Spark
- Spark 資料科學與工程
- 介紹 Apache Spark
- Apache Spark 分散式機器學習
- 用 Apache Spark 進行大資料分析
- 初學者指南:用 Python 操作 Apache Spark
- PySpark RDD 速查表
- PySpark SQL 速查表
其他程式語言,比如 Java、JavaScript、C 和 C++ 在 ML 中越來越重要。 從長遠來看,您可以考慮將其中一種語言新增到學習列表中。 你可以使用這些部落格文章來指導你選擇:
學無止境。
7、 利用一切可以利用的資源
機器學習是一個充滿難度的話題,有時候可能會讓你失去動力。 或者也許你覺得你需要點改變。 在這種情況下,請記住,有很多資源可以讓你打消掉這種想法。 檢視以下資源:
播客是可以讓你繼續你的 ML 旅程,緊跟這個領域最新的發展的偉大資源:
當然,還有更多的播客。
文件和軟體包原始碼是深入瞭解 ML 演算法的實現的兩種方法。 檢視這些倉庫:
- Scikit-Learn:知名的 Python ML 軟體包
- Keras: Python 深度學習軟體包
- caret: 非常受歡迎的用於分類和迴歸訓練 R 軟體包
視覺化是深入 ML 理論的最新也是最流行的方式之一。 它們對初學者來說非常棒,但對於更高階的學習者來說也是非常有趣的。 你肯定會被下面這些視覺化資源所吸引,它們能讓你更加了解 ML 的工作原理:
- 機器學習的視覺化介紹
- Distill 使 ML 研究清晰,動態和生動。
- 如果你想玩下神經網路架構,可以看下 Tensorflow – 神經網路遊樂場。
- 更多的看這裡:機器學習演算法最佳的視覺化方法是什麼?
學習中的一些變化更加能激勵你。
現在你可以開始了
現在一切都取決於你自己了。學習機器學習是一個持續的過程,所以開始的越早就會越好。 運用你手邊的一切工具開始吧。 祝你好運,並確保讓我們知道你的進步。
這篇文章是我基於 Quora 問題(小白該如何開始機器學習)給出的答案。
作者簡介:
Karlijn Willems,資料科學記者