分類:支持向量機(一)——完全線性可分

     最初學習、理解支持向量機時,有點費勁,參考了一些不錯的書籍和博客,這裏推薦一下:

  1. http://blog.pluskid.org/?page_id=683
  2. https://www.cnblogs.com/pinard/p/6097604.html
  3. 李航老師的《統計學習方法》

1.支持向量機簡介

       支持向量機(Support Vector Machine,SVM)是一種二類分器,只支持兩種類別的分類,不過在一些場合下可以將多個SVM串聯起來,達到多分類的目的,下面先從二維情況入手,說明一下SVM如何實現分類。

       觀察下面這張XOY平面上的圖

                                                                    

                                                                                                     圖 1

       藍色的數據點屬於類A,綠色的數據點屬於類B,中間有一條紅色直線將兩類數據點分隔開,那麼在XOY平面上可以得到這條直線的方程w^{T}x+b=0,構建SVM模型的過程就是計算參數w,b、得到這條直線(針對二維的情況而言,多維情況下就是超平面)的過程。分類時,將待分類數據x_{0}代入到函數f(x)=w^{T}x+b中,若結果大於0則爲類B,小於0則爲類A

2.構建支持向量機

      2.1 支持向量

      從圖1中就可以看到,能將類A、類B包含的數據點完全分開的直線實際上有無數條(如紅色虛線)

                                                            

                                                                                             圖 2

        那麼SVM中需要的、要確定的是哪一條呢?SVM的分類方式是計算f(x_{0})=w^{T}x_{0}+b,如果結果爲正/負,那麼結果越大/小,我們就越相信爲x_{0}點屬於類B/A,這個概念理解起來比較直觀(數學上的證明我也不瞭解),從幾何上看,就是數據點離直線越遠,我們越相信其分類的確定性。在圖2中,如果直線靠近藍色點、遠離綠色點(直線L1),那麼當我們將一個點分類爲類A時,會覺得分類結果不那麼靠譜,尤其是最靠近直線的數據點,其分類結果最值得懷疑,分類爲類B的情況也是如此,如何處理這種情況?找一條直線,讓其離類A、類B的點一樣遠,當然,肯定不是離訓練集中所有的數據點一樣遠,而是離直線距離最近的點的距離,如果我們對這樣的點的分類結果也有信心,那麼對所有的點的分類結果就更有信心。在下文中,不加強調的話,所說的距離指的就是離直線距離最近的點的距離,具體到圖3中就是點x_{1}和點x_{2}(針對直線L1)。

                                              

                                                                                                     圖 3

        在圖3中,當採用直線L1作爲分類直線時,點x_{1}和點x_{2}離L1最近,當採用直線L2作爲分類直線時,點x_{3}和點x_{4}離L2最近,由此可以看到,是訓練集中的數據點決定了分類直線的位置,由於訓練集中的數據是有限的,因此一定可以找到這樣一條直線:

  • 到類A、類B距離相等
  • 在滿足上面一條條件的直線中,到類A、類B距離最大

       構建SVM時需要的直線就是滿足這樣條件的一條直線,我們確定這樣一條直線並不依靠訓練集中的所有數據,而是離直線距離最近的點,這些點和原點間形成了一個個向量,稱之爲支持向量,建模完成後,需要存儲的信息就是支持向量的信息。

2.2 尋找最優分類邊界

       在2.1節中我們已經明白了SVM建模的目標,數據點代入函數  f(x)=w^{T}x+b的計算結果可以表示距離,這個距離稱爲函數距離,等倍數縮放參數wb時函數距離會改變,但是實際的分類邊界超平面w^{T}x+b=0並不會變化,因此 “使函數距離最大化” 作爲優化目標並不合適。我們可以採用幾何距離,也即是數據點到分類超平面的距離,這裏以3維空間中的平面爲例,假設某一平面爲

                                                                             w^{T}x+b=0

其中w=(a,b,c),爲一向量,點P(x_{1},y_{1},z_{1})、 Q(x_{2},y_{2},z_{2})爲該平面上的兩點,則直線PQ所在向量爲(x_{1}-x_{2},y_{1}-y_{2},z_{1}-z_{2}),可得

                               a(x_{1}-x_{2})+b(y_{1}-y_{2})+c(z_{1}-z_{2})=ax_{1}+by_{1}+cz_{1}-ax_{2}+by_{2}+cz_{2}=0

也即直線PQ上向量與w垂直,由於直線PQ是任意一條直線,因此w即爲法向量

                                                            

      點x爲待分類數據點,點x_{0}爲點x在超平面上的投影點,它們之間的距離爲\gamma,則可以得到以下等式

                                                                                x=x_{0}+\gamma \frac{w}{\left | \left | w \right | \right |}                                                         (1)

      由於點x_{0}在超平面上,因此w^{T}x_{0}+b=0,將上式代入,得到

                                                                         w^{T}(x-\gamma \frac{w}{\left \| w \right \|})+b=0

                                                                             \gamma=\frac{w^{T}x+b}{\left \| w \right \|}=\frac{f(x)}{\left \| w \right \|}                                                  (2)

       我們的目標就是是找到最大的 \gamma 。 實際上一個平面的法向量有兩個方向,也就是說公式(1)、(2)中存在符號正負的問題,爲了解決這個問題,可以採用如下方式:由於SVM是一個二分類模型,因此可以將滿足f(x)>0的數據點的類別定爲 1,滿足f(x)<0的數據點的類別定爲 -1,類別用 y 表示,然後計算 y\gamma 的值,這樣就解決了正負的問題,因爲\hat{\gamma }始終爲正

                                                                                \hat{\gamma }=y\gamma =\frac{y(w^{T}x+b)}{\left \| w \right \|}                                            (3)

爲什麼要將類別 y 定爲1、-1呢? 這還要從SVM建模的目標出發來理解,我們的目的是找到一個使幾何距離最大的分類超平面,優化的目標是距離,類別 y 對優化結果是沒有任何影響的,這從公式(2)就可以看出來,我們也可以不用類別 y、轉而優化\hat{\gamma }^{2},結果是一樣的,類別 y 取1、-1只是爲了方便,當然也可以使類別 y 取2、-2,是一樣的道理。

        經過以上的過程,尋找最優分類邊界的目標就轉化爲了計算 \hat{\gamma } 的最大值,由於公式(3)中分子和分母項均可變,因此需要約束其中一項,由於w的原因,分子、分母是彼此制約的,約束\left \| w \right \|爲某個值並不容易做到,而且容易做出錯誤的約束,因此一般約束y(w^{T}x+b)爲某個固定的值,這裏假設約束y(w^{T}x+b)=k,事實上支持向量上的數據點不能保證滿足y(w^{T}x+b)=k,不過沒關係,可以採用等倍數縮放參數wb的方式,保證y(w^{T}x+b)=k,超平面位置也不會變化,此時分母\left \| w \right \|也要乘以相應的係數,公式(3)變爲以下形式

                                                                         \hat{\gamma }=\frac{y(w^{T}x+b)\times m}{\left \| w \right \|\times m}

式中 m爲參數參數wb的縮放倍數,保證支持向量點滿足y(w^{T}x+b)=k,這樣分子就約束了,現在只需要優化\left \| w \right \|\times m以保證\hat{\gamma }最優,由於m爲固定值,因此也只需要優化\left \| w \right \|.我們一般使 k取1,原因也是爲了方便而已,不影響目標優化,這樣一樣最終的優化目標就是

                                                                    max \frac{1}{\left \| w \right \|},\: s.t. \: \: y_{i}(w^{T}x_{i}+b)\geq 1,i=1,...,n                            (4)

 

3.小結         

       第一篇的內容就先到這裏,公式(4)的計算放到第二篇中說明。從本篇文章中,可以知道SVM建模的目標,以及如何將建模過程轉變爲幾何與數值計算過程。                         

 

                

                                   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章