經常有一些學弟在QQ或者郵箱上面問我, 機器學習是什么? 我要怎么學習機器學習? 機器學習要如何入門/上手 等類似的問題.
現在我索性就發個博客出來, 以后你們直接來看這個文章就好了~
機器學習是一門研究如何從已有的數據樣本中發現該數據樣本的數學模型, 而后利用該數學模型對未知數據進行預測的學科.
從學科分類上面來說, 機器學習算是計算統計學與計算機科學的交叉學科. 也因此在不同的大學, 機器學習會隸屬於不同的院系. 比如在美國的斯坦福大學,卡內基梅隆大學以及英國的南安普頓大學的計算科學院系都有開始機器學習這門課程(值得一提的是,不同於在其它學校機器學習只是一個專業, 在卡內基梅隆大學機器學習是獨立的一個系http://www.ml.cmu.edu/). 而在加州大學伯克利分校的機器學習課程則開設在統計系, 不過該校計算機科學學院也有Practical Machine Learning這門課.
接下來我們談談機器學習的應用, 也是為什么近些年機器學習特別火的原因.
機器學習的常見應用包括:
搜索引擎(利用歷史點擊數據把用戶經常點擊的結果排在前面)
語音識別技術, 自然語言處理(IBM WATSON, IPHONE 的Siri, 微軟的小冰這一類的聊天微軟[機器人小冰有什么不一樣?])
人臉識別(人臉識別新技術准確率超99%:比肉眼更加精准)
汽車無人駕駛技術(谷歌利用機器學習幫助無人駕駛汽車識別行人)
推薦系統(比如每日頭條上面的新聞推薦[今日頭條張一鳴:借機器學習給產品帶來的價值]
網易雲音樂的私人FM, 京東上面的猜你喜歡, QQ聊天窗口上面推薦的廣告)
郵件的反垃圾過濾系統(谷歌:人工智能將垃圾郵件攔截率提升至99.9%)
金融機構的風險評估系統,反詐騙系統等(Using machine learning and stream computing to detect financial fraud)
人體基因序列分析, 蛋白質結構預測
日常天氣預報以及天文現象預測等, (比如IBM研究院成功將太陽活動和風力預報的精確度提高了30%)
潛在犯罪預測(美國一警局率先利用預測犯罪系統 降低犯罪率)
以及各個行業的專家系統(該挑哪個心理醫生?IBM Watson會告訴你)等等.
簡單來說機器學習正在成為各行各業都會經常使用到的分析工具.
前文說道, 機器學習研究的是如何從已有的數據樣本中發現該數據樣本的數學模型, 而后利用該數學模型對未知數據進行預測的學科. 可能有的同學看到這句話時會問什么是數學模型? 什么是未知數據?
數學模型確切來說還沒有一個統一的准確的定義, 但是我們可以簡單的把數學模型當作是一組方程或者公式. 比如說小學時, 我們學過計算平均速度的數學模型, 中學時學過重力加速度的數學模型. 使用這些數學模型能夠幫助我們不必通過實驗就可以直接計算(預測)在不同環境(參數)下的物體的平均速度或者瞬時速度
未知數據就是當我們已經有了數據模型時, 如果新的一批數據我們只知道參數而不知道結果的數據(比如 知道了加速度模型, 求鉛球在自由落體時, 想求第4秒的瞬時速度, 這個瞬時速度就是一個未知的數據)
別看發現數據樣本的數學模型看起來有點不明覺厲的樣子, 實際上大家從小學開始就已經學會如何在樣本中發現數學模型了! 簡單來說就是解方程.
舉個一個例子來說:
我們班的同學小謝讀三年級時去奶奶家玩, 奶奶家養了好多雞. 奶奶想考考小謝, 如果三只雞有6條腿,那么10只雞會有多少條腿?
小謝當時心想 假設 每只雞有x條腿 通過創建方程 3 x X = 6 可以算出 x=2. 也就是說雞腳的數量= 2 x 雞的數量. 用數學模型來表達就是 Y=2 x X. 所以10只雞有 Y = 2 x X = 2 x 10 = 20 條腿.
換一個復雜一點的例子:
小謝讀六年級時, 在數學課上解過一道數學題.
已知直線經過點A(3,8) B(9,20) 與C點的橫坐標x=20, 求C點的縱坐標y
當時小謝寫道
解: 由直接方程 a x + b = y 可得方程組
3a +b = 8
9a +b = 20
解方程等 b = 2, a =2 可得該直線為 y = 2x+2 因此當x=20時 y=2*20+2 =42
再來一個再復雜一些的
這是小謝在初中數學課上才學到的!
如下圖所示,拋物線y=ax2+bx+c經過點A(-3,0),B(1,0),C(0,-3).求拋物線在D點的坐標!;
解: 由於拋物線y=ax2+bx+c經過A(-3,0),B(1,0),可設拋物線的解析式為:y=a(x+3)(x-1),將C點坐標(0,-3)代入,得:a(0+3)(0-1)=5,解得a=1,則y=(x+3)(x-1)=x2+2x-3,所以拋物線的解析式為:y=x2+2x-3
當D點橫坐標x=-1.5時, D點的縱坐標為 -3.75
好了, 同學們上面的三個例子簡單明了的描述了 機器學習最重要的兩個步驟:
1. 發現模型(比如通過計算得到Y =2 x X方程式, 通過兩個點確定直線方程, 通過三個點確定拋物線方程) ---專業點描述就是 訓練的過程
2. 使用模型進行預測(比如 使用方程式計算10只雞的雞腿數量, 通過橫坐標直接計算直線與拋物線的縱坐標)
好了, 正如大家所感受到的, 機器學習就是一個類似解方程的過程
.
.
.
.
.
.
同學A: 好像都會了耶,
同學B: 不過,.. 好像哪里不對....
同學C: 是了! 我們是怎么知道直線的方程為ax+b=y, 拋物線的方程為y=ax2+bx+c的?
同學D: 額, 萬一我們不知道那些個方程怎么辦?
(那就且聽下回分解吧 ~~)