ML的常用算法有個常識性的認識棋蚌,沒有代碼嫁佳,沒有復雜的理論推導,就是圖解一下谷暮,知道這些算法是什么蒿往,它們是怎么應用的,例子主要是分類問題湿弦。
決策樹瓤漏、隨機森林算法、邏輯回歸颊埃、SVM蔬充、樸素貝葉斯、K最近鄰算法班利、K均值算法饥漫、Adaboost算法、神經(jīng)網(wǎng)絡罗标、馬爾可夫庸队。
1. 決策樹 根據(jù)一些 feature 進行分類积蜻,每個節(jié)點提一個問題,通過判斷彻消,將數(shù)據(jù)分為兩類竿拆,再繼續(xù)提問。這些問題是根據(jù)已有數(shù)據(jù)學習出來的宾尚,再投入新數(shù)據(jù)的時候丙笋,就可以根據(jù)這棵樹上的問題,將數(shù)據(jù)劃分到合適的葉子上央勒。
2不见、隨機森林 在源數(shù)據(jù)中隨機選取數(shù)據(jù),組成幾個子集:
S矩陣是源數(shù)據(jù)崔步,有1-N條數(shù)據(jù)稳吮,A、B井濒、C 是feature灶似,最后一列C是類別:
由S隨機生成M個子矩陣:
這M個子集得到 M 個決策樹:
將新數(shù)據(jù)投入到這M個樹中,得到M個分類結果瑞你,計數(shù)看預測成哪一類的數(shù)目最多酪惭,就將此類別作為最后的預測結果。
3者甲、邏輯回歸 當預測目標是概率這樣的春感,值域需要滿足大于等于0,小于等于1的虏缸,這個時候單純的線性模型是做不到的鲫懒,因為在定義域不在某個范圍之內(nèi)時,值域也超出了規(guī)定區(qū)間刽辙。
所以此時需要這樣的形狀的模型會比較好:
那么怎么得到這樣的模型呢窥岩?
這個模型需要滿足兩個條件 “大于等于0”,“小于等于1”
大于等于0 的模型可以選擇絕對值宰缤,平方值颂翼,這里用指數(shù)函數(shù),一定大于0慨灭;
小于等于1 用除法朦乏,分子是自己,分母是自身加上1氧骤,那一定是小于1的了呻疹。
再做一下變形,就得到了 logistic regressions 模型:
通過源數(shù)據(jù)計算可以得到相應的系數(shù)了:
最后得到 logistic 的圖形:
4语淘、SVM 要將兩類分開诲宇,想要得到一個超平面,最優(yōu)的超平面是到兩類的 margin 達到最大惶翻,margin就是超平面與離它最近一點的距離姑蓝,如下圖,Z2>Z1吕粗,所以綠色的超平面比較好纺荧。
將這個超平面表示成一個線性方程,在線上方的一類颅筋,都大于等于1宙暇,另一類小于等于-1:
點到面的距離根據(jù)圖中的公式計算:
所以得到total margin的表達式如下,目標是最大化這個margin议泵,就需要最小化分母占贫,于是變成了一個優(yōu)化問題:
舉個例子,三個點先口,找到最優(yōu)的超平面型奥,定義了 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 的應用:
給一段文字钻洒,返回情感分類奋姿,這段文字的態(tài)度是positive,還是negative:
為了解決這個問題素标,可以只看其中的一些單詞:
這段文字称诗,將僅由一些單詞和它們的計數(shù)代表:
原始問題是:給你一句話,它屬于哪一類 头遭?
通過bayes rules變成一個比較簡單容易求得的問題:
問題變成寓免,這一類中這句話出現(xiàn)的概率是多少癣诱,當然,別忘了公式里的另外兩個概率袜香。
例子:單詞“l(fā)ove”在positive的情況下出現(xiàn)的概率是 0.1撕予,在negative的情況下出現(xiàn)的概率是0.001。
6蜈首、K最近臨算法
給一個新的數(shù)據(jù)時实抡,離它最近的 k 個點中,哪個類別多欢策,這個數(shù)據(jù)就屬于哪一類吆寨。
例子:要區(qū)分“貓”和“狗”,通過“claws”和“sound”兩個feature來判斷的話踩寇,圓形和三角形是已知分類的了啄清,那么這個“star”代表的是哪一類呢?
k=3時姑荷,這三條線鏈接的點就是最近的三個點盒延,那么圓形多一些,所以這個star就是屬于貓鼠冕。
7添寺、K均值算法
先要將一組數(shù)據(jù),分為三類懈费,粉色數(shù)值大计露,黃色數(shù)值小 。
最開始先初始化憎乙,這里面選了最簡單的 3票罐,2,1 作為各類的初始值 泞边。
剩下的數(shù)據(jù)里该押,每個都與三個初始值計算距離,然后歸類到離它最近的初始值所在類別阵谚。
分好類后蚕礼,計算每一類的平均值,作為新一輪的中心點:
幾輪之后梢什,分組不再變化了奠蹬,就可以停止了:
8、Adaboost
adaboost 是 bosting 的方法之一嗡午。
bosting就是把若干個分類效果并不好的分類器綜合起來考慮囤躁,會得到一個效果比較好的分類器。
下圖,左右兩個決策樹狸演,單個看是效果不怎么好的言蛇,但是把同樣的數(shù)據(jù)投入進去,把兩個結果加起來考慮宵距,就會增加可信度猜极。
adaboost 的例子,手寫識別中消玄,在畫板上可以抓取到很多 features,例如始點的方向丢胚,始點和終點的距離等等翩瓜。
training的時候,會得到每個feature的weight携龟,例如2和3的開頭部分很像兔跌,這個feature對分類起到的作用很小,它的權重也就會較小峡蟋。
而這個alpha角就具有很強的識別性坟桅,這個feature的權重就會較大,最后的預測結果是綜合考慮這些feature的結果蕊蝗。
9仅乓、網(wǎng)絡神經(jīng)
Neural Networks適合一個input可能落入至少兩個類別里:
NN由若干層神經(jīng)元,和它們之間的聯(lián)系組成蓬戚。
第一層是input層夸楣,最后一層是output層。
在hidden層和output層都有自己的classifier子漩。
input輸入到網(wǎng)絡中豫喧,被激活,計算的分數(shù)被傳遞到下一層幢泼,激活后面的神經(jīng)層紧显,最后output層的節(jié)點上的分數(shù)代表屬于各類的分數(shù),下圖例子得到分類結果為class 1缕棵;
同樣的input被傳輸?shù)讲煌墓?jié)點上孵班,之所以會得到不同的結果是因為各自節(jié)點有不同的weights 和bias,這也就是forward propagation挥吵。
10重父、馬爾可夫
Markov Chains 由state和transitions組成。
例子忽匈,根據(jù)這一句話 ‘the quick brown fox jumps over the lazy dog’房午,要得到markov chains。
步驟丹允,先給每一個單詞設定成一個狀態(tài)郭厌,然后計算狀態(tài)間轉換的概率袋倔。
這是一句話計算出來的概率,當你用大量文本去做統(tǒng)計的時候折柠,會得到更大的狀態(tài)轉移矩陣宾娜,例如the后面可以連接的單詞,及相應的概率扇售。
生活中前塔,鍵盤輸入法的備選結果也是一樣的原理,模型會更高級承冰。