機器學習實踐指南

機器學習實踐指南

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

本文導航
  • -1、 學習必要的背景知識 …… 03%

  • -2、 不要害怕在 ML 的“理論”上浪費時間 …… 24%

  • -3、 開始動手 …… 40%

  • -4、 練習 …… 60%

  • -5、 項目 …… 65%

  • -6、 不要停止 …… 72%

  • -7、 利用一切可以利用的資源 …… 86%

  • -現在你可以開始了 …… 95%

編譯自: https://medium.freecodecamp.org/how-machines-learn-a-practical-guide-203aae23cafb

作者: Karlijn Willems

譯者: Flowsnow

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

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

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

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

1、 學習必要的背景知識

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

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

  • 首先,你一定會需要一些進一步的指導,以瞭解開始機器學習需要覆蓋哪些知識點。

  • 其次,這些是你進一步學習的基礎。 不要害怕花時間,有了這些知識你才能構建一切。

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

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

  • Khan 學院[2] 對於初學者是非常好的資源,可以考慮學習他們的線性代數和微積分課程。

  • 在 麻省理工學院 OpenCourseWare[3] 網站上學習線性代數[4] 課程。

  • Coursera course[5] 網站上對描述統計學、概率論和推論統計學的介紹內容。

機器學習實踐指南

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

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

  • 線性代數及其應用(Linear Algebra and Its Applications)[6]
  • 應用線性代數(Applied Linear Algebra)[7]
  • 線性代數解決的 3000 個問題(3,000 Solved Problems in Linear Algebra)[8]
  • 麻省理工學院在線教材[9]

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

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

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

為什麼這些編程知識是必需的?

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

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

  • DataCamp 上關於 Python 或者 R 的介紹性課程: Python 語言數據科學介紹[10] 或者 R 語言編程介紹[11]。

  • Edx 上關於 Python 或者 R 的介紹性課程: Python 語言數據科學介紹[12] 和 R 語言數據科學介紹[13]。

  • 還有很多其他免費的課程。查看 Coursera[14] 或者 Codeacademy[15] 瞭解更多。

當你打牢基礎知識後,請查看 DataCamp 上的博客 Python 統計學:40+ 數據科學資源[16]。 這篇文章提供了統計學方面的 40 多個資源,這些資源都是你開始數據科學(以及 ML)需要學習的。

還要確保你查看了關於向量和數組的 這篇 SciPy 教程[17]文章,以及使用 Python 進行科學計算的研討會[18]。

要使用 Python 和微積分進行實踐,你可以瞭解下 SymPy 軟件包[19]。

2、 不要害怕在 ML 的“理論”上浪費時間

很多人並不會花很多精力去瀏覽理論材料,因為理論是枯燥的、無聊的。但從長遠來看,在理論知識上投入時間是至關重要的、非常值得的。 你將會更好地瞭解機器學習的新進展,也能和背景知識結合起來。 這將有助於你保持學習積極性。

此外,理論並不會多無聊。 正如你在介紹中所看到的,你可以藉助非常多的資料深入學習。

書籍是吸收理論知識的最佳途徑之一。 它們可以讓你停下來想一會兒。 當然,看書是一件非常平靜的事情,可能不符合你的學習風格。 不過,請嘗試閱讀下列書籍,看看它是否適合你:

  • 機器學習教程(Machine Learning textbook)[20], Tom Mitchell 著,書可能比較舊,但是卻很經典。這本書很好的解釋介紹了機器學習中最重要的課題,步驟詳盡,逐層深入。
  • 機器學習: 使數據有意義的算法藝術和科學(Machine Learning: The Art and Science of Algorithms that Make Sense of Data)(你可以在這裡[21]看到這本書的幻燈片版本):這本書對初學者來說非常棒。 裡面討論了許多實踐中的應用程序,其中有一些是在 Tom Mitchell 的書中缺少的。
  • 機器學習之嚮往(Machine Learning Yearning)[22] :這本書由吳恩達(Andrew Ng)

    編寫的,仍未完本,但對於那些正在學習 ML 的學生來說,這一定是很好的參考資料。

  • 算法與數據結構(Algorithms and Data Structures)[23] 由 Jurg Nievergelt 和 Klaus Hinrichs 著。
  • 也可以參閱 Matthew North 的

    面向大眾的數據挖掘(Data Mining for the Masses)[24]。 你會發現這本書引導你完成一些最困難的主題。
  • 機器學習介紹(Introduction to Machine Learning)[25] 由 Alex Smola 和 S.V.N. Vishwanathan 著。

機器學習實踐指南

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

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

  • 這個著名的機器學習慕課[26],是吳恩達(Andrew Ng)

    講的,介紹了機器學習及其理論。 別擔心,這個慕課講的非常好,一步一步深入,所以對初學者來說非常適用。

  • 麻省理工學院 Open Courseware 的 6034 課程的節目清單[27],已經有點前沿了。 在你開始本系列之前,你需要做一些 ML 理論方面的準備工作,但是你不會後悔的。

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

3、 開始動手

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

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

  • Python 機器學習:Scikit-Learn 教程[29],在這篇教程裡面,你可以學到使用 Scikit-Learn 構建模型的 KMeans 和支持向量機(SVM)相關的知名算法。

  • 給初學者的 R 語言機器學習教程[30] 用 R 中的類和 caret 包介紹機器學習。

  • [Keras 教程:Python 深度學習25[31] 涵蓋了如何一步一步的為分類和迴歸任務構建多層感知器(MLP)。

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

  • 循序漸進:Python 機器學習[32]: 一步一步地學習 Scikit-Learn。

  • 循序漸進:使用 Keras 開發你的第一個神經網絡[33]: 按這個教程一步一步地使用 Keras 開發你的第一個神經網絡。

  • 你可以考慮看更多的教程,但是機器學習精要[34]這篇教程是非常好的。

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

  • 用 scikit-learn 做監督學習[35]: 學習如何構建預測模型,調整參數,並預測在未知數據上執行的效果。你將使用 Scikit-Learn 操作真實世界的數據集。

  • 用 Python 做無監督學習[36]: 展示給你如何從未標記的數據集進行聚類、轉換、可視化和提取關鍵信息。 在課程結束時,還會構建一個推薦系統。

  • Python 深度學習[37]: 你將獲得如何使用 Keras 2.0 進行深度學習的實踐知識,Keras 2.0 是前沿的 Python 深度學習庫 Keras 的最新版本。

  • 在 Python 中應用機器學習[38]: 將學習者引入到機器學習實踐中,更多地關注技術和方法,而不是這些方法背後的統計學知識。

機器學習實踐指南

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

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

  • 機器學習介紹[39] 可以讓你宏觀瞭解機器學習學科最常見的技術和應用,還可以更多地瞭解不同機器學習模型的評估和訓練。這門課程剩下的部分重點介紹三個最基本的機器學習任務: 分類、迴歸和聚類。

  • R 語言無監督學習[40] ,用 R 語言從 ML 角度提供聚類和降維的基本介紹。 可以讓你儘快獲得數據的關鍵信息。

  • 實操機器學習[41]涵蓋了構建和應用預測功能的基本組成部分,其重點是實際應用。

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

  • Python 機器學習(Python Machine Learning Book)[42],Sebastian Raschka 著。
  • 人工神經網絡與深度學習導論:Python 應用實用指南(Introduction to Artificial Neural Networks and Deep Learning: A Practical Guide with Applications in Python)[43],Sebastian Raschka 著。
  • R 語言機器學習(Machine Learning with R)[44],Brett Lantz 著。

4、 練習

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

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

  • 從 Kaggle[45] 開始。 如果你需要額外的幫助來征服所謂的“數據恐懼”,請查看 Kaggle 的 Python 機器學習教程[46] 和 Kaggle 的 R 語言機器學習教程[47]。 這些將帶給您快速的提升。

  • 此後,你也可以自己開始挑戰。 查看這些網站,您可以在其中找到大量的 ML 數據集:UCI 機器學習倉庫[48],用於機器學習的公開數據集[49] 和 data.world[50]。

機器學習實踐指南

熟能生巧。

5、 項目

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

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

  • 為什麼有許多先進的 API,比如 tensorflow,還需要自己手動實現機器學習的算法?[51]

  • 為什麼要從頭開始實現機器學習算法?[52]

  • 使用 Python 從頭開始實現一個分類器,我能從中學到什麼?[53]

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

  • 如何實現機器學習算法[54]

  • 從頭開始學習機器學習[55]

  • 從頭開始學習機器學習算法[56]

機器學習實踐指南

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

6、 不要停止

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

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

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

  • 20 篇最新的機器學習和深度學習領域的頂級研究論文[58]

  • 機器學習研究雜誌[59]

  • 優秀的深度學習論文[60]

  • 機器學習的一些最好的研究論文和書籍[61]

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

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

  • 在 R 語言中使用 sparklyr 來了解 Spark[62]

  • Spark 數據科學與工程[63]

  • 介紹 Apache Spark[64]

  • Apache Spark 分佈式機器學習[65]

  • 用 Apache Spark 進行大數據分析[66]

  • 初學者指南:用 Python 操作 Apache Spark[67]

  • PySpark RDD 速查表[68]

  • PySpark SQL 速查表[69]

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

  • 機器學習和數據科學最流行的編程語言[70]

  • 機器學習和數據科學最流行的語言是...[71]

機器學習實踐指南

學無止境。

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

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

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

  • 談論機器[72]

  • 數據懷疑論者[73]

  • 線性化[74]

  • 本週的機器學習及 AI[75]

  • 機器學習 101[76]

當然,還有更多的播客。

文檔和軟件包源代碼是深入瞭解 ML 算法的實現的兩種方法。 查看這些倉庫:

  • Scikit-Learn[77]:知名的 Python ML 軟件包

  • Keras[78]: Python 深度學習軟件包

  • caret[79]: 非常受歡迎的用於分類和迴歸訓練 R 軟件包

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

  • 機器學習的可視化介紹[80]

  • Distill[81] 使 ML 研究清晰,動態和生動。

  • 如果你想玩下神經網絡架構,可以看下 Tensorflow - 神經網絡遊樂場[82]。

  • 更多的看這裡:機器學習算法最佳的可視化方法是什麼?[83]

機器學習實踐指南

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

現在你可以開始了

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

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


作者簡介:

Karlijn Willems,數據科學記者


via: https://medium.freecodecamp.org/how-machines-learn-a-practical-guide-203aae23cafb

作者:Karlijn Willems[85] 譯者:Flowsnow 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

點擊“瞭解更多”可訪問文內鏈接

相關推薦

推薦中...