漫畫解讀:輕松看懂機(jī)器學(xué)習(xí)十大常用算法
通過(guò)本篇文章可以對(duì) ML 的常用算法有個(gè)常識(shí)性的認(rèn)識(shí),沒(méi)有代碼,沒(méi)有復(fù)雜的理論推導(dǎo),就是圖解一下,知道這些算法是什么,它們是怎么應(yīng)用的,例子主要是分類問(wèn)題。
機(jī)器學(xué)習(xí)的十大常用算法如下:
- 決策樹
- 隨機(jī)森林算法
- 邏輯回歸
- SVM
- 樸素貝葉斯
- K 最近鄰算法
- K 均值算法
- Adaboost 算法
- 神經(jīng)網(wǎng)絡(luò)
- 馬爾可夫
決策樹
根據(jù)一些 feature 進(jìn)行分類,每個(gè)節(jié)點(diǎn)提一個(gè)問(wèn)題,通過(guò)判斷,將數(shù)據(jù)分為兩類,再繼續(xù)提問(wèn)。
這些問(wèn)題是根據(jù)已有數(shù)據(jù)學(xué)習(xí)出來(lái)的,再投入新數(shù)據(jù)的時(shí)候,就可以根據(jù)這棵樹上的問(wèn)題,將數(shù)據(jù)劃分到合適的葉子上。
隨機(jī)森林
在源數(shù)據(jù)中隨機(jī)選取數(shù)據(jù),組成幾個(gè)子集,如下圖:
S 矩陣是源數(shù)據(jù),有 1-N 條數(shù)據(jù),A B C 是 feature,最后一列 C 是類別。
由 S 隨機(jī)生成 M 個(gè)子矩陣。
這 M 個(gè)子集得到 M 個(gè)決策樹。
將新數(shù)據(jù)投入到這 M 個(gè)樹中,得到 M 個(gè)分類結(jié)果,計(jì)數(shù)看預(yù)測(cè)成哪一類的數(shù)目最多,就將此類別作為最后的預(yù)測(cè)結(jié)果。
邏輯回歸
當(dāng)預(yù)測(cè)目標(biāo)是概率這樣的,值域需要滿足大于等于 0,小于等于 1 的,這個(gè)時(shí)候單純的線性模型是做不到的,因?yàn)樵诙x域不在某個(gè)范圍之內(nèi)時(shí),值域也超出了規(guī)定區(qū)間。
所以此時(shí)需要這樣的形狀的模型會(huì)比較好。
那么怎么得到這樣的模型呢?這個(gè)模型需要滿足兩個(gè)條件:
- 大于等于0。
- 小于等于1。
大于等于 0 的模型可以選擇絕對(duì)值、平方值,這里用指數(shù)函數(shù),一定大于 0 小于等于1 用除法,分子是自己,分母是自身加上 1,結(jié)果那一定是小于 1 的了。
再做一下變形,就得到了 logistic regression 模型。
通過(guò)源數(shù)據(jù)計(jì)算可以得到相應(yīng)的系數(shù)了。
最后得到 logistic 的圖形。
SVM
SVM 即 support vector machine,要將兩類分開(kāi),想要得到一個(gè)超平面,最優(yōu)的超平面是到兩類的 margin 達(dá)到最大,margin 就是超平面與離它最近一點(diǎn)的距離。
如下圖,Z2>Z1,所以綠色的超平面比較好。
將這個(gè)超平面表示成一個(gè)線性方程,在線上方的一類,都大于等于 1,另一類小于等于 -1。
點(diǎn)到面的距離根據(jù)圖中的公式計(jì)算。
所以得到 total margin 的表達(dá)式如下,目標(biāo)是最大化這個(gè) margin,就需要最小化分母,于是變成了一個(gè)優(yōu)化問(wèn)題。
舉個(gè)例子,三個(gè)點(diǎn),找到最優(yōu)的超平面,定義了 weight vector=(2,3)-(1,1)。
得到 weight vector 為(a,2a),將兩個(gè)點(diǎn)代入方程,代入(2,3)令其值=1,代入(1,1)令其值=-1,求解出 a 和 截矩 w0 的值,進(jìn)而得到超平面的表達(dá)式。
a 求出來(lái)后,代入(a,2a)得到的就是 support vector。
a 和 w0 代入超平面的方程就是 support vector machine。
樸素貝葉斯
舉個(gè)在 NLP 的應(yīng)用例子,給一段文字,返回情感分類,這段文字的態(tài)度是 positive,還是 negative?
為了解決這個(gè)問(wèn)題,可以只看其中的一些單詞。
這段文字,將僅由一些單詞和它們的計(jì)數(shù)代表。
原始問(wèn)題是:給你一句話,它屬于哪一類?通過(guò) bayes rules 變成一個(gè)比較簡(jiǎn)單容易求得的問(wèn)題。
問(wèn)題變成,這一類中這句話出現(xiàn)的概率是多少,當(dāng)然,別忘了公式里的另外兩個(gè)概率。
例子:?jiǎn)卧~ love 在 positive 的情況下出現(xiàn)的概率是 0.1,在 negative 的情況下出現(xiàn)的概率是 0.001。
K 最近鄰
K 最近鄰即 k nearest neighbours,給一個(gè)新的數(shù)據(jù)時(shí),離它最近的 k 個(gè)點(diǎn)中,哪個(gè)類別多,這個(gè)數(shù)據(jù)就屬于哪一類。
例子:要區(qū)分 貓 和 狗,通過(guò) claws 和 sound 兩個(gè) feature 來(lái)判斷的話,圓形和三角形是已知分類的了,那么這個(gè) star 代表的是哪一類呢?
k=3時(shí),這三條線鏈接的點(diǎn)就是最近的三個(gè)點(diǎn),那么圓形多一些,所以這個(gè) star 就是屬于貓。
K 均值
想要將一組數(shù)據(jù),分為三類,粉色數(shù)值大,黃色數(shù)值小,最開(kāi)始先初始化,這里面選了最簡(jiǎn)單的 3,2,1 作為各類的初始值。
剩下的數(shù)據(jù)里,每個(gè)都與三個(gè)初始值計(jì)算距離,然后歸類到離它最近的初始值所在類別。
分好類后,計(jì)算每一類的平均值,作為新一輪的中心點(diǎn)。
幾輪之后,分組不再變化了,就可以停止了。
Adaboost
adaboost 是 bosting 的方法之一,bosting 就是把若干個(gè)分類效果并不好的分類器綜合起來(lái)考慮,會(huì)得到一個(gè)效果比較好的分類器。
如下圖,左右兩個(gè)決策樹,單個(gè)看是效果不怎么好的,但是把同樣的數(shù)據(jù)投入進(jìn)去,把兩個(gè)結(jié)果加起來(lái)考慮,就會(huì)增加可信度。
adaboost 的栗子,手寫識(shí)別中,在畫板上可以抓取到很多 features,例如始點(diǎn)的方向,始點(diǎn)和終點(diǎn)的距離等等。
training 的時(shí)候,會(huì)得到每個(gè) feature 的 weight,例如 2 和 3 的開(kāi)頭部分很像,這個(gè) feature 對(duì)分類起到的作用很小,它的權(quán)重也就會(huì)較小。
而這個(gè) alpha 角就具有很強(qiáng)的識(shí)別性,這個(gè) feature 的權(quán)重就會(huì)較大,最后的預(yù)測(cè)結(jié)果是綜合考慮這些 feature 的結(jié)果。
神經(jīng)網(wǎng)絡(luò)
Neural Networks 適合一個(gè) input 可能落入至少兩個(gè)類別里,NN 由若干層神經(jīng)元和它們之間的聯(lián)系組成。第一層是 input 層,最后一層是 output 層,在 hidden 層和 output 層都有自己的 classifier。
input 輸入到網(wǎng)絡(luò)中,被激活,計(jì)算的分?jǐn)?shù)被傳遞到下一層,激活后面的神經(jīng)層,最后output 層的節(jié)點(diǎn)上的分?jǐn)?shù)代表屬于各類的分?jǐn)?shù),下圖例子得到分類結(jié)果為 class 1。
同樣的 input 被傳輸?shù)讲煌墓?jié)點(diǎn)上,之所以會(huì)得到不同的結(jié)果是因?yàn)楦髯怨?jié)點(diǎn)有不同的 weights 和 bias。這也就是 forward propagation。
馬爾可夫
Markov Chains 由 state 和 transitions 組成。舉個(gè)例子,根據(jù)這一句話 ‘the quick brown fox jumps over the lazy dog’。
如果要得到 markov chain ,步驟是先給每一個(gè)單詞設(shè)定成一個(gè)狀態(tài),然后計(jì)算狀態(tài)間轉(zhuǎn)換的概率。
這是一句話計(jì)算出來(lái)的概率,當(dāng)你用大量文本去做統(tǒng)計(jì)的時(shí)候,會(huì)得到更大的狀態(tài)轉(zhuǎn)移矩陣,例如 the 后面可以連接的單詞,及相應(yīng)的概率。
生活中,鍵盤輸入法的備選結(jié)果也是一樣的原理,模型會(huì)更高級(jí)。
【編輯推薦】