1. 程式人生 > >機器學習之支援向量機演算法(二)

機器學習之支援向量機演算法(二)

五、SVM求解例項

  上面其實已經得出最終的表示式了,下面我們會根據一些具體的點來求解α的值。資料:3個點,其中正例 X1(3,3) ,X2(4,3) ,負例X3(1,1) 如下圖所示

   

  我們需要求解下式的極小值

   

  注意約束條件(在這裡不要忘記了yi代表的是資料的類別,+1代表正例,-1代表負例)

   

  代入資料,通過化簡可以得到如下約束條件的表示式。

   

  將資料代入上式得到

   

  由於α123=0 -> α123: 化簡可得:

  

  分別對α1和α2求偏導,偏導等於0可得: α1=1.5,α2=-1(並不滿足約束條件αi >= 0,i=1,2,3 )所以這時求出來的α的值是無效的,那這個時候α的解應在邊界上,也就是說要麼α1=0,要麼α2=0,再代入上式然後求偏導看下

   

  (這兒經過我的計算髮現α2似乎等於正的2/13,應該是教程有些小問題,猜測可能是上式由α123化簡這兒出了點小問題,但是對於答案似乎影響不大) ,所以經過計算最小值在(0.25,0,0.25)處取得 。

   

  上面的平面方程其實就是代表直線方程,也就是決策邊界的方程。

六、支援向量機?

  為什麼會取支援向量機這樣一個名字呢?

   

  我們可以發現決策邊界只與α不等零的有關係,因為w=αiyi的累加和,所以α為0的點不起作用。

  可以得出所有邊界上的點α值必然不等於0,也稱作支援向量,所有非邊界上的點α值必等於0,也稱作非支援向量。支援向量機中的機指的就是決策邊界,而決策邊界就是由支援向量所支撐的,支援向量就是邊界點α值不為0的點,決定邊界。如下圖所示當取60個樣本點和120個樣本點時,只要新增的不是邊界上的樣本點,那麼決策邊界就是不變的。

   

七、軟間隔 

  軟間隔:有時候資料中有一些噪音點,如果考慮它們的話那咱們的決策邊界線就不太好界定了,之前的方法要求把兩類點完全分得開,這個要求有點過於嚴格了,我們來放鬆一點!

   

  為了解決該問題,引入鬆弛因子ξ

   

  那我們就有了新的目標函式:

   

  當C趨近於很大時,要使得整體很小的話,那麼意味著鬆弛因子ξ就會很小,那就意味著分類嚴格不能有錯誤。當C趨近於很小時,要使得整體很小的話,那就意味著鬆弛因子ξ可以稍微大一些,那就意味著可以有更大的錯誤容忍。C是我們實際在程式設計中需要指定的一個引數!下面是多了一個鬆弛因子ξ下的拉格朗日乘子法,基本上和上面差不多的。

   

八、核變換

  將低維不可分問題(一般就是非線性支援向量機問題)對映為空間中的高維可分問題,這就是核變換。上面我們提到了這個函式Φ(X) ,那這個函式的意思就是代表一種核變換的方法。如下圖在二維平面下分類很困難,但是如果將資料對映到3為空間,那這樣就很好劃分了。

   

  還是先從一個小例子來闡述問題。假設我們有倆個數據,x=(x1,x2,x3),y=(y1,y2,y2),此時在3D空間已經不能對其進行線性劃分了,那麼我們通過一個函式Φ(X)將資料對映到更高維的空間,比如9維的話,那麼f(x)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3),由於需要計算內積,所以在新的資料在9維空間,需要計算<f(x),f(y)>的內積,需要花費時間O(n2)。

  在具體點,令x=(1,2,3),y=(4,5,6),那麼f(x)=(1,2,3,2,4,6,3,6,9),f(y)=(16,20,24,20,25,36,24,30,36),此時<f(x),f(y)>=16+40+72+40+100+180+72+180+324=1024。似乎還能計算,但是如果將維數擴大到一個非常大數時候,計算起來可就不是一丁點問題了。

  但是發現,K(x,y)=(<x,y>)2,K(x,y)=(4+40+18)2=322=1024。倆者相等,K(x,y)=(<x,y>)2=<f(x),f(y)>,但是K(x,y)計算起來卻比<f(x),f(y)>簡單的多,也就是說只要用K(x,y)來計算,效果和<f(x),f(y)>一樣的,但是計算效率卻大幅度提高了,如:K(x,y)的計算時間是O(n),而<f(x),f(y)>的計算時間是O(n2)。所以使用核函式的好處就是,可以在一個低維空間去完成高緯度(或者無限維度)樣本內積的計算(意思就是實際上並沒有把資料對映到高維空間去,只是一個假設),比如K(x,y)=(4+10+18)2的3D空間對比<f(x),f(y)>=16+40+72+40+100+180+72+180+324的9D空間。

  下面瞭解一下高斯核函式對非線性資料(對於線性資料的話有線性核函式)的分類問題,如圖所示:

   

  

九、總結

  這次學習了支援向量機演算法,其實對於所有的機器學習演算法來講,首先要了解它的物理含義,也就是它要解決的問題是什麼,然後根據這個問題進行一步步的學習,最後得出最終的結論。就支援向量機而言,我們首先學習了點到平面的距離的計算,然後根據距離引出瞭如何算出這個距離最大的這樣的一個表示式,然後就有了拉格朗日乘子法以及KKT性質,然後通過一個例子具體的算出來了決策邊界的方程。在這其中,還引出了為什麼會有支援向量機(α等於0與不等0的區別)這麼個叫法,然後還有軟間隔和鬆弛因子ξ的問題,最後還了解了使用核函式Φ(X)變換來解決低維不可分的問題。

&n