機(jī)器學(xué)習(xí)面試之LR和SVM哪個更能對付異常點(diǎn)out lier?

?機(jī)器學(xué)習(xí)面試中一大類問題就是比較不同模型的異同。這類問題可以迅速刺探出面試者對模型理解的深度,因為它不像單一模型的問題,只要你將這個模型的推導(dǎo)搞清楚,原理說清楚就可以了,而是要求你對不同模型背后的思想有深刻的認(rèn)識。否則,即使從網(wǎng)上背了一些現(xiàn)成的答案,也很難蒙混過關(guān)。本文題目就是一道這樣的題。如果你看了題目感覺毫無頭緒,那就打起精神看下去吧。

# 1 從損失函數(shù)說開去

svm和lr都是分類模型。我們假設(shè)正類為y1=+1,負(fù)類為y2=-1。分類模型的基本思路很簡單,就是找一個函數(shù)f(x),我們希望,如果x為正類,那么f(x)的值是正的,如果x為負(fù)類,那么f(x)的值為負(fù)的。這個要求也可以換個說法,就是使y*f(x)始終為正,不難發(fā)現(xiàn),這個要求和上面的要求是等價的。

這樣變換的目的何在?答案就是,對于一個樣本(x,y),f(x)這個函數(shù)對該樣本預(yù)測的loss就成為了y*f(x)的函數(shù)。我們可以很容易定義出,如果y*f(x)大于0,預(yù)測正確,那么loss為0,如果小于0,那么預(yù)測錯誤,loss為1。將這樣的loss降低到0就是我們的終極目標(biāo)!也就是說,這種loss是我們真正在乎的loss。因為這樣的loss降低到0,意味著我們對樣本的預(yù)測是完全正確的。如下圖所示:

上面的圖用函數(shù)來描述就是如下:

這里的δ函數(shù)稱為指示函數(shù),即如果y*f(x)小于0,其值為1,否則為0。

既然f(x)在一個樣本上的loss可以用δ(y*f(x))衡量,自然就可以衡量在整個訓(xùn)練集上的loss,如果訓(xùn)練集有N筆數(shù)據(jù),我們可以得到f(x)在整個訓(xùn)練集上的平均loss:

按照一般套路,下面自然是調(diào)整f(x)函數(shù)的各個參數(shù),盡可能地最小化loss。But,這個loss不太好最小化哇。

拿其中一個樣本(xi,yi)來說,假設(shè)現(xiàn)在yi*f(xi)是小于0的,其預(yù)測loss為1,若想使得f(x)在這個樣本上預(yù)測loss降低,我們只能調(diào)整f(x)的參數(shù),使得yi*f(xi)大于0,但是顯然,若只對f(x)的參數(shù)進(jìn)行微弱的調(diào)整,yi*f(xi)的符號很難改變,因為此時,yi*f(xi)對于f(x)的參數(shù)來說是連續(xù)的。若對f(x)的參數(shù)進(jìn)行大刀闊斧的調(diào)整,一步到位使得yi*f(xi)改變符號,則調(diào)整后得到的新f(x)在(xi,yi)以外的樣本上的預(yù)測loss將會完全不可控,因為f(x)的參數(shù)變動太劇烈了,從而無法保證新的f(x)在整個訓(xùn)練集上的loss降低。

這里,我們可以體會一下大家熟悉的SGD的思想,它背后的假設(shè)就是當(dāng)你輕微地調(diào)整f(x)的參數(shù),使得其對于某個樣本的預(yù)測loss減小時,微調(diào)后的f(x)在其它樣本上的loss的和大概率會保持不變,或者說對其他樣本的預(yù)測loss有的增大,有的減小,總體上可以互相抵消。沒有這個假設(shè),SGD就不會有效果。

理想很豐滿,現(xiàn)實很骨感,這個問題怎么解決?

對此,svm和lr都給出了自己的解決方案,它們的解決方案有相同的地方,也有不同的地方。

#2 替換掉δ

在上面的分析中,我們看到,loss雖然很硬很完美,但是沒法最小化,原因在于我們選擇的損失函數(shù)是δ,前面提過,這個損失函數(shù)是我們理想意義上的損失函數(shù),這個損失函數(shù)是關(guān)于y*f(x)的指示函數(shù)。

仔細(xì)體會一下,充分發(fā)動我們的直覺,不難發(fā)現(xiàn),f(x)對一個樣本預(yù)測的loss大小與y*f(x)有著非常密切的關(guān)系。假設(shè)y=1,y*f(x)若為正,說明f(x)也為正,并且y*f(x)越大,說明f(x)正的越大,意味著我們的函數(shù)f越傾向于將x預(yù)測為+1類別。y=-1時,y*f(x)若為正,說明f(x)為負(fù),并且y*f(x)越大,說明f(x)負(fù)的越多,意味著我們的函數(shù)越傾向于將x預(yù)測為-1類別。

從這個角度看,我們的δ其實就是刻畫了f對樣本的loss與y*f(x)之間的這種關(guān)系,只是刻畫的比較死板。

假設(shè)我們可以找到一個新的函數(shù)l,它也可以用來刻畫f對樣本(x,y)的預(yù)測loss與y*f(x)的關(guān)系,并且函數(shù)l是函數(shù)δ的upper bound。即,對任意一個樣本(x,y),用函數(shù)l來評價某個特定的函數(shù)f對該樣本的預(yù)測loss會始終大于用函數(shù)δ的評價結(jié)果, δ(y*f(x))<=l(y*f(x))。

那么,我們就可以嘗試用l來代替δ,通過最小化l來達(dá)到最小化δ的目的。

行文至此,有必要重申下l,δ,f三個函數(shù)的關(guān)系,希望不要搞混了。下面我嘗試用擬人的手法來進(jìn)行敘述,希望能夠?qū)Υ蠹业睦斫庥兴鶐椭?/p>

f就是我們的模型函數(shù),是我們要優(yōu)化的。δ是我們優(yōu)化f的最高理想,δ告訴f:“嗨!f,對于樣本(x,y),你的預(yù)測值是f(x),對這個預(yù)測值錯誤的程度是δ(y*f(x))”,f在δ面前表示非常無奈:“δ老大,你這不是為難我嗎,你告訴我的錯誤程度要不是1,要不是0,0還好說,表示我預(yù)測正確了,這樣的樣本我可以不再管,可對錯誤是1的樣本,我開始改變自己,你總得告訴我,我改變之后,離錯誤為0是近了還是遠(yuǎn)了吧。你這都不告訴我,可讓我怎么優(yōu)化我自己呢?”

其實,δ心中清楚,只要f朝著使y*f(x)增大的方向優(yōu)化自己,就會變得越來越完美。但δ就像一個刻板的父親,只愿意告訴f它做的是對是錯,不屑于告訴它如何做對。

可見,δ的問題主要在于兩點(diǎn),f預(yù)測錯誤時不告訴正確的方向,其二,f即使剛剛預(yù)測正確,立馬告訴f錯誤為0,達(dá)到perfect,而不會指導(dǎo)f朝更加優(yōu)秀的方向去努力。

l相當(dāng)于我們?yōu)閒找的一個溫柔的母親,什么樣的母親會是合格的母親呢,當(dāng)然是能夠很好地糾正父親δ的缺點(diǎn)的母親。對一個樣本,如果f預(yù)測錯誤,即y*f(x)是負(fù)的,它會告訴f,越負(fù)錯誤程度越大,要趕緊想辦法增大y*f(x),同時,因為預(yù)測錯誤時,δ說錯誤程度是1,做為母親的l可不敢頂撞δ,所以我們希望l告訴f 的錯誤程度應(yīng)當(dāng)要大于1。畢竟,δ才是真正的權(quán)威(這里無意宣傳男權(quán)思想,只是為了敘述的簡明,請女士們不要誤解)

另一方面,當(dāng)f對一個樣本預(yù)測正確時,即y*f(x)為正,l應(yīng)當(dāng)鼓勵f朝更加正確的方向去優(yōu)化,而不應(yīng)當(dāng)像δ那樣,一旦f預(yù)測正確,就告訴它錯誤程度為0,讓f驕傲自滿,不思進(jìn)取。

以上,我們大致分析了l應(yīng)當(dāng)具有的性質(zhì)。svm和lr就是兩種相似但又不同的l,下面我們具體分析下。

#3 lr的l是完美的母親

lr模型為f找的l是這個樣子的:

只從數(shù)學(xué)式子上看,好像看不出啥意思,我們將它畫出來就清楚了。

看到這個圖,會不會豁然開朗,這不就是我們在第二部分中描述的完美的母親形象嗎!當(dāng)f對樣本(x,y)預(yù)測錯誤時,l評估的錯誤程度總是大于1的,并且,y*f(x)越負(fù),則l評估的錯誤程度越嚴(yán)重,同時,l會指出正確的優(yōu)化方向。同時,當(dāng)y*f(x)為正時,l并不會像δ那樣立馬告訴f,對這個樣本的錯誤程度為0了,而是會告訴f,此時的錯誤已經(jīng)小于1了,如果能讓y*f(x)更加大,則錯誤還會繼續(xù)減小的,從而讓f精益求精。

#4 svm的l更像一個年長的姐姐

svm為f找到的l是這個樣子的:

喲!這個l長得也蠻怪哦 ,啥也不說了,無圖無真相:

對比svm和lr,我們發(fā)現(xiàn),當(dāng)f對一個樣本預(yù)測錯誤時,它們的l是比較類似的,當(dāng)f對樣本剛剛預(yù)測正確時,它們的行為也是類似的,只不過一個是曲線,一個是直線而已。但是,當(dāng)f對樣本預(yù)測正確并且大于一定程度時,確切說就是當(dāng)y*f(x)大于1時,二者的行為明顯不同,lr的l還會鼓勵f繼續(xù)增大y*f(x),而svm則會告訴f,對這個樣本預(yù)測已經(jīng)非常完美了。

#5回答文章題目中的問題

知道了svm和lr 區(qū)別,我們再來看看,所謂out lier,是怎么產(chǎn)生的,無非有兩種情況,一種就是這個樣本的標(biāo)簽y搞錯了,一種就是沒搞錯,但這個樣本是一個個例,不具備統(tǒng)計特性。

不論對于哪一種情況,svm會在f將這個out lier預(yù)測的比較正確時,就停止,不會一直優(yōu)化對out lier的預(yù)測,因為沒有什么太大意義了。而lr則不同,它會繼續(xù)要求f對這個out lier的預(yù)測進(jìn)行優(yōu)化,并且永不停止,顯然,這樣的優(yōu)化很可能會削弱f的泛化性能,因為沒有必要死磕out lier 。

答案就是SVM?。?!

作者:milter

鏈接:http://www.itdecent.cn/p/1a41a1567b87

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

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

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

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