1. 程式人生 > >學習SVM(四) 理解SVM中的支援向量(Support Vector)

學習SVM(四) 理解SVM中的支援向量(Support Vector)

我們在開始接觸SVM時肯定聽到過類似這樣的話,決定決策邊界的資料叫做支援向量,它決定了margin到底是多少,而max margin更遠的點,其實有沒有無所謂。
然後一般會配一張圖說明一下哪些是支援向量(Support Vector),這個圖在之前的學習SVM(二) 如何理解支援向量機的最大分類間隔裡面就有,這裡不在重複貼了。

但是問題的關鍵是,這些Support Vector是怎麼被確定的呢?
學習SVM(三)理解SVM中的對偶問題計算得到新的優化目標

這裡寫圖片描述
這裡寫圖片描述

注意這裡的約束條件有n+1個,之後只需要根據Data(x),Label(y)求解出滿足條件的拉格朗日系數a,並將a帶回求得w和b,於是就有了最後的決策邊界。(w,b,x,y,a都是向量)
這裡寫圖片描述


注意:在上面b的公式中,i=1,2,…,n。但是j卻沒有給值,這是因為j是任意一個支援向量都可以。

在這裡對w和b的公式的推導做一個簡短說明,w是通過拉格朗日求偏導後推出的;在學習SVM(二) 如何理解支援向量機的最大分類間隔中我們知道最大間隔為:
這裡寫圖片描述
那麼支援向量到決策邊界的距離為:
這裡寫圖片描述
同時根據點到直線的距離公式有:
這裡寫圖片描述
超平面(w,b)能夠將訓練樣本正確分類,即對於這裡寫圖片描述,因此去掉絕對值可以得到關於b的公式。

而非支援向量的資料就在求解引數a,w,b的過程中,前面的引數w求得的結果會為0,這樣就滿足了之前的說法,只有支援向量在影響著決策邊界的確定,舉個例子:

這裡寫圖片描述

上圖中有3個點,x1(3,3),x2(4,3),x3(1,1),對應的:y1=y2=1,y3=-1。
很顯然x1和x3是兩個支援向量,在決策平面的兩側,我們帶入到上面的公式求解一下:
由於兩個求和公式(n=3),所以括號裡面的是項會有9個,可以理解為兩個for迴圈巢狀啊

(哈~哈~),但是顯然這9項裡面是有重複的,因為a1*a2 = a2*a1,所以最後會剩下6項:
a1*a1,a2*a2,a3*a3,2*a1*a3,2*a1*a2,2*a2*a3,舉個例子確定前面的係數:
C*a1*a2 = [(x1)(x2)*y1*y2]a1*a2
C=2*[(3,3)(4,3)](1)(1)=2(12+9)=42

所以最後的結果如下:
這裡寫圖片描述

由約束條件得到:a3=a1+a2,帶入到min中可以求得一個關於a1
和a2的函式:

這裡寫圖片描述

要求它的最小值,求偏導啊~

這裡寫圖片描述

最後求解得到:
a1 = 1.5
a2 = -1

而a2 = -1的點不滿於a2>0的條件,所以最小值在邊界上取得。邊界情況要麼是a1=0,要麼是a2=0,於是:
a1=0時,我們應該把a1的值往s對a2的偏導裡面帶入:
a2=2/13 (滿足條件)
此時:
這裡寫圖片描述

a2=0時,我們應該把a2的值往s對a1的偏導裡面帶入:
a1=1/4 (滿足條件)
此時:
這裡寫圖片描述
顯然後面的結果更小,所以:
a1 = 1/4
a2 = 0
a3 = 1/4

到這裡就能驗證上面的結論了,a1和a3是x1和x3的係數,x1和x3是支援向量,而x2不是,所以前面的係數是0。因為根據w求解公式,a2=0,所以x2對w權的最後取值沒有影響,所以x2不是支援向量。

最後一步,帶到上面的式子中求w,b:
這裡寫圖片描述
w1=w2=0.5
對於支援向量x1,計算b的值:
這裡寫圖片描述
對於非支援向量x2,計算b的值:
這裡寫圖片描述
顯然,由於b的公式由支援向量與決策平面的距離推導得到,所以x2的計算結果是錯誤的。
於是得到最後的決策邊界為:
0.5x1+0.5x2+2=0