機器學習實踐指南

Karlijn Willems發表於2017-09-28

你可能在各種應用中聽說過機器學習machine learning(ML),比如垃圾郵件過濾、光學字元識別(OCR)和計算機視覺。

開啟機器學習之旅是一個涉及多方面的漫長旅途。對於新手,有很多的書籍,有學術論文,有指導練習,有獨立專案。在這些眾多的選擇裡面,很容易迷失你最初想學習的目標。

所以在今天的文章中,我會列出 7 個步驟(和 50 多個資源)幫助你開啟這個令人興奮的電腦科學領域的大門,並逐漸成為一個機器學習高手。

請注意,這個資源列表並不詳盡,只是為了讓你入門。 除此之外,還有更多的資源。

1、 學習必要的背景知識

你可能還記得 DataCamp 網站上的學習資料科學這篇文章裡面的資訊圖:數學和統計學是開始機器學習(ML)的關鍵。 基礎可能看起來很容易,因為它只有三個主題。 但不要忘記這些實際上是三個廣泛的話題。

在這裡需要記住兩件非常重要的事情:

  • 首先,你一定會需要一些進一步的指導,以瞭解開始機器學習需要覆蓋哪些知識點。
  • 其次,這些是你進一步學習的基礎。 不要害怕花時間,有了這些知識你才能構建一切。

第一點很簡單:學習線性代數和統計學是個好主意。這兩門知識是必須要理解的。但是在你學習的同時,也應該嘗試學習諸如最優化和高等微積分等主題。當你越來越深入 ML 的時候,它們就能派上用場。

如果是從零開始的,這裡有一些入門指南可供參考:

統計學是學習 ML 的關鍵之一

如果你更多喜歡閱讀書籍,請參考以下內容:

然而,在大多數情況下,你已經對統計學和數學有了一個初步的瞭解。很有可能你已經瀏覽過上面列舉的的那些資源。

在這種情況下,誠實地回顧和評價你的知識是一個好主意,是否有一些領域是需要複習的,或者現在掌握的比較好的?

如果你一切都準備好了,那麼現在是時候使用 R 或者 Python 應用這些知識了。作為一個通用的指導方針,選擇一門語言開始是個好主意。另外,你仍然可以將另一門語言加入到你的技能池裡。

為什麼這些程式設計知識是必需的?

嗯,你會看到上面列出的課程(或你在學校或大學學習的課程)將為你提供關於數學和統計學主題的更理論性的介紹(而不是應用性的)。 然而,ML 非常便於應用,你需要能夠應用你所學到的所有主題。 所以最好再次複習一遍之前的材料,但是這次需要付諸應用。

如果你想掌握 R 和 Python 的基礎,可以看以下課程:

當你打牢基礎知識後,請檢視 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 著。

花些時間看書並研究其中涵蓋的資料

視訊和慕課對於喜歡邊聽邊看來學習的人來說非常棒。 慕課和視訊非常的多,多到可能你都很難找到適合你的。 下面列出了最知名的幾個:

在這一點上,重要的是要將各種獨立的技術融會貫通,形成整體的結構圖。 首先了解關鍵的概念:監督學習supervised learning和無監督學習unsupervised learning的區別、分類和迴歸等。 手動(書面)練習可以派上用場,能幫你瞭解演算法是如何工作的以及如何應用這些演算法。 在大學課程裡你經常會找到一些書面練習,可以看看波特蘭州立大學的 ML 課程

3、 開始動手

通過看書和看視訊瞭解理論和演算法都非常好,但是需要超越這一階段,就要開始做一些練習。你要學著去實現這些演算法,應用學到的理論。

首先,有很多介紹 Python 和 R 方面的機器學習的基礎知識。當然最好的方法就是使用互動式教程:

還請檢視以下靜態的(非互動的)教程,這些需要你在 IDE 中操作:

除了教程之外,還有一些課程。參加課程可以幫助你係統性地應用學到的概念。 經驗豐富的導師很有幫助。 以下是 Python 和機器學習的一些互動課程:

  • 用 scikit-learn 做監督學習: 學習如何構建預測模型,調整引數,並預測在未知資料上執行的效果。你將使用 Scikit-Learn 操作真實世界的資料集。
  • 用 Python 做無監督學習: 展示給你如何從未標記的資料集進行聚類、轉換、視覺化和提取關鍵資訊。 在課程結束時,還會構建一個推薦系統。
  • Python 深度學習: 你將獲得如何使用 Keras 2.0 進行深度學習的實踐知識,Keras 2.0 是前沿的 Python 深度學習庫 Keras 的最新版本。
  • 在 Python 中應用機器學習: 將學習者引入到機器學習實踐中,更多地關注技術和方法,而不是這些方法背後的統計學知識。

理論學習之後,花點時間來應用你所學到的知識。

對於那些正在學習 R 語言機器學習的人,還有這些互動課程:

  • 機器學習介紹 可以讓你巨集觀瞭解機器學習學科最常見的技術和應用,還可以更多地瞭解不同機器學習模型的評估和訓練。這門課程剩下的部分重點介紹三個最基本的機器學習任務: 分類、迴歸和聚類。
  • R 語言無監督學習 ,用 R 語言從 ML 角度提供聚類和降維的基本介紹。 可以讓你儘快獲得資料的關鍵資訊。
  • 實操機器學習涵蓋了構建和應用預測功能的基本組成部分,其重點是實際應用。

最後,還有很多書籍以偏向實踐的方式介紹了 ML 主題。 如果你想借助書籍內容和 IDE 來學習,請檢視這些書籍:

4、 練習

實踐比使用 Python 進行練習和修改材料更重要。 這一步對我來說可能是最難的。 在做了一些練習後看看其他人是如何實現 ML 演算法的。 然後,開始你自己的專案,闡述你對 ML 演算法和理論的理解。

最直接的方法之一就是將練習的規模做得更大些。 要做一個更大的練習,就需要你做更多的資料清理和功能工程。

熟能生巧。

5、 專案

雖然做一些小的練習也不錯,但是在最後,您需要做一個專案,可以在其中展示您對使用到的 ML 演算法的理解。

最好的練習是實現你自己的 ML 演算法。 您可以在以下頁面中閱讀更多關於為什麼您應該做這樣的練習,以及您可以從中學到什麼內容:

接下來,您可以檢視以下文章和倉庫。 可以從中獲得一些靈感,並且瞭解他們是如何實現 ML 演算法的。

開始時專案可能會很難,但是可以極大增加你的理解。

6、 不要停止

對 ML 的學習永遠不能停止,即使你在這個領域工作了十年,總是有新的東西要學習,許多人都將會證實這一點。

例如,ML 趨勢,比如深度學習deep learning現在就很受歡迎。你也可以專注於那些現在不怎麼火,但是將來會火的話題上。如果你想了解更多,可以看看這個有趣的問題和答案

當你苦惱於掌握基礎知識時,你最先想到的可能不是論文。 但是它們是你緊跟最新研究的一個途徑。 論文並不適合剛剛開始學習的人,但是絕對適合高階人員。

其他技術也是需要考慮的。 但是當你剛開始學習時,不要擔心這些。 例如,您可以專注於 Python 或 R 語言 (取決於你已經知道哪一個),並把它到你的技能池裡。 你可以通過這篇文章來查詢一些感興趣的資源。

如果您還想轉向大資料,您可以考慮研究 Spark。 這裡有一些有趣的資源:

其他程式語言,比如 Java、JavaScript、C 和 C++ 在 ML 中越來越重要。 從長遠來看,您可以考慮將其中一種語言新增到學習列表中。 你可以使用這些部落格文章來指導你選擇:

學無止境。

7、 利用一切可以利用的資源

機器學習是一個充滿難度的話題,有時候可能會讓你失去動力。 或者也許你覺得你需要點改變。 在這種情況下,請記住,有很多資源可以讓你打消掉這種想法。 檢視以下資源:

播客是可以讓你繼續你的 ML 旅程,緊跟這個領域最新的發展的偉大資源:

當然,還有更多的播客。

文件和軟體包原始碼是深入瞭解 ML 演算法的實現的兩種方法。 檢視這些倉庫:

  • Scikit-Learn:知名的 Python ML 軟體包
  • Keras: Python 深度學習軟體包
  • caret: 非常受歡迎的用於分類和迴歸訓練 R 軟體包

視覺化是深入 ML 理論的最新也是最流行的方式之一。 它們對初學者來說非常棒,但對於更高階的學習者來說也是非常有趣的。 你肯定會被下面這些視覺化資源所吸引,它們能讓你更加了解 ML 的工作原理:

學習中的一些變化更加能激勵你。

現在你可以開始了

現在一切都取決於你自己了。學習機器學習是一個持續的過程,所以開始的越早就會越好。 運用你手邊的一切工具開始吧。 祝你好運,並確保讓我們知道你的進步。

這篇文章是我基於 Quora 問題(小白該如何開始機器學習)給出的答案。


作者簡介:

Karlijn Willems,資料科學記者

 

相關文章