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

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

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

今天的算法如下:

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

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 后面可以連接的單詞,及相應的概率

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 注:題中所指的『機器學習』不包括『深度學習』。本篇文章以理論推導為主,不涉及代碼實現。 前些日子定下了未來三年左右...
    我偏笑_NSNirvana閱讀 40,092評論 12 145
  • 機器學習常用算法總結如下:決策樹隨機森林算法邏輯回歸SVM樸素貝葉斯K最近鄰算法K均值算法Adaboost 算法神...
    珈誼閱讀 490評論 0 0
  • 機器學習的介紹 機器學習無疑是當前數據分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的算...
    寂靜臺風閱讀 1,666評論 0 29
  • 我從小性格頑劣,用那時大人們的話來說,我“不合群”且乖戾,因此被送入某個以“軍事化管理”著稱的環境,被迫接受集體生...
    593c0c291059閱讀 264評論 0 0
  • 畫一顆流星 我祈愿 山谷的天空 沒有禿鷲 在盤旋 硝煙彌漫 不是某處 蓄謀的狂歡 在流星下 我祈愿 不同的信仰 是...
    何事亂翻書閱讀 112評論 1 2