選機器學習課程怕踩雷?有人幫你選出了top 5優質課

機器之心發表於2019-03-05

本文作者在多年研究線上學習圖景、在不同平臺註冊大量機器學習課程後,收集了目前最好的 5 門機器學習課程。

選自Medium,作者:LearnDataSci,機器之心編譯。

選機器學習課程怕踩雷?有人幫你選出了top 5優質課

機器學習根植於統計學,正在逐漸成為最有趣、發展最快的電腦科學領域之一。機器學習可應用到無數行業和應用中,使其更加高效和智慧。

聊天機器人、垃圾郵件過濾、廣告服務、搜尋引擎和欺詐檢測,這些都是機器學習模型在日常生活中的應用例項。機器學習使我們為人類力不能及的事找到模式、建立數學模型。

與涉及探索性資料分析、統計學、通訊和視覺化技術的資料科學課程不同,機器學習課程主要講授機器學習演算法、數學原理,以及如何使用某種程式語言寫演算法。

本文介紹了 top 5 機器學習課程:

  • 吳恩達《機器學習》課程:https://www.learndatasci.com/out/coursera-machine-learning/

  • 吳恩達《深度學習專項課程》:https://www.learndatasci.com/out/coursera-deep-learning-specialization/

  • SAEED AGHABOZORGI 主講的 Machine Learning with Python 課程:https://www.learndatasci.com/out/coursera-ibm-machine-learning-python/

  • Advanced Machine Learning 專項課程:https://www.learndatasci.com/out/coursera-advanced-machine-learning-specialization/

  • 哥倫比亞大學的 Machine Learning 課程:https://www.learndatasci.com/out/edx-columbia-machine-learning/

篩選標準

本文介紹的 5 門機器學習課程遵循以下標準:

  • 嚴格專注於機器學習領域。

  • 使用免費開源的程式語言,如 Python、R 或 Octave。

  • 使用免費開源的庫。

  • 包含程式設計作業和實踐。

  • 解釋演算法執行的數學原理。

  • 學員可以自己調節進度,大約每月可以獲取新的課程。

  • 講師有趣、課堂有趣。

  • 在不同網站和論壇上的評分和評價高於平均值。

  • 若想盡快全面地學習機器學習,那麼學習者還應該在線上學習之外看一些相關書籍。作者推薦了以下兩本書籍,這兩本書對作者的學習帶來了很大影響。

書籍

1. An Introduction to Statistical Learning: with Applications in R

免費線上版地址:http://www-bcf.usc.edu/~gareth/ISL/

這本書具備清晰直接的解釋和示例,可以幫助讀者提升對基礎機器學習技術的數學理解。這本書更加偏重理論,但仍然包含一些使用 R 語言的練習和示例。

2. Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

這本書是對上一本書的良好補充,它主要涉及使用 Python 的機器學習應用。這本書搭配以下任意一門課程,可以幫助大家強化程式設計技能,瞭解如何直接將機器學習應用到專案中。

以下是本文的重頭戲:top 5 機器學習課程。

一、吳恩達《機器學習》課程

這門課適合初學者,其講師和建立者是史丹佛大學教授、谷歌大腦聯合創始人、Coursera 聯合創始人吳恩達。

這門課的作業要求使用開源程式語言 Octave,而不是 Python 或 R。這對於很多人來說有些怪異,但對於新手而言,Octave 是學習機器學習基礎的簡單方式。

整體來看,這門課程的材料翔實,直接由吳恩達授課,詳細解釋了每個演算法必需的所有數學知識,還涉及了一些微積分知識和線性代數知識。這門課程基本上是獨立的,不過提前瞭解一些線性代數知識會很有幫助。

  • 課程提供者:吳恩達,史丹佛大學

  • 費用:免費;如需課程證照,則需 79 美元

課程結構:

  • 單變數線性迴歸

  • 線性代數概要

  • 多變數線性迴歸

  • Octave/Matlab 教程

  • Logistic 迴歸

  • 正則化

  • 神經網路:表徵

  • 神經網路:學習

  • 使用機器學習的建議

  • 機器學習系統設計

  • 支援向量機

  • 降維

  • 異常檢測

  • 推薦系統

  • 大規模機器學習

  • 應用案例:Photo OCR

該課程持續時間為 11 周。如果可以堅持上完整個課程,你將在大約四個月內對機器學習有一個較好的基本瞭解。

之後,你可以再學習感興趣的高階或專項課程,如深度學習、機器學習工程等。

這門課程對於新手來說無疑是最好的課程。

參考文章:資源 | 吳恩達《機器學習》筆記,哥大研究生獻上

二、吳恩達深度學習專項課程

該課程同樣是吳恩達開設的。這是一個更高階的課程系列,適用於任何對機器學習、深度學習及其原理和應用感興趣的人。

該課程共包括 5 門課,每門課的作業和授課都使用 Python 程式語言和 TensorFlow 神經網路庫。該課程是吳恩達機器學習課程的良好後續,因為授課風格類似,而且你還可以學習使用 Python 進行機器學習。

  • 課程提供者:吳恩達,deeplearning.ai

  • 費用:免費;如需課程證照,則 49 美元/月

課程結構:

1. 神經網路和深度學習

  • 深度學習簡介

  • 神經網路的基本概念

  • 淺層神經網路

  • 深度神經網路

2. 改善神經網路:調參、正則化和優化

  • 深度學習的實踐

  • 優化演算法

  • 超引數調整、批歸一化和程式設計框架

3. 構建機器學習專案

  • 機器學習策略(1)

  • 機器學習策略(2)

4. 卷積神經網路

  • 卷積神經網路基礎

  • 深度卷積模型:案例研究

  • 目標檢測

  • 特殊應用:人臉識別和神經風格遷移

5. 序列模型

  • 迴圈神經網路

  • 自然語言處理和詞嵌入

  • 序列模型和注意力機制

要想理解該課程中介紹的演算法,你應該先熟悉線性代數和機器學習。如果你需要關於學習所需數學知識的建議,可以參閱文末的學習指南(Learning Guide)。

參考文章:

三、用 Python 進行機器學習

這也是一個適合初學者的課程,只關注最基本的機器學習演算法。講師、幻燈片動畫和對演算法的解釋結合得非常好,能讓你對基本概念有直觀的瞭解。

該課程使用 Python,但對演算法背後的數學知識講得較少。通過每個模組,你將有機會在瀏覽器中下載一個互動式 Jupyter notebook 來實踐你學到的新概念。每個 notebook 會鞏固你的知識,並提供了在真實資料上使用演算法的具體說明。

  • 課程提供者:IBM, Cognitive Class

  • 費用:免費;如需課程證照,則 39 美元/月

課程結構:

  • 機器學習導論

  • 迴歸

  • 分類

  • 聚類

  • 推薦系統

  • 期末專題

這門課提供的最大好處之一是為每個演算法提供了實用的建議。在講授新演算法時,講師會介紹它的工作原理、優缺點以及你應該在什麼樣的情況下使用它。其它課程很少會涉及這些,但這些資訊對於初學者理解更廣泛的背景很重要。

四、高階機器學習專項課程

這是關於機器學習的另一個高階課程。如果你想盡可能多地學習機器學習技術,該專項課程就是一個很好的選擇。

這門課程的教學非常好:很精彩,而且簡明扼要。由於這是一門高階課程,因此你需要更多的數學知識。如果你已經參加了一門初級課程,並且複習了線性代數和微積分,這門課將是你補充機器學習其它專業知識的很好選擇。

本課程涵蓋的大部分內容對許多機器學習專案至關重要。

  • 課程提供者:俄羅斯國家研究型高等經濟大學(National Research University Higher School of Economics,HSE)

  • 費用:免費;如需課程證照,則 49 美元/月

課程結構:

1. 深度學習導論

  • 優化簡介

  • 神經網路簡介

  • 影像深度學習

  • 無監督表徵學習

  • 序列深度學習

  • 最終專案

2. 如何在資料科學競賽中獲勝:向頂尖 kaggler 學習

  • 介紹和回顧

  • 模型的特徵處理和生成

  • 最終專案說明

  • 探索性資料分析

  • 驗證

  • 資料洩露

  • 度量優化

  • 高階特徵工程 1

  • 超引數優化

  • 高階特徵工程 2

  • 整合

  • 競賽介紹

  • 最終專案

3. 機器學習貝葉斯方法

  • 貝葉斯方法和共軛先驗簡介

  • 期望最大化演算法

  • 變分推斷和隱含狄利克雷分佈(LDA)

  • 馬爾科夫鏈蒙特卡洛

  • 變分自編碼器

  • 高斯過程和貝葉斯優化

  • 最終專案

4. 實用強化學習

  • 簡介

  • 強化學習核心:動態規劃

  • 無模型方法

  • 基於近似值的方法

  • 基於策略的方法

  • 探索

5. 計算機視覺中的深度學習

  • 影像處理和計算機視覺簡介

  • 視覺識別的卷積特徵

  • 目標檢測

  • 目標跟蹤和動作識別

  • 影像分割與合成

6. 自然語言處理

  • 概念介紹和文字分類

  • 語言建模和序列標註

  • 語義向量空間模型

  • 序列到序列任務

  • 對話系統

7. 用機器學習應對大型強子對撞機的挑戰

  • 面向資料科學家的粒子物理學導論

  • 粒子鑑別

  • 在稀有衰變中探索新物理學

  • 在新 CERN 實驗中用機器學習尋找暗物質暗示

  • 檢測器優化

完成該系列課程大概需要 8-10 個月的時間,所以如果你從今天開始學習,在近一年的時間裡,你將學到大量關於機器學習以及前沿應用的知識。

在這幾個月裡,你還將建立幾個真正的專案。這些專案將極大豐富你的簡歷,讓你的 GitHub 更吸引人。

五、機器學習

這是數學基礎要求最高的一門高階課程。你的線性代數、微積分、概率、程式設計基礎都需要非常牢固。該課程的有趣程式設計作業可以使用 Python 或 Octave 完成,但不提供關於這兩種語言的課程。

該課程最大的亮點在於其涵蓋了機器學習的概率方法。如果你之前讀過《Machine Learning: A Probabilistic Perspective》等教科書,那麼這門課程將成為良好的補充。

  • 課程提供者:哥倫比亞大學

  • 費用:免費;如需課程證照,則需 300 美元

課程結構:

  • 最大似然估計、線性迴歸、最小二乘法

  • 嶺迴歸、偏差-方差、貝葉斯法則、最大後驗概率推理

  • 最近鄰分類、貝葉斯分類器、線性分類器、感知機

  • Logistic 迴歸、拉普拉斯近似、核方法、高斯過程

  • 最大間隔、支援向量機(SVM)、樹、隨機森林、Boosting 演算法

  • 聚類、K-均值、EM 演算法、缺失資料

  • 混合高斯過程、矩陣分解

  • 非負矩陣分解、隱因子模型、主成分分析及其變體

  • 馬爾科夫模型、隱馬爾科夫模型

  • 連續狀態空間模型、關聯分析

  • 模型選擇、未來走向

許多針對初學者的課程可能已經介紹過上述很多主題,但這個課程的數學卻是實打實的。如果你已經學過這些,想在數學上更進一步,並且想通過做程式設計作業推匯出一些演算法,那麼這個課程值得一試。

學習指南

首先介紹一下多數機器學習課程需要的知識儲備。

課程知識儲備

高階課程需要以下知識儲備:

  • 線性代數

  • 概率

  • 微積分

  • 程式設計

這些是理解機器學習內在工作原理的必備知識。許多初學者課程通常要求至少有一些程式設計基礎,並熟悉線性代數的基礎知識,如向量、矩陣及其符號。

本文提及的第一份課程——吳恩達的《機器學習》複習了大部分所需數學知識,但如果你之前沒有學過線性代數,那麼同時學習機器學習和線性代數可能會有點困難。

如果你需要溫習數學基礎知識,請參考以下建議:

推薦學習 Python,因為多數機器學習課程用的程式語言都是 Python。即使你學的是吳恩達的《機器學習》課程(該課程用 Octave),你也應該抽時間學一下 Python,因為早晚都得用到。dataquest.io 也是一份極好的 Python 資源,其互動式瀏覽器環境中有很多免費的 Python 課程。

這些知識儲備有助於初步瞭解演算法的工作原理。

基礎演算法

以下是大家需要熟悉和練習使用的基礎演算法集合:

  • 線性迴歸

  • Logistic 迴歸

  • k-均值聚類

  • k-最近鄰

  • 支援向量機(SVM)

  • 決策樹

  • 隨機森林

  • 樸素貝葉斯

這些演算法是必須瞭解的,當然還有很多其他演算法。上述課程介紹了這些演算法及其變體。理解這些技術的原理以及何時使用它們對處理新專案非常重要。

除了這些基礎演算法之外,還有一些比較高階的技術需要學習:

  • 整合

  • Boosting

  • 降維

  • 強化學習

  • 神經網路和深度學習

這只是開始,這些演算法通常是最有趣的機器學習解決方案中會使用到的,它們對你的工具箱來說也是個有效的補充。

與基礎技術一樣,每學習一項新工具,你就要直接將其應用到專案中,以加深理解、融會貫通。

解決專案

線上學習機器學習很有難度,當然回報也很大。不過你要記住,只看講課視訊、做測驗並不能證明你真的在學習教材。如果你建立一個與課程使用資料和目標皆不同的專案,那麼你會學到更多。

在你剛開始學習機器學習基礎知識時,你就應該尋找一些有趣的資料,以便實踐新技能。上述課程將使學習者瞭解何時應用演算法,因此在自己的專案中應用機器學習演算法是一項不錯的實踐。

通過試錯、探索和反饋,你會發現如何使用不同的技術、如何衡量結果、如何分類或預測。關於 ML 專案,這裡有一份示例列表,參見:https://github.com/NirantK/awesome-project-ideas。

解決專案會幫助你更好、更高階地理解機器學習。如果你開始瞭解更高階的概念(如深度學習),那麼將有無數種技術和方法去理解和使用。

閱讀新研究

機器學習是一個快速發展的領域,每天都有新技術和應用出現。你掌握了機器學習基礎知識之後,可以閱讀自己感興趣的研究論文。

有一些網站可以即時獲取感興趣領域的新論文。比如谷歌學者,輸入關鍵詞「machine learning」和「twitter」,或其他感興趣的主題,點選「Create Alert」,即可通過電子郵件獲取相關新論文通知。

養成每週閱讀提醒郵件的習慣,瀏覽論文以確定是否有閱讀的必要,然後深入理解某項研究的具體內容。如果某些研究與你正在做的專案相關,你可以看看是否可以將這些技術應用到自己的問題上。

結語

機器學習是一個非常有趣的領域,值得你去學習和體驗,希望在這裡你可以找到一個適合自己的課程。

機器學習是資料科學的一個重要組成部分,如果你對統計、視覺化、資料分析等方面感興趣的話,可以參考關於頂級資料科學課程推薦的文章:https://www.learndatasci.com / best-data-science-online-courses /。選機器學習課程怕踩雷?有人幫你選出了top 5優質課

原文連結:https://medium.com/@LearnDataSci/top-5-machine-learning-courses-for-2019-8a259572686e


相關文章