輕鬆看懂機器學習十大常用演算法

不會停的蝸牛發表於2016-11-30

通過本篇文章可以對ML的常用演算法有個常識性的認識,沒有程式碼,沒有複雜的理論推導,就是圖解一下,知道這些演算法是什麼,它們是怎麼應用的,例子主要是分類問題。

每個演算法都看了好幾個視訊,挑出講的最清晰明瞭有趣的,便於科普。
以後有時間再對單個演算法做深入地解析。

今天的演算法如下:

  1. 決策樹
  2. 隨機森林演算法
  3. 邏輯迴歸
  4. SVM
  5. 樸素貝葉斯
  6. K最近鄰演算法
  7. K均值演算法
  8. Adaboost 演算法
  9. 神經網路
  10. 馬爾可夫

1. 決策樹

根據一些 feature 進行分類,每個節點提一個問題,通過判斷,將資料分為兩類,再繼續提問。這些問題是根據已有資料學習出來的,再投入新資料的時候,就可以根據這棵樹上的問題,將資料劃分到合適的葉子上。

輕鬆看懂機器學習十大常用演算法

2. 隨機森林

視訊

在源資料中隨機選取資料,組成幾個子集

輕鬆看懂機器學習十大常用演算法

S 矩陣是源資料,有 1-N 條資料,A B C 是feature,最後一列C是類別

輕鬆看懂機器學習十大常用演算法

由 S 隨機生成 M 個子矩陣

輕鬆看懂機器學習十大常用演算法

這 M 個子集得到 M 個決策樹
將新資料投入到這 M 個樹中,得到 M 個分類結果,計數看預測成哪一類的數目最多,就將此類別作為最後的預測結果

輕鬆看懂機器學習十大常用演算法

3. 邏輯迴歸

視訊

當預測目標是概率這樣的,值域需要滿足大於等於0,小於等於1的,這個時候單純的線性模型是做不到的,因為在定義域不在某個範圍之內時,值域也超出了規定區間。

輕鬆看懂機器學習十大常用演算法

所以此時需要這樣的形狀的模型會比較好

輕鬆看懂機器學習十大常用演算法

那麼怎麼得到這樣的模型呢?

這個模型需要滿足兩個條件 大於等於0,小於等於1
大於等於0 的模型可以選擇 絕對值,平方值,這裡用 指數函式,一定大於0
小於等於1 用除法,分子是自己,分母是自身加上1,那一定是小於1的了

輕鬆看懂機器學習十大常用演算法

再做一下變形,就得到了 logistic regression 模型

輕鬆看懂機器學習十大常用演算法

通過源資料計算可以得到相應的係數了

輕鬆看懂機器學習十大常用演算法

最後得到 logistic 的圖形

輕鬆看懂機器學習十大常用演算法

4. SVM

視訊

support vector machine

要將兩類分開,想要得到一個超平面,最優的超平面是到兩類的 margin 達到最大,margin就是超平面與離它最近一點的距離,如下圖,Z2>Z1,所以綠色的超平面比較好

輕鬆看懂機器學習十大常用演算法

將這個超平面表示成一個線性方程,線上上方的一類,都大於等於1,另一類小於等於-1

輕鬆看懂機器學習十大常用演算法

點到面的距離根據圖中的公式計算

輕鬆看懂機器學習十大常用演算法

所以得到 total margin 的表示式如下,目標是最大化這個 margin,就需要最小化分母,於是變成了一個優化問題

輕鬆看懂機器學習十大常用演算法

舉個栗子,三個點,找到最優的超平面,定義了 weight vector=(2,3)-(1,1)

輕鬆看懂機器學習十大常用演算法

得到 weight vector 為(a,2a),將兩個點代入方程,代入(2,3)另其值=1,代入(1,1)另其值=-1,求解出 a 和 截矩 w0 的值,進而得到超平面的表示式。

輕鬆看懂機器學習十大常用演算法

a 求出來後,代入(a,2a)得到的就是 support vector

a 和 w0 代入超平面的方程就是 support vector machine

5. 樸素貝葉斯

視訊

舉個在 NLP 的應用

給一段文字,返回情感分類,這段文字的態度是positive,還是negative

輕鬆看懂機器學習十大常用演算法

為了解決這個問題,可以只看其中的一些單詞

輕鬆看懂機器學習十大常用演算法

這段文字,將僅由一些單詞和它們的計數代表

輕鬆看懂機器學習十大常用演算法

原始問題是:給你一句話,它屬於哪一類
通過 bayes rules 變成一個比較簡單容易求得的問題

輕鬆看懂機器學習十大常用演算法

問題變成,這一類中這句話出現的概率是多少,當然,別忘了公式裡的另外兩個概率

栗子:單詞 love 在 positive 的情況下出現的概率是 0.1,在 negative 的情況下出現的概率是 0.001

輕鬆看懂機器學習十大常用演算法

6. K最近鄰

視訊

k nearest neighbours

給一個新的資料時,離它最近的 k 個點中,哪個類別多,這個資料就屬於哪一類

栗子:要區分 貓 和 狗,通過 claws 和 sound 兩個feature來判斷的話,圓形和三角形是已知分類的了,那麼這個 star 代表的是哪一類呢

輕鬆看懂機器學習十大常用演算法

k=3時,這三條線連結的點就是最近的三個點,那麼圓形多一些,所以這個star就是屬於貓

輕鬆看懂機器學習十大常用演算法

7. K均值

視訊

想要將一組資料,分為三類,粉色數值大,黃色數值小
最開心先初始化,這裡面選了最簡單的 3,2,1 作為各類的初始值
剩下的資料裡,每個都與三個初始值計算距離,然後歸類到離它最近的初始值所在類別

輕鬆看懂機器學習十大常用演算法

分好類後,計算每一類的平均值,作為新一輪的中心點

輕鬆看懂機器學習十大常用演算法

幾輪之後,分組不再變化了,就可以停止了

輕鬆看懂機器學習十大常用演算法

輕鬆看懂機器學習十大常用演算法

8. Adaboost

視訊

adaboost 是 bosting 的方法之一

bosting就是把若干個分類效果並不好的分類器綜合起來考慮,會得到一個效果比較好的分類器。

下圖,左右兩個決策樹,單個看是效果不怎麼好的,但是把同樣的資料投入進去,把兩個結果加起來考慮,就會增加可信度

輕鬆看懂機器學習十大常用演算法

adaboost 的栗子,手寫識別中,在畫板上可以抓取到很多 features,例如 始點的方向,始點和終點的距離等等

輕鬆看懂機器學習十大常用演算法

training 的時候,會得到每個 feature 的 weight,例如 2 和 3 的開頭部分很像,這個 feature 對分類起到的作用很小,它的權重也就會較小

輕鬆看懂機器學習十大常用演算法

而這個 alpha 角 就具有很強的識別性,這個 feature 的權重就會較大,最後的預測結果是綜合考慮這些 feature 的結果

輕鬆看懂機器學習十大常用演算法

9. 神經網路

視訊

Neural Networks 適合一個input可能落入至少兩個類別裡

NN 由若干層神經元,和它們之間的聯絡組成
第一層是 input 層,最後一層是 output 層

在 hidden 層 和 output 層都有自己的 classifier

輕鬆看懂機器學習十大常用演算法

input 輸入到網路中,被啟用,計算的分數被傳遞到下一層,啟用後面的神經層,最後output 層的節點上的分數代表屬於各類的分數,下圖例子得到分類結果為 class 1

同樣的 input 被傳輸到不同的節點上,之所以會得到不同的結果是因為各自節點有不同的weights 和 bias

這也就是 forward propagation

輕鬆看懂機器學習十大常用演算法

10. 馬爾可夫

視訊

Markov Chains 由 state 和 transitions 組成

栗子,根據這一句話 ‘the quick brown fox jumps over the lazy dog’,要得到 markov chain

步驟,先給每一個單詞設定成一個狀態,然後計算狀態間轉換的概率

輕鬆看懂機器學習十大常用演算法

這是一句話計算出來的概率,當你用大量文字去做統計的時候,會得到更大的狀態轉移矩陣,例如 the 後面可以連線的單詞,及相應的概率

輕鬆看懂機器學習十大常用演算法

生活中,鍵盤輸入法的備選結果也是一樣的原理,模型會更高階

輕鬆看懂機器學習十大常用演算法

相關文章