支持向量機原理(一)線性支持向量機

一、前言

        支持向量機(Support Vector Machine)是一種二分類模型,其基本模型定義爲特徵空間上間隔最大的線性分類器,其學習的策略便是間隔最大化,最終可以轉化爲一個凸二次規劃問題的求解。經過多年的發展,SVM也適用於多元分類,經過拓展,SVM也能夠應用於線性迴歸,本文的重點就是對SVM相關原理進行介紹。

首先什麼是線性分類器?給定一些數據點,他們分別屬於兩個不同的類,現在要找到一個線性分類器把這些數據分成兩類。如果用x表示數據點,用y表示類別(比如y可以取1或者-1,分別代表兩個不同的類),一個線性分類器的學習目標便是要在n維的數據空間中找到一個超平面(hyper plane),這個超平面的方程可以表示爲:

                                            w^{T}x+b=0 ,  w^{T}表示w的轉置。

下面舉個簡單的例子,如下圖所示,現在有一個二維平面,平面上有兩種不同的數據,分別用圓圈和叉表示。由於這些數據是線性可分的,所以可以用一條直線將這兩類數據分開,這條直線就相當於一個超平面,超平面一邊的數據所對應的y全是-1,另外一邊所對應的y全是1。

                                                      

                                                                  圖1:線性分類示例

這個超平面可以用分類函數f(x)=w^{T}x+b表示,當f(x)等於0的時候,x便是位於超平面上的點,而f(x)大於0的點對應y=1的數據點,f(x)小於0時的點對應於y=-1的數據點。

                                                      

                                                                     圖2:支持向量示例

二、函數間隔與幾何間隔

在超平面是w^{T}x+b=0確定的情況下,\left | w^{T}x+b \right |表示點x到距離超平面的遠近,而通過觀察w^{T}x+b的符號與類標記y的符號是否一致可判斷是否正確,所以,可以用y(w^{T}x+b)的正負性來判定或表示分類的正確性,於是這裏便引出來函數間隔的概念,定義函數間隔爲:

                                                               \gamma {}'=y(w^{T}x+b)=yf(x)

但這樣定義的函數間隔有問題,即如果成比例的改變w和b(如將它們都變成2w和2b),則函數間隔的值f(x)卻變成原來的2倍,但是超平面卻沒有改變,所以只有函數間隔還遠遠不夠。這裏便引出來了點到超平面的真正幾何距離——幾何間隔。

        假定對於一個點x,令其垂直投影到超平面上的對應點爲x_{0},w是垂直於超平面的一個向量,\hat{\gamma{}}爲樣本x到分類面的距離,如下圖:

                                                        

                                                                   圖3:幾何距離示例

 有   x=x_{0}+\hat{\gamma{}} \frac{w}{\left \| w \right \|},其中\left \| w \right \|表示的是範數,這裏指的是距離。

   又由於x_0是超平面上的點,滿足f(x_{0})=0,代入超平面方程w^{T}x+b=0即可計算出:

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

則    \gamma=\frac{y(w^{T}x+b)}{\left\|w\right\|}=\frac{yf(x)}{\left\|w\right\|}=\frac{\gamma{}'}{\left\|w\right\|}代表真正的幾何距離,也就是說幾何間隔就等於函數間隔除以\left\|w\right\|

三、支持向量

       上面介紹了函數間隔與幾何間隔,知道了幾何間隔纔是一個樣本到超平面的真實距離,所以當超平面爲w^{T}x+b=0時,對於一個數據點進行分類時,當超平面離數據點的幾何間隔越大,分類的確信度才能越高,爲了使分類的確信度儘可能的高,所以需要讓所選擇的超平面能夠最大化這個幾何間隔。

                                          

                                                                              圖4:超平面間隔示意圖

如圖4所示,一般都取函數間隔\gamma{}'=1,中間的實現便是尋找的最優超平面(Optimal Hyper Plane),其到兩條虛線的距離相等,這個距離便是幾何間隔\gamma,兩條虛線之間的距離等於2\gamma,虛線上的點就稱爲支持向量,支持向量機的名字便是從這裏來的。這些支持向量在邊界上剛好滿足y(w^{T}x+b)=1,而對於所有不是支持向量的點,則顯然有y(w^{T}x+b)> 1。於是最大化間隔分類器的目標函數可以定義爲下式:

                                                                          \begin{matrix} max&\gamma \end{matrix}                                                                  (1.1)

根據間隔的定義有:

                                                          y_{i}(w^{T}x_{i}+b)=\gamma_{i}\geq \gamma,i=1,2,...,n                                   (1.2)

由函數間隔\gamma'=1\gamma=1/\left\|w\right\|,且y_i(w^{T}x+b)\geq 1,i=1,2,..,n,從而上述的目標函數可以轉化爲下式:

                                                                         max \frac{1}{\left\|w\right\|}

                                                      \begin{matrix} s.t.&y_{i}(w^{T}x_{i}+b) \geq1,i=1,2,...,n \end{matrix}                                           (1.3)   

四、SVM模型目標函數與優化

      由式(1.3)可知現在的目標是在有約束的條件下來最大化幾何間隔,即SVM是固定分子優化分母,同時加上了支持向量的限制。由於最大化1/\left\|w\right\|等同於最小化\frac{1}{2}\left\|w\right\|^{2},這樣SVM的優化函數可以寫成下式:

                                                                          min \frac{1}{2}\left\|w\right\|^{2}

                                                            \begin{matrix} s.t.&y_{i}(w^{T}x_{i}+b) \geq1,i=1,2,...,n \end{matrix}                                      (1.4)

   現在的目標函數是二次的,約束條件是線性的,根據凸優化理論,可以通過拉格朗日函數將我們的優化目標轉化爲無約束的優化函數,所以,優化目標變爲:

                                              L(w,b,\alpha)=\frac{1}{2}\left\|w\right\|^{2}-\sum_{i=1}^{n}\alpha_{i}[y_{i}(w^{T}x_{i}+b)-1]                                   (1.5)

其中\alpha_{i}\geq0,由於引入了拉格朗日乘子\alpha_{i},所以需要滿足:

                                                          \theta(w)=\underset{\alpha_{i}\geq0}{max}L(w,b,\alpha)                                                                  (1.6)

原來的優化目標轉化爲:

                                                     \underset{w,b}{min}\theta(w)=\begin{matrix} \underset{w,b}{min} & \underset{\alpha_{i}\geq0}{max} \end{matrix}L(w,b,\alpha)                                                       (1.7)

現在如果直接求解式(1.7)那麼需要面對w,b這兩個參數,\alpha_{i}又是一個不等式約束,這個過程不太好做,但是注意到我們的這個優化函數滿足KKT條件,所以可以通過拉格朗日對偶將原問題轉化爲等價的對偶問題來求解。也就是說,我們現在要求的是:

                                                              \begin{matrix} \underset{\alpha_{i}\geq0}{max} & \underset{w,b}{min} \end{matrix}L(w,b,\alpha)                                                                   (1.8)

上式中,我們可以先求優化函數對於w,b的極小值,再接着求朗格朗日乘子\alpha的極大值。

 (1)首先來求L(w,b,\alpha)基於w,b的極小值。這個極值問題可以通過高等數學當中的求偏導數得到:

                                                            \frac{\partial L}{\partial w}=0\Rightarrow w=\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}                                                          (1.9)

                                                           \frac{\partial L}{\partial b}=0\Rightarrow \sum_{i=1}^{n}\alpha_{i}y_{i}=0

    將上式代入式(1.5)當中有:

                                                 L(w,b,\alpha)=\frac{1}{2}\left\|w\right\|^{2}-\sum_{i=1}^{n}\alpha_{i}(y_{i}(w^{T}x+b)-1)

                                                                   =\frac{1}{2}w^{T}w-\sum_{i=1}^{n}\alpha_{i}y_{i}w^{T}x_{i}-\sum_{i=1}^{n}\alpha_{i}y_{i}b+\sum_{i=1}^{n}\alpha_{i}

                                                                   =\frac{1}{2}w^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}-\sum_{i=1}^{n}\alpha_{i}y_{i}w^{T}x_{i}-\sum_{i=1}^{n}\alpha{i}y_{i}b+\sum_{i=1}^{n}\alpha_{i}

                                                                   =\frac{1}{2}w^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}-w^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}-\sum_{i=1}^{n}\alpha{i}y_{i}b+\sum_{i=1}^{n}\alpha_{i}

                                                                   =-\frac{1}{2}w^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}-\sum_{i=1}^{n}\alpha_{i}y_{i}b+\sum_{i=1}^{n}\alpha_{i}

                                                                  =-\frac{1}{2}(\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i})^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}-b\sum_{i=1}^{n}\alpha_{i}y_{i}+\sum_{i=1}^{n}\alpha_{i}

                                                                  =-\frac{1}{2}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}-b\sum_{i=1}^{n}\alpha_{i}y_{i}+\sum_{i=1}^{n}\alpha_{i}

                                                                  =-\frac{1}{2}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}^{T}\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}+\sum_{i=1}^{n}\alpha_{i}

                                                                  =-\frac{1}{2}\sum_{i=1,j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^{T}x_{j}+\sum_{i=1}^{n}\alpha_{i}

即原優化目標轉化爲該對偶問題:

                                                   \underset{\alpha}{max} \sum_{i=1}^{n}\alpha_{i} -\frac{1}{2}\sum_{i,j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^{T}x_{j}

                                                   \begin{matrix} s.t. & \alpha_{i}\geq0,i=1,2,...,n \end{matrix}                                                               (1.10)

                                                            \sum_{i=1}^{n}\alpha_{i}y_{i}=0 

只要我們求出上式極大值時的\alpha向量就可以求出w,b了,求出w,b之後可以得到模型:

                                                    f(x)=w^{T}x+b=\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}^{T}x+b                                               (1.11)

式(1.10)解出來的\alpha_{i}是式(1.5)的拉格朗日乘子,他恰好對應着訓練樣本(x_{i},y_{i}),上述過程需要滿足KKT(Karch-Kuhn-Tucker)條件,即要求:

                                                      \left\{\begin{matrix} \alpha_{i}\geq0\\ y_{i}f(x_{i})-1\geq0\\ \alpha_{i}(y_if(x_i)-1)=0 \end{matrix}\right.                                                                    (1.12)

於是,對任意樣本(x_i,y_i),總有\alpha_i=0或者y_if(x_i)=1,根據KKT條件中的對偶互補條件\alpha^{*}(y_{i}(w^{T}x+b)-1)=0,如果\alpha_{i}>0則必有y_{i}(w^{T}x_{i}+b)=1,即這個時候的點爲支持向量,否則如果\alpha_{i}=0,則有y_i(w^{T}x+b)\geq1,即樣本在支持向量上或者已經被正確分類了。這就顯示出SVM的一個重要性質但是具體怎麼做,一般要用到SMO算法,這個算法比較複雜,後面會專門講,在這裏假設我們通過SMO算法得到了對應的\alpha\alpha^{*}。那麼我們可以根據式(1.9)求出對應的w值:

                                                                 w^{*}=\sum_{i=1}^{n}\alpha_{i}^{*}y_{i}x_{i}                                                                  (1.13)

求b的時候,注意到對所有的支持向量(x_{s},y_{s}),都有:

                                                   y_{s}(w^{T}x+b)=y_{s}(\sum_{i=1}^{n}\alpha_{i}y_{i}x_{i}^{T}x_{s}+b)=1                                        (1.14)

假如有S個支持向量,則對應的我們求出這S個b^{*},理論上這S個b^{*}都可以作爲最終的結果,但是一般情況下采用另外一種更健壯的方法,即求出所有支持向量所對應的b^{*},然後將其平均值作爲最後的結果。注意到對於嚴格線性可分的SVM,b的值是唯一的,也就是求出來的b^{*}都是一樣的。

目前我們得到的SVM模型還比較弱,只能處理線性可分情況,對於非線性問題,以及有outliers的情況還不能很好的解決,接下來我們會一一介紹。

五、線性可分SVM的算法過程 

      最後對線性可分的SVM算法做一個總結。


     輸入:輸入線性可分的n個樣本(x_1,y_1),(x_2,y_2),(x_3,y_3),...,(x_n,y_n),其中x爲r維特徵向量,y維二元輸出,輸出1或者-1。

     輸出:分離超平面的參數w^*,b^*和分類決策函數。

      (1)構造約束優化:

                                        \underset{\alpha}{max} \sum_{i=1}^{n}\alpha_{i} -\frac{1}{2}\sum_{i,j=1}^{n}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^{T}x_{j}                                                   

                                        \begin{matrix} s.t. & \alpha_{i}\geq0,i=1,2,...,n \end{matrix}

                                                 \sum_{i=1}^{n}\alpha_{i}y_{i}=0

      (2)用SMO算法求出上式最大時對應的\alpha向量值\alpha^*

      (3)計算w^*=\sum_{i=1}^{n}\alpha_i^*y_ix_i

        (4)  找出所有的S個支持向量,即滿足\alpha_s>0對應的樣本(x_s,y_s),通過y_s(\sum_{i=1}^{n}\alpha_iy_ix_i^Tx_s+b)=1,計算出每一個支持向量(x_s,y_s)對應的b_s^*,計算出這些b_s^*=y_s-\sum_{i=1}^{s}\alpha_iy_ix_i^Tx_s,所有的b_s^*對應的平均值爲最終的b^*=\frac{1}{S}\sum_{i=1}^{S}b_s^*

      (5)這樣的到最終的分類超平面爲:w^*x+b^*=0,最終的分類決策函數爲:f(x)=sign(w^*x+b^*)


下一節將會繼續介紹線性支持向量機的軟間隔(soft margin)最大化模型。                                                           

                                                             

                      

     

 

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