【干貨】支持向量機SVM算法推演

【干貨】支持向量機SVM算法推演

來源:海闊心

盡管早就聽說SVM比較復(fù)雜,當(dāng)真正下筆推導(dǎo)時其復(fù)雜程度還是出乎意料,上周花了整整兩天的時間把支持向量機分類算法的每一個細(xì)節(jié)推導(dǎo)了一遍,但很遺憾智力及時間有限,最核心的SMO算法仍然有幾個公式?jīng)]能推導(dǎo)出為什么,因此本文將只推導(dǎo)出一個完整的SVM算法,SMO部分留待日后再續(xù)。

本文旨在進一步理順SVM的算法思路,加深理解,關(guān)于SMO算法、KKT法則以及核函數(shù)的介紹并不細(xì)致(以后有機會逐個拿出來介紹),算是一個粗略的學(xué)習(xí)筆記,歡迎各位大神指正、拍磚、給出好的建議,無論是關(guān)于SVM的還是其他算法抑或機器學(xué)習(xí)的任何方面。

當(dāng)然,關(guān)于SVM的內(nèi)容已經(jīng)有很多經(jīng)典的論文、書籍包括博文問世,最基本的原理部分免不了會有重復(fù),文末會給出本文的參考文獻及其版本。好了,步入正題。

一、邏輯回歸

支持向量機(support?vector?machine),簡稱SVM,是一種二類分類模型。理解SVM需要先理解邏輯回歸,我們先簡單回顧邏輯回歸的知識,再引出SVM。

給出一堆n維樣本數(shù)據(jù)(x,y)其中x是表示樣本的特征數(shù)據(jù),y表示樣本的類別標(biāo)簽(-1,1),此處-1和1并無特別含義,僅僅是代表兩個不同的類別,SVM分類器的學(xué)習(xí)目標(biāo)便是在這堆樣本數(shù)據(jù)中找到一個超平面可以將這些樣本分成兩類,這個超平面的方程可以表示為:

邏輯回歸的目的是通過訓(xùn)練從樣本數(shù)據(jù)中學(xué)習(xí)特征,訓(xùn)練出一個0/1分類器,通常以樣本所有特征列(不包括標(biāo)簽列,假設(shè)標(biāo)簽為0,1)為自變量,表前列為作為因變量,模型對因變量的預(yù)測結(jié)果是從負(fù)無窮到正無窮。成熟做法是用logistic函數(shù)將預(yù)測結(jié)果映射到(0,1)上,映射后的值被認(rèn)為是y=1的概率。

假設(shè)函數(shù)

其中x是n維自變量,函數(shù)g即為logistic函數(shù),而

的圖像如下:

可以看到,logistic 函數(shù)將因變量映射到(0,1)范圍內(nèi),上述假設(shè)函數(shù)即為y=1的概率

那么當(dāng)新的樣本點到來時,我們只需要算

即可,若大于0.5,就認(rèn)為是屬于y=1的類,反之屬于y=0的類。

下面我們對邏輯回歸做一個變形,首先將標(biāo)簽由(0,1)變?yōu)椋?1,1),然后將

)中的替換為b,最后將后面的

替換為

,則有了

,由此看來,除了將因變量標(biāo)簽由(0,1)變?yōu)椋?1,1)外,邏輯回歸函數(shù)與SVM分類器函數(shù)

并沒有什么區(qū)別。我們通過以下映射函數(shù)將y映射到(-1,1)

二、函數(shù)間隔(function margin)和幾何間隔(geometrical margin)

對于一個樣本點,在超平面(w,b)確定的情況下,|w*x+b|可以表示該樣本點到超平面的遠近(注意不是距離),而通過觀察w*x+b與標(biāo)簽y的符號是否一致可以判斷分類器分類的正確性,于是,引出函數(shù)間隔的概念:

而超平面(w,b)關(guān)于所有樣本點的函數(shù)間隔最小值便為超平面(w,b)關(guān)于訓(xùn)練數(shù)據(jù)集(xi,yi)的函數(shù)間隔(其中x表示特征,y表示類別標(biāo)簽,i表示第i個樣本):

=min

i ?(i=1,...n)

此時若成比例的改變w和b(比如2w,2b),那么函數(shù)間隔也會同比例改變,而此時超平面并未發(fā)生改變,間隔卻是不確定的!因此需要引出幾何間隔,才能更精準(zhǔn)的描述樣本點到超平面度的距離。

假定對于一個點x,其垂直投影到超平面上的對應(yīng)點是x0, w是垂直于超平面的一個向量,

為樣本x到超平面的距離,如下圖:

由平面幾何知識知道有:

其中||w||是w的二階范數(shù),

為單位向量,又有x0位于超平面上,滿足f(x0)=0, 帶入

。

兩邊同時乘以

, 再有

可以算出:

乘上對應(yīng)的類別y,即得出幾何間隔的定義:

由函數(shù)間隔和幾何間隔的定義知道,幾何間隔就是函數(shù)間隔除以||w||,而函數(shù)間隔y*(w*x+b)其實就是|f(x)|, 只是認(rèn)為定義的一個度量,而幾何間隔才是直觀上點到超平面的距離。

三、最優(yōu)間隔分類器

對數(shù)據(jù)點進行分類時,數(shù)據(jù)點距離超平面的間隔越大則超平面分類的確信度就越高,因此我們需要讓找到的超平面使得數(shù)據(jù)點距離超平面的間隔最大化,如下圖間隔:

因為函數(shù)間隔

會因為w和b的縮放而等比例縮放,因此認(rèn)為幾何間隔比較適合用來最大化“間隔”,則最大間隔分類器的目標(biāo)函數(shù)可以為:

根據(jù)函數(shù)間隔的定義有:

又有幾何間隔的定義有:

若令函數(shù)間隔

為1,則易知

=1/||w||,且

,那么目標(biāo)函數(shù)轉(zhuǎn)化為:

如下圖中間的實線就是所找的超平面,兩條虛線間隔邊界上的點就是支持向量,這些支持向量在虛線間隔邊界上,那么滿足:

,而所有不在虛線上的點有:

。

四、原始問題轉(zhuǎn)化為對偶問題

前文已得到最優(yōu)化函數(shù):

等價于:

顯然目標(biāo)函數(shù)是二次的,又有線性約束條件,它是一個凸二次規(guī)劃問題,我們可以使用現(xiàn)有的優(yōu)化包求解,也可以通過拉格朗日對偶性變換到對偶變量的優(yōu)化問題,即通過求解與原問題等價的的對偶問題來求解超平面。

定義拉格朗日函數(shù)(不知道的請自行查閱高等數(shù)學(xué)或百度百科):

令:

在滿足約束條件的情況下最小化1/2||w||^2,目標(biāo)函數(shù)變?yōu)椋?/p>

表示此問題的最優(yōu)值,同原始問題等價。為易于求解,我們調(diào)換最大和最小的位置:

下面可以先求L對w,b的極小值,再求L對

的極大。

五、對偶問題的求解

(1)、先固定

,讓L對w,b求偏導(dǎo):

將偏導(dǎo)結(jié)果帶入L函數(shù)有:

化簡可得(此化簡過程用到了線性代數(shù)的轉(zhuǎn)置和乘積運算,感興趣可以自己推導(dǎo),并不難):

此時拉格朗日函數(shù)只包含一個變量

(求出了

就能求出w,b)。

(2)、求拉格朗日函數(shù)對

的極大

由(1)得知:

這樣求出

,又有可以求出w:

那么只剩下b可以這樣表示

這樣就得出了分離超平面和分類函數(shù)。

在L對w,b最小化以及對

最大化時,最后一步可以用SMO算法求解拉個讓日乘子

,本文并不推導(dǎo)SMO算(以后會單獨拿出一篇的章節(jié)來介紹和推導(dǎo)SMO),下面介紹非線性求解情況,并以此引入核函數(shù)。

六、線性不可分情況

通過以上推導(dǎo)我們知道所謂超平面其實就是把自變量x帶入:

得到結(jié)果后以正負(fù)號劃分分類。并有w:

分類函數(shù)為:

仔細(xì)觀察分類函數(shù),對于一個新的需要預(yù)測的點來說,只需要計算它與訓(xùn)練數(shù)據(jù)點的內(nèi)積即可。另外回憶一下我們之前得到的一個目標(biāo)函數(shù):

注意到若數(shù)據(jù)點xi是支持向量的話,上式中紅色部分為0(支持向量的函數(shù)間隔為1),而所有非支持向量的函數(shù)和間隔均大于1,紅色部分大于0,

是非負(fù)的,為滿足最大化,非支持向量的

均必須為0,因此針對新點的預(yù)測只需要針對少量支持向量進行計算即可。

目前我們的支持向量機分類器還只能處理線性分類,為推廣到非線性形式,下面稍稍介紹下核函數(shù)。

七、核函數(shù)

對于非線性數(shù)據(jù)分類的問題,SVM的通常做法是用一個和函數(shù)將數(shù)據(jù)由低維空間映射到高維空間,在高維空間中解決原始空間中線性不可分問題。

如下圖一堆數(shù)據(jù)點在二維空間中不可分,映射帶到三維空間中劃分:

由于對偶形式是線性學(xué)習(xí)器的一個重要性質(zhì),這意味著假設(shè)集可以表示為訓(xùn)練點的線性組合,因此決策規(guī)則可以用測試點和訓(xùn)練點的內(nèi)積來表示:

若可以在特征空間中直接計算內(nèi)積〈φ(xi?·?φ(x)〉,就像在原始輸入點的函數(shù)中一樣,將兩個步驟融合到一起建立一個非線性的學(xué)習(xí)器,這樣直接計算法的方法稱為核函數(shù)方法。

八、引入松弛變量處理 outliers

現(xiàn)實世界中的數(shù)據(jù)集常常是伴隨著大量的噪音,他們偏離正常的位置很遠,我們成為outliers,這些outliers對超平面的劃分會有很大的干擾,因為超平面本身就是由幾個支持向量決定的,如圖:

用黑圈圈起來的那個藍點是一個 outlier ,它偏離了自己本應(yīng)所在的那個半空間,若直接忽略掉它,超平面還是挺好的,但是由于 outlier 的出現(xiàn),分隔超平面被擠歪,變成途中黑色虛線,同時間隔也相應(yīng)變小了。若這個 outlier 再往右上移動一點,也許我們將無法建立成超平面。

在原本我們的約束條件上考慮到outliers的因素:

為松弛變量,表示我們能夠容忍對應(yīng)的數(shù)據(jù)點偏離函數(shù)間隔的程度,松弛變量不能無限大,在目標(biāo)函數(shù)加上一項約束他:

其中C是一個常數(shù),用來平衡“尋找最優(yōu)超平面”和“保證數(shù)據(jù)點偏差總量最小”這兩個約束的權(quán)重。將新的約束條件加入到目標(biāo)函數(shù)又有新的拉格朗日函數(shù):

同樣轉(zhuǎn)為對偶問題,讓L先對w,b和

極小化,

將以上結(jié)果帶入L函數(shù)然后化簡,你會驚奇的發(fā)現(xiàn)松弛變量竟然消失了!得到了和之前一樣的目標(biāo)函數(shù):

上面化簡得到

,又有

,因此有

,那么整個目標(biāo)函數(shù)和約束條件可以寫做:

把目標(biāo)函數(shù)和約束條件同之前對比發(fā)現(xiàn)只是對

的約束多了一個C,Kernel 化的非線性形式只需要把(xi,xj)換成K(xi,xj)。這樣一個完整的,可以處理線性和非線性并能容忍噪音和 outliers 的支持向量機就終于介紹完畢了。

SVM本質(zhì)上是一個分類方法,用w^T+b定義分類函數(shù),于是求w、b,為尋最大間隔,引出1/2||w||^2,繼而引入拉格朗日因子,化為對拉格朗日乘子

的求解(求解過程中會涉及到一系列最優(yōu)化或凸二次規(guī)劃等問題),如此,求w.b與求

等價,而

的求解可以用一種快速學(xué)習(xí)算法SMO,至于核函數(shù),是為處理非線性情況,若直接映射到高維計算恐維度爆炸,故在低維計算,等效高維表現(xiàn)。

關(guān)于SVM的深層理論我也不是理解的很透徹,本文僅作學(xué)習(xí)筆記之用,還有很多細(xì)節(jié)需要來回追究,還是那句話,歡迎各位大神指正、拍磚、給出好的建議,無論是關(guān)于SVM的還是其他算法抑或機器學(xué)習(xí)的任何方面。

參考文獻:

《深度學(xué)習(xí)》周志華版本

《統(tǒng)計學(xué)習(xí)方法》李航

《數(shù)據(jù)挖掘?qū)д摗稰ang-Ning Tan, Michacl Sterinbach, Vipin Kumar

《支持向量機導(dǎo)論》Nello Cristianini, John Shawe-Taylor

了解更多:

http://blog.pluskid.org/?page_id=683

http://www.cnblogs.com/jerrylead/

http://blog.csdn.net/johnnyconstantine/article/details/46335763

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內(nèi)容