漫畫解讀:輕松看懂機器學習十大常用算法
通過本篇文章可以對 ML 的常用算法有個常識性的認識,沒有代碼,沒有復雜的理論推導,就是圖解一下,知道這些算法是什么,它們是怎么應用的,例子主要是分類問題。
機器學習的十大常用算法如下:
決策樹
隨機森林算法
邏輯回歸
SVM
樸素貝葉斯
K 最近鄰算法
K 均值算法
Adaboost 算法
神經網絡
馬爾可夫
決策樹
根據一些 feature 進行分類,每個節點提一個問題,通過判斷,將數據分為兩類,再繼續提問。
這些問題是根據已有數據學習出來的,再投入新數據的時候,就可以根據這棵樹上的問題,將數據劃分到合適的葉子上。
隨機森林
在源數據中隨機選取數據,組成幾個子集,如下圖:
S 矩陣是源數據,有 1-N 條數據,A B C 是 feature,最后一列 C 是類別。
由 S 隨機生成 M 個子矩陣。
這 M 個子集得到 M 個決策樹。
將新數據投入到這 M 個樹中,得到 M 個分類結果,計數看預測成哪一類的數目最多,就將此類別作為最后的預測結果。
邏輯回歸
當預測目標是概率這樣的,值域需要滿足大于等于 0,小于等于 1 的,這個時候單純的線性模型是做不到的,因為在定義域不在某個范圍之內時,值域也超出了規定區間。
所以此時需要這樣的形狀的模型會比較好。
那么怎么得到這樣的模型呢?這個模型需要滿足兩個條件:
大于等于0。
小于等于1。
大于等于 0 的模型可以選擇絕對值、平方值,這里用指數函數,一定大于 0 小于等于1 用除法,分子是自己,分母是自身加上 1,結果那一定是小于 1 的了。
再做一下變形,就得到了 logistic regression 模型。
通過源數據計算可以得到相應的系數了。
通過源數據計算可以得到相應的系數了。
SVM
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。
樸素貝葉斯
舉個在 NLP 的應用例子,給一段文字,返回情感分類,這段文字的態度是 positive,還是 negative?
為了解決這個問題,可以只看其中的一些單詞。
這段文字,將僅由一些單詞和它們的計數代表。
原始問題是:給你一句話,它屬于哪一類?通過 bayes rules 變成一個比較簡單容易求得的問題。
問題變成,這一類中這句話出現的概率是多少,當然,別忘了公式里的另外兩個概率。
例子:單詞 love 在 positive 的情況下出現的概率是 0.1,在 negative 的情況下出現的概率是 0.001。
K 最近鄰
K 最近鄰即 k nearest neighbours,給一個新的數據時,離它最近的 k 個點中,哪個類別多,這個數據就屬于哪一類。
例子:要區分 貓 和 狗,通過 claws 和 sound 兩個 feature 來判斷的話,圓形和三角形是已知分類的了,那么這個 star 代表的是哪一類呢?
k=3時,這三條線鏈接的點就是最近的三個點,那么圓形多一些,所以這個 star 就是屬于貓。
K 均值
想要將一組數據,分為三類,粉色數值大,黃色數值小,最開始先初始化,這里面選了最簡單的 3,2,1 作為各類的初始值。
剩下的數據里,每個都與三個初始值計算距離,然后歸類到離它最近的初始值所在類別。
分好類后,計算每一類的平均值,作為新一輪的中心點。
幾輪之后,分組不再變化了,就可以停止了。
Adaboost
adaboost 是 bosting 的方法之一,bosting 就是把若干個分類效果并不好的分類器綜合起來考慮,會得到一個效果比較好的分類器。
如下圖,左右兩個決策樹,單個看是效果不怎么好的,但是把同樣的數據投入進去,把兩個結果加起來考慮,就會增加可信度。
adaboost 的栗子,手寫識別中,在畫板上可以抓取到很多 features,例如始點的方向,始點和終點的距離等等。
training 的時候,會得到每個 feature 的 weight,例如 2 和 3 的開頭部分很像,這個 feature 對分類起到的作用很小,它的權重也就會較小。
而這個 alpha 角就具有很強的識別性,這個 feature 的權重就會較大,最后的預測結果是綜合考慮這些 feature 的結果。
神經網絡
Neural Networks 適合一個 input 可能落入至少兩個類別里,NN 由若干層神經元和它們之間的聯系組成。第一層是 input 層,最后一層是 output 層,在 hidden 層和 output 層都有自己的 classifier。
input 輸入到網絡中,被激活,計算的分數被傳遞到下一層,激活后面的神經層,最后output 層的節點上的分數代表屬于各類的分數,下圖例子得到分類結果為 class 1。
同樣的 input 被傳輸到不同的節點上,之所以會得到不同的結果是因為各自節點有不同的 weights 和 bias。這也就是 forward propagation。
馬爾可夫
Markov Chains 由 state 和 transitions 組成。舉個例子,根據這一句話 ‘the quick brown fox jumps over the lazy dog’。
如果要得到 markov chain ,步驟是先給每一個單詞設定成一個狀態,然后計算狀態間轉換的概率。
這是一句話計算出來的概率,當你用大量文本去做統計的時候,會得到更大的狀態轉移矩陣,例如 the 后面可以連接的單詞,及相應的概率。
生活中,鍵盤輸入法的備選結果也是一樣的原理,模型會更高級。
開發者 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。