sklearn前面有過一個(gè)樹狀圖,大概說了什么情況用什么模型合適。

監(jiān)督學(xué)習(xí)分類模型,主要有邏輯回歸LogisticRegression,支持向量機(jī)svm,神經(jīng)網(wǎng)絡(luò),近鄰KNeighboursClassification,樸素貝葉斯naive_bayes以及集成模型,隨機(jī)森林, AdaBoost等等。
這次先說邏輯回歸(LR),svm。說說我的理解
在線性可分的情況下,邏輯回歸和svm可以說是一個(gè)相似的模型.
先看假設(shè)函數(shù),hypothesis,先用邊界函數(shù)確定決策邊界,都是一個(gè)平面。
LR將邊界兩邊的f(x)值映射到Sigmoid函數(shù)中,得到一個(gè)概率,概率大于0.5,則認(rèn)為是分類1,否則就為0。從Sigmoid函數(shù)可以看出x離0越遠(yuǎn),分類正確的概率越大。然后通過極大似然估計(jì)得到cost function目標(biāo)函數(shù),求解這根線的參數(shù)。


而SVM是確定兩根線,用于確定這兩條線的點(diǎn)就是支持向量,在這兩條線兩側(cè)的點(diǎn)分別是不同類別,SVM要求的是這兩條線是所有線里最大間距的兩條。而超平面是中間這條f(x)=0,這條線。

總的說來,我認(rèn)為都是先畫一條線(一個(gè)超平面),根據(jù)這個(gè)平面得到一個(gè)f(x),然后用映射函數(shù)映射成0或者1.
跟LR不同的是SVM只跟支持向量有關(guān),刪減一些離線比較遠(yuǎn)的點(diǎn),不會(huì)影響超平面,計(jì)算量也會(huì)小一些,且要求|f(x)|>=1,分類效果更好。但是就對(duì)異常點(diǎn)比較敏感。
而LR的平面是通過所有點(diǎn)確定的,刪減點(diǎn)必然會(huì)有影響。
關(guān)于SVM的目標(biāo)函數(shù)
ng這樣推導(dǎo)的svm的目標(biāo)函數(shù),根據(jù)LR的目標(biāo)函數(shù),做了一定的簡(jiǎn)化,就變成這樣。粉色線的斜率都行,因?yàn)榭吹贸鲈诜诸愓_的情況下,f(x)=0,不正確的離0越遠(yuǎn),值越大,錯(cuò)的越多,懲罰越大。


這實(shí)際就是hinge loss,如果被正確分類,損失是0,否則損失就是 1?mi(w) 。


用hinge 函數(shù)來表示目標(biāo)函數(shù)就會(huì)成這樣??梢钥闯墒荓2正則加Hinge loss之和。

y取0,1?-1,1
可以看到ng的y取值0,1,但是更多情況下,SVM的y取值為-1,1,特別是用幾何來推導(dǎo)目標(biāo)函數(shù)時(shí)。比如理解SVM的三重境界,特別提到為啥要取-1,1.
我認(rèn)為是因?yàn)镾VM有一個(gè)約束條件,就是y>=1時(shí),f(x)>=1,,f(x)<=-1時(shí),y><=-1,用-1,1就能把這兩個(gè)條件合成一個(gè)

這也正是幾何求解時(shí)的函數(shù)間隔,它既能表示分類的正確性,也能表示離0的距離,即x正確分類的可信度。 但是可以看到用幾何求解的目標(biāo)函數(shù)是

這與ng的目標(biāo)函數(shù)有所差異,就是少了一坨。這就是所謂硬間隔,就是所有點(diǎn)都必須離超平面有1以上的距離,但是有些情況有噪點(diǎn),異常點(diǎn),SVM就會(huì)為了零星異常點(diǎn)更改超平面。
比如這樣,明顯看出間隔變小,并不是一個(gè)更好的邊界。

于是修改了約束條件。意思是不用強(qiáng)行比1大,小點(diǎn)也行,這就是軟間隔。

目標(biāo)函數(shù)也就變成這樣。

ng與幾何推導(dǎo)最后也就是殊途同歸了。
整理一下

線性不可分
LR對(duì)線性不可分的情況不太友好,因?yàn)閷?duì)于f(x)是多項(xiàng)式的情況,w項(xiàng)太多,不好確定,一般情況線性不可分會(huì)選用SVM的核函數(shù)和神經(jīng)網(wǎng)絡(luò)。
SVM的核函數(shù)是把線性不可分的數(shù)據(jù)升維度之后就能線性可分,然后數(shù)學(xué)能通過核函數(shù)再降維。

樸素貝葉斯主要用在處理文字信息,分類垃圾信息之類,近鄰KNeighboursClassification統(tǒng)計(jì)需驗(yàn)證點(diǎn)周圍的k個(gè)已知點(diǎn)的類別,取多數(shù)的那個(gè)類別為該點(diǎn)的類別。