1. 程式人生 > >【機器學習】圖解十大經典機器學習演算法

【機器學習】圖解十大經典機器學習演算法

決策樹(Decision Tree

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

決策樹原理示意圖

決策樹學習使用一個決策樹作為一個預測模型,它將對一個 item(表徵在分支上)觀察所得對映成關於該 item 的目標值的結論(表徵在葉子中)。

樹模型中的目標是可變的,可以採一組有限值,被稱為分類樹;在這些樹結構中,葉子表示類標籤,分支表示表徵這些類標籤的連線的特徵。

例子:

  • 分類和迴歸樹(Classification and Regression Tree,CART)

  • Iterative Dichotomiser 3(ID3)

  • C4.5 和 C5.0(一種強大方法的兩個不同版本)

優點:

  • 容易解釋

  • 非引數型

缺點:

  • 趨向過擬合

  • 可能或陷於區域性最小值中

  • 沒有線上學習

隨機森林(Random forest)

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

隨機森林原理示意圖

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

由S隨機生成M個子矩陣:

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

隨機森林效果展示圖

嚴格來說,隨機森林其實算是一種整合演算法。它首先隨機選取不同的特徵(feature)和訓練樣本(training sample),生成大量的決策樹,然後綜合這些決策樹的結果來進行最終的分類。

隨機森林在現實分析中被大量使用,它相對於決策樹,在準確性上有了很大的提升,同時一定程度上改善了決策樹容易被攻擊的特點。

適用情景:

資料維度相對低(幾十維),同時對準確性有較高要求時。

因為不需要很多引數調整就可以達到不錯的效果,基本上不知道用什麼方法的時候都可以先試一下隨機森林。

邏輯迴歸(Logistic Regression)

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

線性模型圖

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

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

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

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

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

LR模型曲線圖

邏輯迴歸這個名字太詭異了,我就叫它LR吧,反正討論的是分類器,也沒有別的方法叫LR。顧名思義,它其實是迴歸類方法的一個變體。

迴歸方法的核心就是為函式找到最合適的引數,使得函式的值和樣本的值最接近。例如線性迴歸(Linear regression)就是對於函式f(x)=ax+b,找到最合適的a,b。

LR擬合的就不是線性函數了,它擬合的是一個概率學中的函式,f(x)的值這時候就反映了樣本屬於這個類的概率。

適用情景:

LR同樣是很多分類演算法的基礎元件,它的好處是輸出值自然地落在0到1之間,並且有概率意義。

因為它本質上是一個線性的分類器,所以處理不好特徵之間相關的情況。

雖然效果一般,卻勝在模型清晰,背後的概率學經得住推敲。它擬合出來的引數就代表了每一個特徵(feature)對結果的影響。也是一個理解資料的好工具。

支援向量機(Support Vector Machines

要將兩類分開,想要得到一個超平面,最優的超平面是到兩類的 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。

給定一組訓練事例,其中每個事例都屬於兩個類別中的一個,支援向量機(SVM)訓練演算法可以在被輸入新的事例後將其分類到兩個類別中的一個,使自身成為非概率二進位制線性分類器。

SVM 模型將訓練事例表示為空間中的點,它們被對映到一幅圖中,由一條明確的、儘可能寬的間隔分開以區分兩個類別。

隨後,新的示例會被對映到同一空間中,並基於它們落在間隔的哪一側來預測它屬於的類別。

優點:

        在非線性可分問題上表現優秀

缺點:

  • 非常難以訓練

  • 很難解釋

樸素貝葉斯(Bayesian Algorithms

舉個在 NLP 的應用:給一段文字,返回情感分類,這段文字的態度是positive,還是negative:

圖6-1 問題案例

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

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

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

問題變成,這一類中這句話出現的概率是多少,當然,別忘了公式裡的另外兩個概率。例子:單詞“love”在positive的情況下出現的概率是 0.1,在negative的情況下出現的概率是0.001。

NB演算法結果展示圖

貝葉斯方法是指明確應用了貝葉斯定理來解決如分類和迴歸等問題的方法。

例子:

  • 樸素貝葉斯(Naive Bayes)

  • 高斯樸素貝葉斯(Gaussian Naive Bayes)

  • 多項式樸素貝葉斯(Multinomial Naive Bayes)

  • 平均一致依賴估計器(Averaged One-Dependence Estimators (AODE))

  • 貝葉斯信念網路(Bayesian Belief Network (BBN))

  • 貝葉斯網路(Bayesian Network (BN))

優點:

        快速、易於訓練、給出了它們所需的資源能帶來良好的表現

缺點:

  • 如果輸入變數是相關的,則會出現問題

K近鄰演算法

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

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

問題案例

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

演算法步驟展示圖

K均值演算法

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

問題案例

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

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

演算法結果展示

Adaboost

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

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

演算法原理展示

Adaboost 的例子,手寫識別中,在畫板上可以抓取到很多features(特徵),例如始點的方向,始點和終點的距離等等。

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

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

神經網路(Neural Networks)

Neural Networks適合一個input可能落入至少兩個類別裡:NN由若干層神經元,和它們之間的聯絡組成。 第一層是input層,最後一層是output層。在hidden層和output層都有自己的classifier。

神經網路結構

input輸入到網路中,被啟用,計算的分數被傳遞到下一層,啟用後面的神經層,最後output層的節點上的分數代表屬於各類的分數,下圖例子得到分類結果為class 1;同樣的input被傳輸到不同的節點上,之所以會得到不同的結果是因為各自節點有不同的weights 和bias,這也就是forward propagation。

演算法結果展示

人工神經網路是受生物神經網路啟發而構建的演算法模型。

它是一種模式匹配,常被用於迴歸和分類問題,但擁有龐大的子域,由數百種演算法和各類問題的變體組成。

例子:

  • 感知器

  • 反向傳播

  • Hopfield 網路

  • 徑向基函式網路(Radial Basis Function Network,RBFN)

優點:

  • 在語音、語義、視覺、各類遊戲(如圍棋)的任務中表現極好。

  • 演算法可以快速調整,適應新的問題。

缺點:

        需要大量資料進行訓練

        訓練要求很高的硬體配置

        模型處於「黑箱狀態」,難以理解內部機制

        元引數(Metaparameter)與網路拓撲選擇困難。

馬爾科夫

Markov Chains由state(狀態)和transitions(轉移)組成。例子,根據這一句話 ‘the quick brown fox jumps over the lazy dog’,要得到markov chains。

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

馬爾科夫原理圖

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

演算法結果展示

上述十大類機器學習演算法是人工智慧發展的踐行者,即使在當下,依然在資料探勘以及小樣本的人工智慧問題中被廣泛使用。

Taily老段的微信公眾號,歡迎交流學習