實在是太多朋友想要知道「如何成為一名資料科學家?」雖然我是一名菜鳥,但大概算是個容易捕捉到的人(?),所以我想稍微對幾個時常被問到的問題作回答。其實資料科學的領域很廣,隨著資料型態不同,應用情境與需要的技巧也會差很多,因此我只能根據我自己的情況來跟大家分享我對於這些問題的想法。如果你有想問的問題,歡迎留言給我,我一周會出一個問題的分享喔!
本周問題:當資料科學家數學是不是要很好?
雖然(我是真的覺得)重點是分析邏輯、對資料的敏感度、對特定領域的了解,但認真說實話,我覺得這題答案是對,數學是資料科學家很重要的武器,所以對數學絕對不能排斥。當然,如果只是用套件去做,這些數學可能不是很重要,但很多時候如果不曉得使用的模型及理論是什麼,一來可能是分析的結果不會很好,二來是可能會因為模型誤用而造成很大的風險。所以我覺得還是要有一定的數學底子,才能學會更多有用的模型,並能了解這些模型的限制。
基本技能:微積分與線性代數
我想在更深入去討論一下資料科學家會用到那些數學工具。首先,一定要有基本的微積分基礎,不論你是做統計估計或是機器學習,基本上在作的都是「函數逼近」(functional approximation),因此要了解這些資料分析模型,微積分是必備工具。但說真的,以應用面來看,你只要會多變數的微分與積分、解多變數方程式的極大極小值、多變數的泰勒展式、級數與函數的收斂,這樣就很足夠了!高等微積分雖然有些幫助,但我覺得並不是必要的。
另一個一定要會的工具是線性代數,包括:向量空間、內積空間、矩陣的秩(rank)、特徵值與特徵向量 (eigenvalue & eigenvector)、spectral decomposition、奇異值分解 (singular value decomposition)、正交基底(orthogonal basis) 與正交投影(orthogonal projection)。我覺得線性代數的重要性可能超過微積分,因為大部分的資料科學家都是用「矩陣」在思考統計或機器學習模型,也會用矩陣去想實際的資料,因此線性代數非常重要。
常用技能:機率論與統計方法
機率論的基礎,機率論不是指排列組合或古典機率,而是要了解隨機變數(random variable)、聯合分配(joint distribution)、大數法則(law of large number)、中央極限定理(central limit theorem)。機率論是處理「隨機性」最有效的工具,幾乎所有的資料分析方法都是建立在機率論的理論框架,比如說:機器學習建立在「empirical risk minimization」以及「concentration of measure」上,增強學習 (AI很重要的一環) 是建立在「Markov decision process」上,統計是建立在「random sample」上,全部都需要機率理論的幫忙。
至於統計的部分,我倒覺得是不一定,尤其是在deep learning這個領域,統計扮演的角色比重不高。不過通常很好的資料科學家,就算是電腦科學家出身的,也對統計有一定的著墨,比如說計算機圖學、通訊理論、機器學習、網絡資料分析、文字探勘與資訊檢索、信號處理,其實都滿多統計方法跟架構被高度應用。最重要的統計方法一個是「最大概似法」(maximum likelihood estimation)、一個是EM (expectation-maximization) 演算法、一個是「迴歸分析」(regression analysis)。其他我自己工作有使用過的統計方法包括:多變量分析、時間序列分析、實驗設計。
常用技能:機器學習
最後不得不談這幾年超盛行的機器學習了!就我學習機器學習的經驗來說,撇去程式能力不提,如果你上面的技能都很熟悉,那麼機器學習的模型與演算法就不算太困難!當然,有一些特殊的方法,比如說tree相關的演算法,需要對樹狀資料結構有一定的認識,但整體而言,機器學習會用到的數學工具不外乎就是以上提到的微積分、線性代數、機率論、MLE等。
小結:這些知識要去哪裡學?
其實我覺得對於任何領域來說,數學都是會得越多,之後運用的彈性就越大,因此我還有補一些其他的知識,像是隨機過程、傅立葉分析、最佳化、壓縮感知等。大四剛轉統計時,其實我花了非常多時間補數學知識 。雖然我本來數學還算不錯,但我其實線性代數、機率論、數理統計都學得不大好,因此我大四真的每天都花很多時間補數學知識,讀書讀到口舌成瘡XD
幸運的是很多領域都有很棒的線上課程,在此我就不藏私的大公開「讓我全部看完的」超棒線上課程!至於我花了多少時間看完呢?微積分一、二是大一看的,線性代數是大二看的,機率論與統計學是大三看得,線性模式、應用多變量分析是大四看得,機器學習基石與技法是碩一上修的,所以如果學會這些東西可能就差不多要個2-3年吧!
- 微積分一、二 (高淑蓉老師)
http://ocw.nthu.edu.tw/ocw/index.php?page=course&cid=7
http://ocw.nthu.edu.tw/ocw/index.php?page=course&cid=34
- 線性代數 (巫木誠老師)
http://ocw.nctu.edu.tw/course_detail.php?bgid=3&nid=50#.WB9Jxy197IU
(這邊得提一下,其實我線代後來發現巫老師教的在我論文要做的領域還不夠深,所以我有再去把Friedberg的線性代數在看過一次,但我覺得巫老師教的應該就夠了!)
- 機率論、統計學 (鄭少為老師)
http://www.stat.nthu.edu.tw/~swcheng/Teaching/math2810/index.html
http://www.stat.nthu.edu.tw/~swcheng/Teaching/math2820/index.html
- 應用多變量分析 (鄭少為老師)
http://www.stat.nthu.edu.tw/~swcheng/Teaching/stat5191/index.html
(這門課程其實我是在清大統研所修謝文萍老師的課,但因為後來謝老跟鄭老師上的章節不一樣,所以我有把CCA跟MDS那邊看完)
- 機器學習基石與技法 (林軒田老師)
https://www.youtube.com/playlist?list=PLXVfgk9fNX2I7tB6oIINGBmW50rrmFTqf
https://www.youtube.com/playlist?list=PLXVfgk9fNX2IQOYPmqjqWsNUFl2kpk1U2
(這門課我是修實體課程,我覺得寫作業比聽課更重要)
有關 David’s Perspective 的最新文章,都會發布在大鼻的 Facebook 粉絲專頁,如果你喜歡大鼻的文章,還請您不吝嗇地按讚或留言給我喔!
你好
近期資料科學領域感覺蓬勃發展
大學中的電機系 資工系的教授都開始研究機器學習領域
我想請問一下 這兩個系之間研究上有什麼關鍵性的差異嗎?
因為我既不是資工系也不是電機系,所以我也不知道欸QQ