1. 程式人生 > >絕對通俗易懂SVM的理解,大白話

絕對通俗易懂SVM的理解,大白話

本文目的,站在一個小白的角度,從簡單易懂的角度分析下SVM,有不對的地方還請指出,感激不盡

主要參考博文:

http://f.dataguru.cn/thread-371987-1-1.html

http://blog.csdn.net/dadouyawp/article/details/51059469

http://blog.csdn.net/lisi1129/article/details/70209945?locationNum=8&fps=1

http://blog.csdn.net/abcd_d_/article/details/45094473

在看本文前建議讀者對邏輯迴歸有一定的瞭解,廢話不多說,開始正題:

首先,我們先看一下下面這張圖:


我們從簡單易懂的二維舉例,假設資料有正反兩個分類,我們需要訓練一個超平面,把這兩個分類給分開,那上圖的3條直線,哪一條是最優的呢?

SVM裡的觀點:距離超平面最小的樣例,我們稱之為支援向量,我們所要找的最優超平面,就是使支援向量到超平面距離最大,我們認為,這樣的超平面,就是最優的,下面也是要想辦法求出這個超平面。SVM的核心問題就是找到這一超平面

超平面:在一維空間裡就是一個點,在二維空間裡就是一條直線,三維空間裡就是一個平面,可以如此想象下去,如果不關注空間的維數,這種線性函式還有一個統一的名稱——超平面(Hyper Plane)!

我們假設這一超平面為,其中W轉置後是橫向量,X為縱向量,我們可以舉個二維簡單的例子來說明為什麼超平面可以這樣假設:x+y+1=0,此時W就是(1,1),X是豎著的(x,y

),b=1,矩陣乘法後就是我們的假設x+y+b=0,在高維的情況也是同理

其實不易於理解,我們再拿x+y+1=0舉例說明下一步的問題,x+y+1=0是一條直線,在這條直線上的點,全部符合x+y+1=0,在這條直線的右邊所有點,全部大於0,左邊的點全部小於0,所以我們可以拿這條直線來分類,右邊全部為正例,分類label用+1表示,左邊全部為反例,用-1表示。

分類label為什麼跟邏輯迴歸那樣用0,1表示?這裡其實是為了數學計算上的方便,先引入點到直線距離公式,此公式是二維平面的點到直線的公式,我們需要的是更加寬泛的樣本到超平面的距離,所以上述公式我們一般化到,這樣以來,分母的絕對值可以去掉,但是分子還有絕對值,怎麼辦呢?沒錯,就是讓分子去乘以分類標籤label,如果某一樣例被分為正例,那上式的分子為大於0,乘以label後也是大於0,如果某一樣例被分類為反例,label為小於0,分子小於0,所以它們相乘後還是大於0(這樣的假設是資料是線性可分的,當然資料若線性不可分,會用到鬆弛變數或者核函式解決),這樣就能把上公式化為:

(公式一),其中y代表label。

下面我們就要談談怎麼獲取超平面了!!!

先引入需要優化的最核心的公式

(公式二)。一點一點的來解釋下這個公式,上面我提到過,SVM是要求這麼一個超平面,這個超平面要距離支援向量最遠,公式二中min表示的就是n個樣本中距離超平面最近的點,也就是找到支援向量(min後面到公式結束就是距離公式),max表示支援向量最大,好吧,我承認說的有點繞,下面上個圖解釋下:

r1和k1就是支援向量(距離超平面最近的兩個點),此時我們所要找的超平面,就是中間的紅線,在解釋下r1和k1為什麼都等於1。我們要優化的目標是公式二,明顯公式二太複雜了嘛,我們要想辦法化簡一下,在說明具體化簡方法前,先提出幾個概念

函式距離和幾何距離:幾何距離很好解釋,就是公式一,在影象裡就是我們眼睛所看見的點到直線的實際距離,而函式距離是,由公式可知,函式距離並不是點到直線的實際距離,因為在x確定的情況下隨著w和b的增長,函式距離可以無限變大,同時我們還可以觀察出,函式距離和幾何距離只差了公式一的分母,從此,我們可以得出一個有趣的結論,隨著w和b的同倍數改變,函式距離會發生變化,而幾何距離不會發生變化。

提出函式距離後,就可以優化公式二了,注意到公式二這部分,min裡面的正是函式距離,所以我們可以控制支援向量的函式距離為1(也就是上圖為什麼r1和k1等於1了),那麼比支援向量更遠的點,函式距離必然大於1,因為公式一顯示,在w和b不變的情況下,距離直線越遠的點,公式一必然大,而分母沒有發生變化,那自然就是分子(函式距離)變大了。故函式距離是大於等於1的,它的直接就是等於1了。這樣我們的核心優化公式就變成了

,s.t代表約束條件,是我們強制加的,所以後面的運算也要一直帶著這一約束條件。

再進一步化簡:

(公式三)

為什麼我們能控制支援向量的函式距離為1?我們設wTx+b=a,兩邊除以a就是1了,我們總能通過控制w和b使得等式左邊=1。

現在我們把我們的最終問題,優化到了求公式三,所滿足的w和b。觀察公式三,難道不是w取0,時,公式三取得最小值0嗎?回答這個問題,先看一個圖:我們所要求的核心公式二的值,就是對應此圖的H與H1之間的距離,若w取0(無限逼近),則這個距離margin變的無限大,這個時候,所有的樣本點(無論正樣本還是負樣本)都跑到了H1和H2中間,而我們原本的意圖是,H1右側的被分為正類,H2 左側的被分為負類,位於兩類中間的樣本則拒絕分類(拒絕分類的另一種理解是分給哪一類都有道理,因而分給哪一類也都沒有道理)。這下可好,所有樣本點都進入了無法分類的灰色地帶。造成這樣的情況,原因是我們忘了考慮公式三的約束條件。

下面我們在分析公式三怎麼求解

求一個帶約束條件的min,這裡用到一個數學方法,叫拉格朗日乘子法。把公式三轉化為公式四(暫時不考慮公式三的min):

(公式四)

其中
α={α1,α2,,αm},αi0(拉格朗日的要求)

稍微解釋下公式四,其實拉格朗日乘子法很簡單,帶約束的min我們不好求,就想辦法把這個約束加到公式裡,這樣就好求了,具體加的方法就是有多少個約束條件,就把這些約束條件乘以αi,再累計相加就行了,然後求求哪個變數的極值就是對哪個變數求偏導

這樣以來,我們的核心約束公式又變麻煩了,不要急,我們會用一個簡單的方法來求解:

首先,我們要知道有這樣一個等式成立:

                                   (公式五)

簡單證明一下上式:當公式四滿足公式三的約束條件時,  公式四關於α取最大是當α=0

的時候,這個時候的最大值就是

這樣,公式三可以轉化為(公式六),然後利用拉格朗日對偶性,進一步轉換成:(公式七)。對於這一步,我看了很多部落格和視訊,基本都沒有提為什麼這樣解,最多也就是說,這樣解比較方面,這樣的描述我認為對初學者是很難理解的,所以我想用我的理解來分析一下,如果有不對的地方還請指出。是這樣的,我們回到公式四,我們的目標是求公式三的min,為了求公式三的min我們轉化到了公式四,而我們並不關心公式四的極值,但是我們找到了公式四公式三的關係,即公式五,通過公式五把求公式三min的問題轉化到了求公式六,但是觀察公式六可知,若先求max,再求min,又會回到公式三,故我們利用拉格朗日的一條性質,即對偶性(具體證明可以網上查一下,不過我覺得沒必要搞太數學的東西,直接用就可以),轉換到了公式七,到達公式七,我們的目的就達到了,成功把帶約束求極值的問題轉換到了沒有約束的求極值,下一步再分析公式七如何求解w和b,最終確定這一超平面。

求解公式七:

很明顯,第一步要先求,上面提到過,對於拉格朗日乘子法求變數極值,就對變數求偏導:

(公式八)

公式L(w,b,a)能取到min,w,b必滿足上式,於是我們把上式帶入L可以到的:


即:(公式九)

具體就是帶進去算一算就出來了,這裡就不詳細描述了,不過要注意一點,有的課本或者部落格把公式九的雙求和符號寫成1個,底下標出i,j其實是一個意思。

到這裡,我們發現公式九並不包含我們超平面的w和b呀,怎麼回事?

其實,觀察公式八,我們可知,若求出,w便很容易求出,有了w,別忘了我們之前的強制設定支援向量的函式距離等於1,即為1,便可以方面的求出b了。到現在我們的問題轉化為求α。即:

在約束條件:

    s.t     :

下的最小值,此時的α

約束條件怎麼來的?第一條,很簡單,公式八帶來的,第二條是拉格朗日乘子法帶來的,拉格朗日乘子法要求乘子αi必須大於等於0

未完待續