機器學習之支持向量機(一):支持向量機的公式推導

注:關於支持向量機系列文章是借鑑大神的神做,加以本身的理解寫成的;若對原做者有損請告知,我會及時處理。轉載請標明來源。html

序:

我在支持向量機系列中主要講支持向量機的公式推導,第一部分講到推出拉格朗日對偶函數的對偶因子α;第二部分是SMO算法對於對偶因子的求解;第三部分是核函數的原理與應用,講核函數的推理及經常使用的核函數有哪些;第四部分是支持向量機的應用,按照機器學習實戰的代碼詳細解讀。算法

機器學習之支持向量機(一):支持向量機的公式推導機器學習

機器學習之支持向量機(二):SMO算法函數

機器學習之支持向量機(三):核函數和KKT條件的理解post

機器學習之支持向量機(四):支持向量機的Python語言實現學習

1 認識向量機

支持向量機是處理數據分類問題,目的是學會一個二分類的函數模型,屬於監督式學習的方法,被普遍應用於統計分類和迴歸分析。經過創建一個超平面對樣本數據進行分類,超平面涉及到凸優化及核函數的應用,而對於怎麼找到最優的超平面就是這部分要講的內容。優化

2 線性分類

假設數據樣本集是線性可分,即存在一個超平面將其分紅兩類。如下推導的過程都是基於線性可分,非線性分類是在線性分類加上一個鬆弛因子,下面開始線性分類的推導。atom

2.1 線性分類的標號

在以前的Logistic 迴歸算法中,咱們是把數據分紅 0 和 1 ,而這裏爲了之後的推導式子的通用性,採用 -1 和 1 兩類。分類函數爲 f (x) = ωTx + b ,其中 ω = (ω1 ,ω,... , ωn),x = (x1, x2 , ... ,xn)。通俗的講支持向量機的解決的問題是找到最好的分類超平面,例如,在二維平面中其超平面就是一根直線,以下圖所示在能將兩類分開的直線中找到最佳的直線。評判直線的最佳的標準是:在能分類的狀況下,樣本點與直線的距離越遠,說明直線就越佳。這就引出函數間隔和幾何間隔對選取的直線的評判。spa

2.2 函數間隔和幾何間隔

  通常而言,一個點距離超平面的遠近能夠表示爲分類預測的確信或準確程度。在超平面 wTx+b=0 肯定的狀況下,|wTx+b| 可以相對的表示點x到距離超平面的遠近,而 wTx+b 的符號與類標記 y 的符號是否一致表示分類是否正確,因此,能夠用量 y(wTx+b) 的正負性來斷定或表示分類的正確性和確信度。即,y(wTx+b) > 0 時分類正確;y(wTx+b) < 0 時分類錯誤。.net

2.2.1 函數間隔

 超平面 f ( x ) 關於樣本點(x (i) , y (i))的函數間隔:

對於樣本集中的每一個樣本點都與超平面有函數間隔,但只能選取最小值:

定義是爲了最大化間隔,表示關於超平面與訓練集中樣本的函數間隔最小值,下面只要最大化便可。 注意到函數間隔實際上並不能表示點到超平面的距離,由於當超平面,b)參數擴大相同的倍數後,如(,2b),超平面的位置並無改變,可是函數間隔也變大了相同的倍數2γ^(i)。

 

 2.2.2 幾何間隔

 

如圖所示,樣本點A的座標爲 x (i) ,A 到超平面的垂直距離爲 γ(i) ,超平面的單位法向量是 ω / || ω || ,B點是超平面上一點且是A點的投影,則 B 點的座標 x(i) - γ(i) ω / || ω || ,將其帶入超平面方程 f (x) = ωT x + b =0 .

若是分類正確,則 y(i) 與 f( x(i)) 符號相同,幾何間隔是:

超平面與樣本集的幾何間隔是:

如上所述,函數間隔與幾何間隔的關係有: , 若|| ω || = 1,那麼函數間隔與幾何間隔相同。

2.3 間隔最大化

如今又進一步,由原來的求一個超平面到如今求超平面的最大間隔。經過函數間隔與幾何間隔的定義知利用幾何間隔衡量最佳的標準是合適的,由於幾何間隔是真正意義上的距離,如同咱們求點到平面的距離同樣:

接下來再介紹一個概念:支持向量。以下圖所示,假設中間的紅線是超平面,那麼虛線上的樣本點就是支持向量。

這樣一來,咱們就能夠定義間隔最大化:

                                           max 

 

須要知足的條件是:

 間隔的有效的樣本點是支持向量的點,便是符合函數間隔等於 1 的點。那麼就能夠對間隔的最大化能夠爲:

其中,s.t.,即subject to的意思,它導出的是約束條件。

2.4 向對偶問題轉化

 由上面的式子通過變化,獲得凸優化問題,即 將max 1/ || ω || 轉化成求 min 1/2 || ω || 2 ,二者是等價的。

轉化到這個形式後,咱們的問題成爲了一個凸優化問題,或者更具體的說,由於如今的目標函數是二次的,約束條件是線性的,因此它是一個凸二次規劃問題。這個問題能夠用任何現成的QP的優化包進行求解,歸結爲一句話便是:在必定的約束條件下,目標最優,損失最小。

除了用解決QP問題的常規方法以外,還能夠經過求解對偶問題獲得最優解,這就是線性可分條件下支持向量機的對偶算法,這樣作的優勢在於:一者對偶問題每每更容易求解;兩者能夠天然的引入核函數,進而推廣到非線性分類問題。

如今要對凸優化進行求解,如今給出的經驗求解方法是,經過求解對偶問題獲得最優解。對偶問題是什麼?這就要引出拉格朗日函數,將約束條件融合到目標函數中,經過給每一個約束條件加上一個拉格朗日乘子 α 。

而後令:

如今咱們的目標函數變成了:

對這個公式的理解:在知足約束條件(即樣本點爲支持向量)下,最大的幾何間隔中取最小的值。max L(w,b,a) 是獲得支持向量的樣本點,而後再這些樣本點中找到min 1/2 || w ||的最小值(最大間隔)。

注意了,對偶問題出來了(p* 是原來的問題,d* 是對偶問題),將最小最大的位置交換,獲得下面的式子:

交換以後的問題就不等價了,有如下關係:d* <= p* 。但在知足某些條件下(KKT條件),二者是相等的。如今咱們把對偶問題得出了,但怎麼對偶問題進行求解呢?繼續向下看,最終的目標式子就要出來了。

2.5 對偶問題的求解

 上述可知,原來問題與對偶問題的等價條件是知足某些條件,條件就是KKT 。不知道KKT 條件不要緊,如今你只須要明白原來問題是知足KKT條件,KKT 條件在覈函數中講解。而求解這個對偶學習問題,分爲3個步驟:一、讓L(ω, b,  α)關於 ω 和 b 的最小化;二、求 α 的極大;三、利用SMO算法求解對偶因子(α)。這裏主要講1 和 2 ,步驟 3 在第二部分講。

步驟 1 : 固定 α ,而後L(ω, b,  α)對 ω 、b 求偏導,另其偏導數等於零。

把結果帶入L:

獲得:

其中的推導過程以下:

步驟2 :對 α 求極大,經過步驟 1 已經把 變量 ω 、b  消去,函數只有 α。

若是咱們把對偶因子求出,那麼咱們就能夠獲得最佳的超平面 f (x) = ωT x + b ;

b 根據KKT條件 ,αi [ y(i)Tx(i) + b ) -1] =0, i =1, 2 ,..., m ,其中必然存在一個αj 不等於0 ,y(j)Tx(j) + b )=1 ,兩邊同乘以 y(j) 可得:

b = y(j) - Σi=1mαi y(i) x(i)x(j)  , 也能夠對全部知足條件的b加權平均。

到這裏咱們把目標函數 f(x) 的求解轉化成對對偶因子的求解,正如 July 大神總結的同樣。下部分對SMO算法求解過程的推導。

 

機器學習之支持向量機(一):支持向量機的公式推導

機器學習之支持向量機(二):SMO算法

機器學習之支持向量機(三):核函數和KKT條件的理解

機器學習之支持向量機(四):支持向量機的Python語言實現

參考:

支持向量機通俗導論(理解SVM的三層境界)http://blog.csdn.net/macyang/article/details/38782399/

【機器學習詳解】SVM解二分類,多分類,及後驗機率輸出 http://blog.csdn.net/luoshixian099/article/details/51073885