最近有位讀者透過粉專私訊詢問:
讀了一篇你寫的資料科學三個面向,覺得自己在資料科學領域對 ‘解釋’ 最有興趣,由於目前所學多半著重在 Machine Learning Algorithms ,雖然上過初統但要解釋時卻還覺得自己的了解有點模糊,想請教你在這一塊有沒有推薦的課程呢?
突然發現,資料科學領域線上課程大彙整(全部免費) 是一年半前的文章了!在這段時間,我也看了不少新課程,也有一些課程已經沒有在開課了,所以我決定來更新一下課程分享。我會陸續更新以下幾個主題的課程分享:
- 資料科學基本功(數學、機率、統計、程式設計等)篇
- 解釋性建模(實驗設計、問卷調查、迴歸分析、機率圖模型等)篇
- 機器學習(機器學習、深度學習、增強學習、相關應用)篇
裡面可能有些課程是以前推薦過的,有些課程是我新發現的(不一定已經開課/我完全看完),分享給大家參考!
機器學習課程選擇的原則
一開始接觸機器學習的朋友們,我會建議注意以下的大原則:
- 選擇「概論型」的課程:
這類課程談論的議題比較廣,包括機器學習理論 (尤其是 VC theory 跟 Generalization issues)、監督式學習、非監督式學習等。挑選這樣的課程可以避免你見樹不見林。了解整個機器學習世界中的重要領域與概念,之後會比較好向下專研深度學習 (deep learning)、表示學習 (represenntation learning)、增強學習 (reinforcement learning) 、轉移學習 (transfer learning) 等議題,或是研究應用領域,如:電腦視覺、語音處理、自然語言理解、商業分析、金融交易等。
- 依據自己的數學能力挑選課程:
機器學習作為數學統計與程式設計的交叉學科,不可避免會碰到數學,因此就算是概論型課程難易度變異也頗大,因此要謹慎衡量自己的數學程度。如果你跟微積分和線性代數不熟,就要挑選難度較淺、強調架構與概念的課程;如果你除了微積分跟線性代數外,還跟機率論很熟,建議你挑選一門有討論機器學習理論的課程。
- 不要只學程式操作,要學會演算法的精神:
機器學習最怕的就是只知道怎麼使用 scikit-learn、Tensorflow、keras、H2O 之類的套件,而不知道演算法背後的原理。知道原理的好處有:(1) 了解參數是怎麼影響演算法的,能夠用比較好的手法做 parameter tuning (2) 知道為什麼某些演算法表現的特別好或是表現不好(通常跟模型與資料的特性有關) (3) 較能夠與別人溝通你的方法,增加信任感 (4) 在研讀後續較深的應用時能間比叫快上手。
機器學習通論課程
Python for DS and ML Bootcamp (https://bit.ly/2psRJXw)
- 推薦度:2 顆星 / 5 顆星
- 難易度:大一等級
- 預先知識:高中數學
- 說明:如果你不會微積分、線性代數、機率,而且也不會寫程式的話,我想這門課程可能是最適合你的。課程幾乎會從非常初階的 Python 開始,然後把一些機器學習方法與相關的 Python 套件講解一番。這門課程最大的缺點有兩個:一是要錢,二是學玩你可能什麼都不會。不過大鼻當初買了,因為我本來不會 Python,但工作上要馬上上手,所以就趕快買來惡補一下 Python 套件的語法。
Machine Learning 專項課程:華盛頓大學 (https://bit.ly/2K5JopT)
- 推薦度:5 顆星 / 5 顆星
- 難易度:大三等級
- 預先知識:簡單的微積分與線性代數
- 說明:我非常喜歡這個 Coursera 專項課程,一來是這門課程不會非常難,但卻又清楚說明許多重要的演算法與性質。同時,這個專項課程的程式作業非常好,會一步一步指引你完成作業的要求,對於初學者來說,作業雖然有點難,但應該都能夠照著指引完成,非常推薦有修過簡單大學數學與程式課但沒有學得很好的同學上。(註:Coursera 每門課程都可以免費旁聽,請大家自己去找旁聽按鈕在哪。)
Statistical Learning:史丹佛大學 (https://stanford.io/2tiPAAj)
- 推薦度:3.5 顆星 / 5 顆星
- 難易度:大四等級
- 預先知識:簡單的微積分與線性代數、統計學
- 說明:這門課程是由比較統計的角度去說明機器學習的重要模型,是由史丹佛大學的兩位統計大師所開。相較於華盛頓大學的課程,這門課程更重視模型的性質勝過模型的計算方法,因此對於模型有更透徹的了解,這門課程是比較好的選擇。雖然我挺喜歡這門課的,但他的缺點很顯然易見:R 語言的實作上面比較像是 toy example。
Machine Learning (Andrew Ng):史丹佛大學 (https://bit.ly/2t8nzfv)
- 推薦度:3.5 顆星 / 5 顆星
- 難易度:大四等級
- 預先知識:微積分與線性代數
- 說明:這門課應該可說是世界上最有名的機器學習課程,特色是「以演算法為主軸」的課程,所以相較之下比較理論一點,但這門課程的內容並不會非常難,主要是強調演算法運作架構與方法,沒有牽涉到太深的數學推導。這門課的缺點跟上面那堂課一樣:在 Matlab / Octave 的實作上主要還是 toy example。
機器學習機石與技法 (林軒田):台灣大學 (https://bit.ly/2t8nzfv)
- 推薦度:4 顆星 / 5 顆星
- 難易度:碩士班等級
- 預先知識:微積分與線性代數,最好要會機率論
- 說明:這門課程難度較高,強調演算法的數學推導,對於微積分跟線性代數要有比較好的掌握。我最喜歡這門課的地方是會把演算法是強調「為什麼要這麼想」,以及有討論 learning theory,不過缺點就是這門課程難度較高,而且在課堂上比較少實際專案的個案研究,所以比較適合想深入學習機器學習原理的朋友上。
大規模機器學習實務 (吳尚鴻):清華大學 (http://www.cs.nthu.edu.tw/~shwu/courses/ml/)
- 推薦度:5 顆星 / 5 顆星
- 難易度:碩士班等級
- 預先知識:微積分與線性代數,最好要會機率論
- 說明:如果你的數學不錯,那麼我最推薦的機器學習課程應該就是這一門了!內容很充實完整外,老師 lab demo 的 ipython notebook 非常棒,很推薦大家學習!
Statistical Machine Learning (Larry Wrassman) (https://bit.ly/1N96K87)
- 推薦度:3 顆星 / 5 顆星
- 難易度:碩士/博士班等級
- 預先知識:微積分、線性代數、數理統計
- 說明:這門課程是我非常非常喜歡的一門課(對於統計的人來說超棒的),課程很漂亮的討論了各種機器學習議題背後的統計理論,包括:RKHS、Empirical Risk Minimization、Concentration of Measure、Minimax Theory,到常見的regression, classification, clustering等技巧,有很深入的介紹。這門課算是博士班等級,所以沒有非常推薦大家去看。
深度學習相關課程
由於大鼻比較少接觸深度學習,因此下面的課程幾乎都沒有看過,只能提供課程連結給大家參考。
機器學習 ─ 結構化與深層化 (李宏毅):台灣大學 (https://bit.ly/2MDyAxu)
- 推薦度:5 顆星 / 5 顆星
- 難易度:大四/碩士班等級
- 預先知識:微積分、線性代數
- 說明:李宏毅老師的深度學習講解得非常清楚易懂,每一個步驟都有很清楚易懂的推導與講解,是入門深度學習很好的課程。課程後面也會談到比較特殊的領域,如:深度增強學習、生成對抗網路等結構,很精彩!
深度學習專項課程:deeplearning.ai (https://bit.ly/2ykxzHF)
- 推薦度:? 顆星 / 5 顆星
- 難易度:大三等級
- 預先知識:微積分、線性代數
- 說明:這門課程我只有稍微瀏覽過一下,所以沒辦法給出具體推薦。
NLP with Depp Learning:史丹佛大學 (http://web.stanford.edu/class/cs224n/)
- 推薦度:? 顆星 / 5 顆星
- 難易度:?
- 預先知識:?
- 說明:這門課程我只有稍微瀏覽過一下,所以沒辦法給出具體推薦。
CNN for Visual Recognition:史丹佛大學 (http://cs231n.stanford.edu/)
- 推薦度:? 顆星 / 5 顆星
- 難易度:?
- 預先知識:?
- 說明:這門課程我只有稍微瀏覽過一下,所以沒辦法給出具體推薦。
增強學習相關課程
Reinforcement Learning (David Silver) (http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html)
- 推薦度:4 顆星 / 5 顆星
- 難易度:碩士班等級
- 預先知識:微積分、線性代數、機率論
- 說明:David Silver 這門課程非常適合作為 RL 的入門課程,不過因為 RL 是建立在比較特別的隨機過程─ Markov decision process 上,所以對於機率論的要求會比較高,建議要有點機率基礎的人學習。
DL & RL in Finance: NYU (https://bit.ly/2I3CaNI)
- 推薦度:? 顆星 / 5 顆星
- 難易度:?
- 預先知識:?
- 說明:這門課程還沒有開課,給大家參考。
Deep Reinforcement Learning:UCB (http://rll.berkeley.edu/deeprlcoursesp17/)
- 推薦度:? 顆星 / 5 顆星
- 難易度:?
- 預先知識:?
- 說明:這門課程我只有稍微瀏覽過一下,所以沒辦法給出具體推薦。
總結,其實沒什麼好總結的
之前有人問大鼻是不是都把這些課程看完了,of course not!我平常也是有工作和個人生活的,不是整天都在專研這些知識 XD 通常我是挑一門課中幾個有興趣的主題看,除非我對於這個領域完全不熟悉才會一堂一堂看!
有關 David’s Perspective 的最新文章,都會發布在大鼻的 Facebook 粉絲專頁,如果你喜歡大鼻的文章,還請您不吝嗇地按讚或留言給我喔!
您好,最近看了大鼻許多文章分享,覺得非常實用,想問一下關於之前所說的第一類型的資料科學家,我想請問我該準備甚麼類型的線上課程呢?目前會用一些簡單的python,有在練習kaggle。謝謝~