LR與SVM的異同

原文:http://blog.sina.com.cn/s/blog_818f5fde0102vvpy.html

在大大小小的面試過程中,多次被問及這個(gè)問題:“請說一下邏輯回歸(LR)和支持向量機(jī)(SVM)之間的相同點(diǎn)和不同點(diǎn)”。第一次被問到這個(gè)問題的時(shí)候,含含糊糊地說了一些,大多不在點(diǎn)子上,后來被問得多了,慢慢也就理解得更清楚了,所以現(xiàn)在整理一下,希望對以后面試機(jī)器學(xué)習(xí)方向的同學(xué)有所幫助(至少可以瞎扯幾句,而不至于啞口無言ha(*^-^*))。

(1)為什么將LR和SVM放在一起來進(jìn)行比較?

回答這個(gè)問題其實(shí)就是回答LR和SVM有什么相同點(diǎn)。

第一,LR和SVM都是分類算法。

看到這里很多人就不會(huì)認(rèn)同了,因?yàn)樵诤艽笠徊糠秩搜劾铮琇R是回歸算法。我是非常不贊同這一點(diǎn)的,因?yàn)槲艺J(rèn)為判斷一個(gè)算法是分類還是回歸算法的唯一標(biāo)準(zhǔn)就是樣本label的類型,如果label是離散的,就是分類算法,如果label是連續(xù)的,就是回歸算法。很明顯,LR的訓(xùn)練數(shù)據(jù)的label是“0或者1”,當(dāng)然是分類算法。其實(shí)這樣不重要啦,暫且遷就我認(rèn)為他是分類算法吧,再說了,SVM也可以回歸用呢。

第二,如果不考慮核函數(shù),LR和SVM都是線性分類算法,也就是說他們的分類決策面都是線性的。

這里要先說明一點(diǎn),那就是LR也是可以用核函數(shù)的,至于為什么通常在SVM中運(yùn)用核函數(shù)而不在LR中運(yùn)用,后面講到他們之間區(qū)別的時(shí)候會(huì)重點(diǎn)分析??傊?,原始的LR和SVM都是線性分類器,這也是為什么通常沒人問你決策樹和LR什么區(qū)別,決策樹和SVM什么區(qū)別,你說一個(gè)非線性分類器和一個(gè)線性分類器有什么區(qū)別?

第三,LR和SVM都是監(jiān)督學(xué)習(xí)算法。

這個(gè)就不贅述什么是監(jiān)督學(xué)習(xí),什么是半監(jiān)督學(xué)習(xí),什么是非監(jiān)督學(xué)習(xí)了。

第四,LR和SVM都是判別模型。

判別模型會(huì)生成一個(gè)表示P(Y|X)的判別函數(shù)(或預(yù)測模型),而生成模型先計(jì)算聯(lián)合概率p(Y,X)然后通過貝葉斯公式轉(zhuǎn)化為條件概率。簡單來說,在計(jì)算判別模型時(shí),不會(huì)計(jì)算聯(lián)合概率,而在計(jì)算生成模型時(shí),必須先計(jì)算聯(lián)合概率?;蛘哌@樣理解:生成算法嘗試去找到底這個(gè)數(shù)據(jù)是怎么生成的(產(chǎn)生的),然后再對一個(gè)信號進(jìn)行分類?;谀愕纳杉僭O(shè),那么那個(gè)類別最有可能產(chǎn)生這個(gè)信號,這個(gè)信號就屬于那個(gè)類別。判別模型不關(guān)心數(shù)據(jù)是怎么生成的,它只關(guān)心信號之間的差別,然后用差別來簡單對給定的一個(gè)信號進(jìn)行分類。常見的判別模型有:KNN、SVM、LR,常見的生成模型有:樸素貝葉斯,隱馬爾可夫模型。當(dāng)然,這也是為什么很少有人問你樸素貝葉斯和LR以及樸素貝葉斯和SVM有什么區(qū)別(哈哈,廢話是不是太多)。

第五,LR和SVM在學(xué)術(shù)界和工業(yè)界都廣為人知并且應(yīng)用廣泛。

講完了LR和SVM的相同點(diǎn),你是不是也認(rèn)為有必要將他們進(jìn)行比較一下了呢?而且比較LR和SVM,是不是比讓你比較決策樹和LR、決策樹和SVM、樸素貝葉斯和LR、樸素貝葉斯和SVM更能考察你的功底呢?

(2)LR和SVM的不同。

第一,本質(zhì)上是其loss function不同。

邏輯回歸的損失函數(shù)

支持向量機(jī)的目標(biāo)函數(shù)

不同的loss function代表了不同的假設(shè)前提,也就代表了不同的分類原理,也就代表了一切?。?!簡單來說,?邏輯回歸方法基于概率理論,假設(shè)樣本為1的概率可以用sigmoid函數(shù)來表示,然后通過極大似然估計(jì)的方法估計(jì)出參數(shù)的值,具體細(xì)節(jié)參考http://blog.csdn.net/pakko/article/details/37878837。支持向量機(jī)?基于幾何間隔最大化原理,認(rèn)為存在最大幾何間隔的分類面為最優(yōu)分類面,具體細(xì)節(jié)參考http://blog.csdn.net/macyang/article/details/38782399

第二,支持向量機(jī)只考慮局部的邊界線附近的點(diǎn),而邏輯回歸考慮全局(遠(yuǎn)離的點(diǎn)對邊界線的確定也起作用)。

當(dāng)?你讀完上面兩個(gè)網(wǎng)址的內(nèi)容,深入了解了LR和SVM的原理過后,會(huì)發(fā)現(xiàn)影響SVM決策面的樣本點(diǎn)只有少數(shù)的結(jié)構(gòu)支持向量,當(dāng)在支持向量外添加或減少任何樣本點(diǎn)對分類決策面沒有任何影響;而在LR中,每個(gè)樣本點(diǎn)都會(huì)影響決策面的結(jié)果。用下圖進(jìn)行說明:

支持向量機(jī)改變非支持向量樣本并不會(huì)引起決策面的變化

邏輯回歸中改變?nèi)魏螛颖径紩?huì)引起決策面的變化

?理解了這一點(diǎn),有可能你會(huì)問,然后呢?有什么用呢?有什么意義嗎?對使用兩種算法有什么幫助么?一句話回答:

因?yàn)樯厦娴脑?,得知:線性SVM不直接依賴于數(shù)據(jù)分布,分類平面不受一類點(diǎn)影響;LR則受所有數(shù)據(jù)點(diǎn)的影響,如果數(shù)據(jù)不同類別strongly unbalance,一般需要先對數(shù)據(jù)做balancing。?(引自http://www.zhihu.com/question/26768865/answer/34078149

第三,在解決非線性問題時(shí),支持向量機(jī)采用核函數(shù)的機(jī)制,而LR通常不采用核函數(shù)的方法。

?這個(gè)問題理解起來非常簡單。分類模型的結(jié)果就是計(jì)算決策面,模型訓(xùn)練的過程就是決策面的計(jì)算過程。通過上面的第二點(diǎn)不同點(diǎn)可以了解,在計(jì)算決策面時(shí),SVM算法里只有少數(shù)幾個(gè)代表支持向量的樣本參與了計(jì)算,也就是只有少數(shù)幾個(gè)樣本需要參與核計(jì)算(即kernal machine解的系數(shù)是稀疏的)。然而,LR算法里,每個(gè)樣本點(diǎn)都必須參與決策面的計(jì)算過程,也就是說,假設(shè)我們在LR里也運(yùn)用核函數(shù)的原理,那么每個(gè)樣本點(diǎn)都必須參與核計(jì)算,這帶來的計(jì)算復(fù)雜度是相當(dāng)高的。所以,在具體應(yīng)用時(shí),LR很少運(yùn)用核函數(shù)機(jī)制。?

第四,?線性SVM依賴數(shù)據(jù)表達(dá)的距離測度,所以需要對數(shù)據(jù)先做normalization,LR不受其影響。(引自http://www.zhihu.com/question/26768865/answer/34078149

一個(gè)機(jī)遇概率,一個(gè)機(jī)遇距離!?

第五,SVM的損失函數(shù)就自帶正則?。。。〒p失函數(shù)中的1/2||w||^2項(xiàng)),這就是為什么SVM是結(jié)構(gòu)風(fēng)險(xiǎn)最小化算法的原因?。?!而LR必須另外在損失函數(shù)上添加正則項(xiàng)?。?!

以前一直不理解為什么SVM叫做結(jié)構(gòu)風(fēng)險(xiǎn)最小化算法,所謂結(jié)構(gòu)風(fēng)險(xiǎn)最小化,意思就是在訓(xùn)練誤差和模型復(fù)雜度之間尋求平衡,防止過擬合,從而達(dá)到真實(shí)誤差的最小化。未達(dá)到結(jié)構(gòu)風(fēng)險(xiǎn)最小化的目的,最常用的方法就是添加正則項(xiàng),后面的博客我會(huì)具體分析各種正則因子的不同,這里就不扯遠(yuǎn)了。但是,你發(fā)現(xiàn)沒,SVM的目標(biāo)函數(shù)里居然自帶正則項(xiàng)?。?!再看一下上面提到過的SVM目標(biāo)函數(shù):

SVM目標(biāo)函數(shù)?有木有,那不就是L2正則項(xiàng)嗎?

不用多說了,如果不明白看看L1正則與L2正則吧,參考http://www.mamicode.com/info-detail-517504.html?

http://www.zhihu.com/question/26768865/answer/34078149

邏輯回歸(logistic regression)和支持向量機(jī)(SVM)的比較

Liblinear支持兩個(gè)熱門的二元線性分類器:常規(guī)邏輯回歸LR和線性SVM。給出一組實(shí)例標(biāo)簽(xi,yi),i=1,...l,xi∈Rn,yi∈{-1,1},這兩個(gè)分類器使用了不同的損失算法解決下面的約束優(yōu)化問題。其中,C是大于0的懲罰因子。對于SVM來說,有兩個(gè)常用的損失算法max(1-yiwTxi,0)和max(1-yiwTxi,0)2,分別指的是L1-SVM和L2-SVM。對LR來說,損失算法是log(1+e-yiwTxi),得自一個(gè)概率模型。在有些案例中,分類器的判別式還要包含一個(gè)偏差項(xiàng)b。Liblinear通過對每個(gè)實(shí)例和緯度加強(qiáng)影響來實(shí)現(xiàn)偏差:wT<-[wT,b],XiT<-[XiT,B].其中B是用戶指定的常量。與此不同,L1-SVM和L2-SVM的算法是坐標(biāo)下降法。Liblinear為L2-SVM和LR都實(shí)現(xiàn)了信任區(qū)域的牛頓方法。在測試階段,我們預(yù)測一個(gè)數(shù)據(jù)點(diǎn)上x>0,如果WTx>0.對于多元實(shí)例訓(xùn)練,我們?yōu)橹峁┝?Vrest的策略。

無意間看到上面這段話,想起了那天吃飯的時(shí)候一個(gè)同事說他碰到一個(gè)面試題目是: svm 和 lr 的異同,當(dāng)時(shí)思考了一下,之后想起了曾經(jīng)在學(xué)習(xí)logistic regression classification model的梯度的時(shí)候,推到和一個(gè)簡單的兩層的sigmoid輸出的的梯度是一樣,后來發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)擬合的時(shí)候,我們用的是均方誤差的loss function ,而在這個(gè)lr 的推倒的時(shí)候,我同樣用了均方誤差的loss,因此得到一樣的結(jié)果,但是通常在lr的推倒的時(shí)候,我們是直接用 最大似然估計(jì)的,然后只有當(dāng) 誤差的分布滿足高斯分布的時(shí)候,最大似然的結(jié)果才會(huì)和最小二乘相同(loss function 為均方誤差)

剛才看到上面的loss function 的形式,想到了cross entropy loss,在網(wǎng)上找到這篇文章印證了這個(gè)

http://www.cs.mcgill.ca/~dprecup/courses/ML/Lectures/ml-lecture05.pdf,不做這個(gè)ppt中的lable是0和1,所以和上面的公式有所不同,表達(dá)形式?jīng)]有那么漂亮,但是是一樣的,有時(shí)間再把這幾個(gè)公式整理一下吧。

lr 和 svm本質(zhì)不同在于loss function的不同,不過想想這幾乎對所有的單層模型都使用,lr的損失函數(shù)是 cross entropy loss, adaboost的損失函數(shù)是 expotional loss ,svm是hinge loss,常見的回歸模型通常用 均方誤差 loss。

損失函數(shù)

損失函數(shù),一般由兩項(xiàng)組成,一項(xiàng)是loss term,另外一項(xiàng)是regularization term。

J=L+R

先說損失項(xiàng)loss,再說regularization項(xiàng)。

1. 分對得分1,分錯(cuò)得分0.gold ?standard

2. hinge loss(for softmargin svm),J=1/2||w||^2 +sum(max(0,1-yf(w,x)))

3. log los, cross entropy loss function in logistic regression model.J=lamda||w||^2+sum(log(1+e(-yf(wx))))

4. squared loss, in linear regression. loss=(y-f(w,x))^2

5. exponential loss in boosting. J=lambda*R+exp(-yf(w,x))

再說regularization項(xiàng),

一般用的多的是R2=1/2||w||^2,R1=sum(|w|)。R1和R2是凸的,同時(shí)R1會(huì)使得損失函數(shù)更加具有sparse,而R2則會(huì)更加光滑些。具體可以參見下圖:

caffe的損失函數(shù),目前已經(jīng)囊括了所有可以用的了吧,損失函數(shù)由最后一層分類器決定,同時(shí)有時(shí)會(huì)加入regularization,在BP過程中,使得誤差傳遞得以良好運(yùn)行。

contrastive_loss,對應(yīng)contrastive_loss_layer,我看了看代碼,這個(gè)應(yīng)該是輸入是一對用來做驗(yàn)證的數(shù)據(jù),比如兩張人臉圖,可能是同一個(gè)人的(正樣本),也可能是不同個(gè)人(負(fù)樣本)。在caffe的examples中,siamese這個(gè)例子中,用的損失函數(shù)是該類型的。該損失函數(shù)具體數(shù)學(xué)表達(dá)形式可以參考lecun的文章Dimensionality Reduction by Learning an Invariant Mapping,?Raia Hadsell, Sumit Chopra, Yann LeCun, cvpr 2006.

euclidean_loss,對應(yīng)euclidean_loss_layer,該損失函數(shù)就是l=(y-f(wx))^2,是線性回歸常用的損失函數(shù)。

hinge_loss,對應(yīng)hinge_loss_layer,該損失函數(shù)就是。主要用在SVM分類器中。

infogain_loss,對應(yīng)infogain_loss_layer,損失函數(shù)表達(dá)式?jīng)]找到,只知道這是在文本處理中用到的損失函數(shù)。

multinomial_logistic_loss,對應(yīng)multinomial_logistic_loss_layer,

sigmoid_cross_entropy,對應(yīng)sigmoid_cross_entropy_loss_layer,也就是logistic regression使用的損失函數(shù)。

softmax_loss,對應(yīng)softmax_loss_layer,損失函數(shù)等可以見UFLDL中關(guān)于softmax章節(jié)。在caffe中多類分類問題,損失函數(shù)就是softmax_loss,比如imagenet, mnist等。softmax_loss是sigmoid的多類問題。但是,我就沒明白,multinomial_logistic_loss和這個(gè)有什么區(qū)別,看代碼,輸入有點(diǎn)差別,softmax的輸入是probability,而multinomial好像不要求是probability,但是還是沒明白,如果只是這樣,豈不是一樣???

這里詳細(xì)說明了兩者之間的差異,并且有詳細(xì)的測試結(jié)果,非常贊。簡單理解,multinomial 是將loss分成兩個(gè)層進(jìn)行,而softmax則是合在一起了?;蛘哒f,multinomial loss是按部就班的計(jì)算反向梯度,而softmax則是把兩個(gè)步驟直接合并為一個(gè)步驟進(jìn)行了,減少了中間的精度損失等 ,從計(jì)算穩(wěn)定性講,softmax更好,multinomial是標(biāo)準(zhǔn)做法,softmax則是一種優(yōu)化吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容