標籤:

想學習「機器學習」,需要學習哪些先導課程?

自己有的那點基礎就是本科的計算機課程,如果想學習研究機器學習需要先去學哪些課程?聽朋友說只要會《線性代數》和《概率統計》就可以開始看了?真是這樣嗎


http://www.ml-class.org 跟這套課程吧,看到裡面哪塊數學不懂了補哪塊。Stanford的公開課,裡面有課程有練習,機器學習內容涉及也相當的廣。


具備理工科本科的數學水平就可以開始了,其他的慢慢補。


初階版(適合做演算法工程師):

  • 概率論與統計

    • 概率與統計 北京大學出版社 陳家鼎
    • DeGroot, Morris H., and Mark J. Schervish. Probability and Statistics. 3rd ed. Boston
  • 高等代數、線性代數
    • Introduction to Linear Algebra, Fourth Edition by Gilbert Strang
  • 多元統計分析

    • 應用多元統計分析 高惠璇 編著, 北京大學出版社
    • Applied Multivariate Statistical Analysis (6th Edition) ,Richard A. Johnson, Dean W. Wichern
  • 微積分
    • 隨便一本教材即可

掌握上述內容,基本上大多數的演算法都能看懂了,不夠的知識可以臨時補一補。

進階版(適合學術研究要求):

借鑒Andrew Ng的得意門生,umich 助理教授,Honglak Lee的要求:

  • Probabilistic Graphical Models 概率圖模型

  • Linear and nonlinear optimization 線性與非線性優化
  • Convex optimization 凸優化
  • Real Analysis 實分析
  • Functional Analysis 泛函分析
  • Stochastic Process 隨機過程
  • Theory of Probability 概率論

如果你不願意一點一點的再來學統計,其實還有一個奇葩的概率統計知識點全集的小冊子:

CMU教授 Larry Wasserman的力作:

All of Statistics——A Concise Course in Statistical Inference(有電子版可以直接下載)


如果是入門的話,不需要學那麼多數學。會基本的高數知識,基本的線性代數知識,有基本的概率統計知識就可以了。如果要深入學習,數學要用再學,不要過度學習。計算機雖然用到了數學,但畢竟不是數學。


如果你想看 Tom Michell 的《機器學習》,可能需要一點關於邏輯人工智慧的基礎,因為 Michell 的書較舊,那時「經典 AI (classical AI)」還未過時。 經典 AI 即那些基於數理邏輯的 AI,例如 Prolog,謂詞邏輯 (predicate logic),等。 在很多標準的 AI 教科書裏可找到介紹。

自 90 年代 統計學習 (statistical learning) 的興起,很多人完全不再顧經典 AI。 但我個人認為經典 AI 其實仍然是 strong AI (強人工智慧) 的關鍵。 近年復興的 relational learning (關係學習) 也是屬於邏輯 AI 範疇。

PS: 「概率統計」其實都不是真的需要先修,只要基本「概率論」就行,例如 Bayes 定律 和 Bayes 網路,最好的介紹是 《AI - a modern approach》。


主要是能夠把線性代數、概率統計那些內容和機器學習演算法相互結合,理解貫徹透徹,最好能有人帶著一起學習。我最早的時候自己買了很多書,一個個啃,還是有些暈暈的,更別談實際應用了,還好,後來找到有人教我學了,面對面的,結果還不錯,現在已經在機器學習方向工作快一年了


基本的課程:

高等數學

線性代數

矩陣論

概率與統計


首先說數學課,不是所有都會用到,但是如果都精通自然最好。因為數學是工具,如果對工具都有恐懼的話,前進會非常的困難。

  • 高等代數。注意,不是線性代數,如果你想做serious的機器學習,那麼面向理工科的線性代數是不夠用的,至少在看證明,以及自己想證明什麼的時候。
  • 數學分析
  • 概率論
  • 統計學。這裡分開說是因為普通高校用的那本教材太集大成了,等你看演算法的時候,就會發現當年書上有而老師沒講甚至書上沒寫的正是你要用的。當然如果書上寫的你都不看就沒有什麼搞頭了。
  • 矩陣論
  • 集合論
  • 實變函數,泛函分析。這兩門課寫在這裡是因為或多或少在分析演算法的時候會用到,但是不會非常多。

計算機編程的相關內容,請參見:http://www.zhihu.com/question/19882915/answer/13244009

--Update @ 2012.01.04

剛剛看到Matt Might對程序員的12點新年祝願 http://matt.might.net/articles/programmers-resolutions/

抄錄裡面關於數學的內容

At its heart, computer science is a mathematical discipline.

Good mathematicians make good programmers.

Do not let your mathematical faculty wither.

Consider an annual one-month brush-up on one of these topics:

  • Logic.
  • Discrete mathematics.
  • Calculus.
  • Probability.
  • Statistics.
  • Abstract algebra.
  • Number theory.
  • Category theory.
  • Order theory.

機器學習不是單純的一門計算機課程,想要學好機器學習,用好機器學習,數學是多多益善的。


這些回答到底看沒看提問者問的問題阿,《機器學習》很薄的小冊子而已,這下讓你們搞的玄乎的

咱們是搞計算機的,不是搞數學的,那本書比較簡單,可以直接看,需要數學知識的時候再去找相應的東西看,不必建立一個龐大的數學體系,至少對於你看這本書不需要


可以先看看王威廉推薦的這個:CMU的Aarti Singh教授出的《機器學習》數學基礎測試題http://www.cs.cmu.edu/~aarti/Class/10701_Spring14/Intro_ML_Self_Evaluation.pdf


題主明明問的是先導課程是什麼,為什麼大家都直接推薦AndrewNg的MAchine Learning,不過我也剛剛上完那門課,針對這門課的一點先導課程建議把~

(加粗的為強烈建議 未加粗的為參考建議)

1.數學方面

《線性代數》《概率論統計》《高等數學》《信號與系統》

線性代數里主要是矩陣的各種計算,正規化之類的。概率論中的基本概率計算,還有後期的高斯分布。高等數學的向量計算,梯度計算,還有一些基本求導。信號與系統主要是運用了系統的這個概念還有模數變換。

2.編程方面

Matlab,C語言

Matlab主要是一個數學工具,所以其實很簡單的,基本的循環,判斷,計算會就行了,(至於一些專門函數老師在課中會講。)如果想實現什麼功能可以先百度,看看有沒有現成的函數工具可以用,如果沒有再自己寫。至於C,由於它和MATLAB有著一段不可告人的關係,如果了解C,matlab玩的也會溜一點。

3.其他

正則表達式 數字圖像處理

正則表達式:針對文章處理需要了解的一點知識,內容不多,看一下很快,但是就是很繁瑣的那種。數字圖像處理,後面圖像處理的時候方便了解像素的一些概念。

其實斯坦福的這門公開課是針對普通人的,所以有些不明白具體數學計算大概學起來也是沒問題的,但是了解之後可以幫助你看清整個演算法的脈絡,如果你想深入學習的話,那麼這些知識是必不可少的。


先寫代碼,遇到不懂的就去學,代碼驅動學習,而不是反過來。


online open class上Andrew Ng的課machine learning


個人覺得,機器學習,數據挖掘這種東西,數學功底和編程能力是比不可少的,我們專業做這個的,編程能力強的,有機器學習的背景的,都進了tab……


正在上AndrewNg的Coursera課程,感覺沒什麼問題

本科的時候學過的數學是《微積分》《線性代數》《概率論與數理統計》,用得最多的就是線性代數——可能是因為線性代數是我本科投入時間最多的數學,學得最紮實,我沒覺得數學不夠用。

另外至少就AndrewNg的課程而言,只要你對向量和矩陣有個基本的了解基本上就問題不大,反正編程實現的時候用的是Octave/MATLAB,不可能讓你去手算矩陣的那些東西的……


這本書差不多可以直接看,如果發現有不熟悉的基礎數學,在《模式分類》和PRML書後都有比較好的簡單的review。


最重要的: probablity/statistics, linear algebra, optimization


我是新手,至少在Coursera上跟了幾門課。其中最難的是台大課程。就我個人感覺而言,一般需要補課的是線性代數。反正這門課在我讀大學的時候是分數蠻高的,但是不知道有什麼用,就當一門數學來學而已。學了機器學習才發現這個真心是基礎,所以值得花時間稍微學下。感覺主要涉及的就是矩陣運算、性質和梯度之類的,其他較少。腦子裡要始終形成用矩陣做並行計算的意識,感覺也不容易。

概率當然也是基礎,不過一般的概率都還是掌握的吧,有邏輯思路的,自己推導概率都不難。反而是統計要稍微看下,還是涉及一些概念的。

另外還想學習的話,感覺凸優化涉及比較多。


除了《線性代數》和《概率統計》還需要《高等數學》……


先學習《語言學》,了解語言的形成過程。


推薦閱讀:

目標檢測(5)-Faster RCNN
Udacity的納米學位 (Nano degree)怎麼樣?
論文導讀 | TFX:基於TensorFlow可大規模擴展的機器學習平台
Andrew Ng對 Geoffrey Hinton 的採訪:致敬老爺子的一路堅持!

TAG:機器學習 |