關於SVM數學細節邏輯的我的理解(一) :獲得最大間隔分類器的基本形式

 

網上,書上有不少的關於SVM的資料,可是我以爲一些細節的地方並無講的太清楚,下面是我對SVM的整個數學原理的推導過程,其中邏輯的推導力求每一步都是有理有據。如今整理出來和你們討論分享。算法

由於目前個人SVM的數學原理尚未過多的學習核函數,因此下面的整理都不涉及到核函數。並且由於不少地方我還沒理解太透,因此目前我整理的部分主要分爲:網絡

①最大間隔分類器,其中包括優化目標的一步步推導,還有關於拉格朗日函數,KKT條件,以及對偶問題等數學優化的知識機器學習

②軟間隔優化形式,即加入了鬆弛變量的優化目標的一步步推導函數

SMO算法工具

 下面是第一部分,獲得SVM的基本形式。學習

.前言:

雖然仍是有不少地方不能理解,可是我以爲目前理解的程度已經進入了一個瓶頸了,或許從頭整理一遍會突破呢。(後來證實確實本身整理推導一遍有很大的收穫)優化

不得不說SVM是真的難,神經網絡若是說難就難在反向傳播算法,不過那也只是個鏈式求導法則,而SVM則涉及到最優化的大量數學知識,畢竟光是一個SVM就能寫本書(《支持向量機導論》)的...spa

OK,開始整理整個SVM的思路。可能一開始仍是有不少不清楚的地方,不過慢慢修改吧。3d

並且想要本身畫一些圖,可是目前還沒找到好的工具,因此就先剪切一些書上的圖,我會標註好來源的。blog

二.獲得最最基本的形式

(不知道起什麼題目更好)

 

 

圖來自於機器學習P121

我以爲不少人可能對SVM要作什麼很熟悉了,如今仍是囉嗦一下:

如今給你訓練數據,其中(牢記這個,在後面很重要),咱們要作的就是找到一個超平面能夠把這兩類數據給分開。如今假設,這個數據集是線性可分的(先考慮數據集是線性可分的狀況),那麼咱們其實能夠找到不少超平面來分開這兩類數據,好比上面這個圖中能夠看到由不少狀況。那麼咱們該找哪一種狀況呢?

 

直觀上看,咱們須要找的這個超平面,它離兩邊的不一樣類型的數據集距離最遠」,就好比上面加粗的那條直線。這個直線看起來距離兩類數據集是「最遠的」,這樣在預測時可能更準確一些,這個我以爲你們都能理解。但這是直觀上的說法,若是要使用數學原理來解決,咱們首先須要找到衡量平面到數據集的距離遠近的標準,這就引出了函數間隔」和「幾何間隔」的概念。

(尋找最大間隔直觀上看是最優的,並且其實背後有對應的數學原理,我記得在《支持向量機導論》中應該是第四章講了,可是目前仍是沒太理解,你們有興趣能夠看一看)

 

1.函數間隔與幾何間隔定義

首先咱們定義超平面的表達式爲,那麼複習一下高中學的知識咱們知道,平面上一個點x到這個平面的距離是,而這個就是幾何間隔的定義。

(若是不熟悉這個,那確定熟悉一個點(x,y)Ax+By+C=0,的距離公式是

函數間隔是什麼呢?這裏就須要強調的取值了:,對於正樣例它的label+1,對於負樣例它的label-1。(因此乘上不改變原來的絕對值)

咱們用來表示一個樣本點到這個超平面的函數間隔

(關於函數間隔的定義是在《支持向量機導論》第二章中找到的)

2.函數間隔與幾何間隔的關係

須要注意的是,若是找到了一個超平面能夠正確分開這個數據集,那麼意味着對於每一個樣本點x來講,其實它的函數間隔大於等於0,即:

 

我以爲這一步理解很關鍵。具體解釋就是:對於正樣例,由於它的=1,而由於它被正確分類了,因此它的,因此能夠獲得,對於負樣例同理。

(不少書上直接給出,我以爲思惟跨度就有點大了,關於的說明後面講)

而後進一步咱們其實能夠獲得,若是這個樣本被正確分類了,那麼:

 

因此函數間隔其實也能夠用表示。

回顧以前幾何間隔的計算式子,不少時候其實分子都不用絕對值符號來表示,咱們能夠把分子的絕對值換成函數間隔,那麼這個樣本到超平面的幾何間隔其實就能夠寫成:

 

因此我以爲這就是函數間隔和幾何間隔之間的關係,即在樣本集線性可分的狀況下,對於某一個成功分類的超平面來講,每一個樣本點到這個超平面的幾何間隔就是函數間隔再除以範數

3.定義超平面到訓練集的間隔

 

而後咱們以前的幾何間隔,函數間隔什麼的都是點到平面的距離,如今咱們定義一個超平面到訓練集間隔爲這個超平面到訓練集的每一個點的幾何距離最小的距離。

(關於這個的定義我是參考了《Pattern Recognition and Machine Learning 》關於SVM的講解,這本書是我見過的講的最細的了)

這個平面到數據集的間隔就是咱們一開始直觀感覺時所須要的那個衡量遠近的數值。

從這個意義上來講,其實咱們在衡量一個平面到數據集的「遠近」時,咱們其實只須要看的是到全部的樣本點距離中最近的那個。

 

因此對於一個超平面(ω,b)咱們能夠獲得它到給定訓練集的間隔爲:

 

這個式子很容易理解,若是放進min裏面,即,就表示在每一個幾何間隔中找最小的。由於和具體樣本點無關因此被提了出來,而後後面的

就是表示訓練集中每一個點到這個超平面的函數間隔中的最小值。

這裏還須要理解的是,若是給定了這個分類超平面,那麼這個超平面到訓練集的距離就定了,由於訓練集是給定了每一個點是固定的。因此超平面若是調整,這個間隔就會變化。

 

4.獲得最最原始的優化目標

因此咱們如今須要找到這麼一個超平面,它不但能夠正確分類,並且它到訓練集的間隔是全部可正確分類的超平面中最大的。這也是咱們一開始提出的那個直觀上的問題。

 

而後咱們就能夠獲得咱們的最最原始的優化目標了:

 

(寫到這裏我在想一個問題,如何能保證按照這個優化目標找出來的超平面它正好到正樣本集和負樣本集的間隔是同樣的。通過思考後發現,這個已經被包含在了這個優化目標內部。能夠這麼解釋:由於其實我以爲咱們能夠把平面優化分爲ω的最優化和b的最優化,對於相同的ω,不一樣的b的平面都是平行的。當ω固定時,這時一個正樣本到這個平面的距離和一個負樣本到這個平面的距離之和的最小值也固定了!後面補圖說明。

可是不一樣的b會致使不一樣,不一樣的b會致使平面保持相同的「斜率」平移。發現由於這裏取最小值。因此咱們假設這個平面從正負樣本的正中間往正樣本方向偏離一小段距離,那麼多是到正樣本距離變小,到負樣本的距離變大,可是注意到是取最小值,因此這個最小值就會從原來的1/2變小,並非咱們最後的最優的結果,因此從這個角度看,直線位於正中間是最優的。)

(這個最原始的優化目標不少書上都沒有,我也是在《Pattern Recognition and Machine Learning》這本書上找到的,這本書至關不錯)

 

.獲得SVM的基本形式

 

獲得這個最最原始的優化目標後,直接嘗試解決它是很複雜的。咱們還能夠進一步簡化。注意到若是咱們對ω和b同時進行縮放,即,而後把kω和kb代入原來的式子,會發現對原來的優化問題並無影響,因子都被約了。那咱們就能夠經過這個特性來簡化式子。

因此咱們不如就讓這個1,即咱們經過同時縮放ω和b距離超平面最近的那些樣本點的函數間隔爲1,這樣調整後,不只對原來的優化問題沒有影響,並且還能簡化計算。

(這裏縮放須要理解到位,同時縮放ω和b,會改變每一個樣本點到這個超平面的函數間隔,可是並不會改變每一個樣本點到這個超平面的幾何間隔,因此咱們不如就讓距離這個超平面最近的那些點的函數間隔1,簡化了計算,可是也帶來了約束

可是既然設置了=1,那麼就意味着增長了約束

對於離超平面最近的那些樣本點,它們的

對於其餘的樣本點,它們的

因此如今能夠說:當能夠找到一個超平面正確分類給定的訓練集時,每一個樣本點的函數間隔知足:

 

這個就是簡化所帶來的約束條件

如今咱們看一看簡化後的優化式子變成了:

 

約束就是上面的對於每一個樣本點知足

可是咱們通常把這個優化問題轉化爲和它等價的:

 

並且通常會加上係數1/2,書上說是爲了以後推導的方便。

因此如今咱們的優化問題變成了:

 

  其中i=1,2,3...m

這個就是《機器學習》書上說的SVM的基本形式。

 

 

 

如今整理一下推導出這個基本形式的過程:

(1)最最原始的優化目標:,即咱們須要在每一個能夠正確分類的平面中,找到一個到數據集的間隔最大的平面,其中間隔被定義爲這個數據集樣本到這個平面的最小距離

(2)根據wb縮放後優化目標不變,咱們就可讓1來簡化這個問題,獲得,而後再轉化爲等價的

,可是注意此時就有了約束條件了!

 

能夠看到光是獲得這個最基本的形式的推導其實就有不少不少須要思考和理解的細節。

PS:誰知道如何把word上的公式方便的粘貼到網頁上?必須得一個一個複製...

參考資料彙總:

[1]《機器學習》

[2]《支持向量機導論》

[3]《Pattern Recognition and Machine Learning》

相關文章
相關標籤/搜索