關於SVM數學細節邏輯的個人理解(一)

夜空中最亮的不咚發表於2018-04-11


轉載: http://www.cnblogs.com/xxrxxr/p/7535587.html

網上,書上有很多的關於SVM的資料,但是我覺得一些細節的地方並沒有講的太清楚,下面是我對SVM的整個數學原理的推導過程,其中邏輯的推導力求每一步都是有理有據。現在整理出來和大家討論分享。

因為目前我的SVM的數學原理還沒有過多的學習核函式,所以下面的整理都不涉及到核函式。而且因為很多地方我還沒理解太透,所以目前我整理的部分主要分為:

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

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

③SMO演算法

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

一.前言: #

雖然還是有很多地方不能理解,但是我覺得目前理解的程度已經進入了一個瓶頸了,或許從頭整理一遍會突破呢。(後來證明確實自己整理推導一遍有很大的收穫)

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

OK,開始整理整個SVM的思路。可能一開始還是有很多不清楚的地方,不過慢慢修改吧。

而且想要自己畫一些圖,但是目前還沒找到好的工具,所以就先剪下一些書上的圖,我會標註好來源的。

二.得到最最基本的形式 #

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

(圖來自於《機器學習》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)根據w和b縮放後優化目標不變,我們就可以讓為1來簡化這個問題,得到,然後再轉化為等價的

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


相關文章