一、前言
支持向量機(Support Vector Machine)是一種二分類模型,其基本模型定義爲特徵空間上間隔最大的線性分類器,其學習的策略便是間隔最大化,最終可以轉化爲一個凸二次規劃問題的求解。經過多年的發展,SVM也適用於多元分類,經過拓展,SVM也能夠應用於線性迴歸,本文的重點就是對SVM相關原理進行介紹。
首先什麼是線性分類器?給定一些數據點,他們分別屬於兩個不同的類,現在要找到一個線性分類器把這些數據分成兩類。如果用x表示數據點,用y表示類別(比如y可以取1或者-1,分別代表兩個不同的類),一個線性分類器的學習目標便是要在n維的數據空間中找到一個超平面(hyper plane),這個超平面的方程可以表示爲:
, 表示的轉置。
下面舉個簡單的例子,如下圖所示,現在有一個二維平面,平面上有兩種不同的數據,分別用圓圈和叉表示。由於這些數據是線性可分的,所以可以用一條直線將這兩類數據分開,這條直線就相當於一個超平面,超平面一邊的數據所對應的y全是-1,另外一邊所對應的y全是1。
圖1:線性分類示例
這個超平面可以用分類函數表示,當等於0的時候,x便是位於超平面上的點,而大於0的點對應y=1的數據點,小於0時的點對應於y=-1的數據點。
圖2:支持向量示例
二、函數間隔與幾何間隔
在超平面是確定的情況下,表示點x到距離超平面的遠近,而通過觀察的符號與類標記y的符號是否一致可判斷是否正確,所以,可以用的正負性來判定或表示分類的正確性,於是這裏便引出來函數間隔的概念,定義函數間隔爲:
但這樣定義的函數間隔有問題,即如果成比例的改變w和b(如將它們都變成2w和2b),則函數間隔的值卻變成原來的2倍,但是超平面卻沒有改變,所以只有函數間隔還遠遠不夠。這裏便引出來了點到超平面的真正幾何距離——幾何間隔。
假定對於一個點x,令其垂直投影到超平面上的對應點爲,w是垂直於超平面的一個向量,爲樣本x到分類面的距離,如下圖:
圖3:幾何距離示例
有 ,其中表示的是範數,這裏指的是距離。
又由於是超平面上的點,滿足,代入超平面方程即可計算出:
則 代表真正的幾何距離,也就是說幾何間隔就等於函數間隔除以。
三、支持向量
上面介紹了函數間隔與幾何間隔,知道了幾何間隔纔是一個樣本到超平面的真實距離,所以當超平面爲時,對於一個數據點進行分類時,當超平面離數據點的幾何間隔越大,分類的確信度才能越高,爲了使分類的確信度儘可能的高,所以需要讓所選擇的超平面能夠最大化這個幾何間隔。
圖4:超平面間隔示意圖
如圖4所示,一般都取函數間隔,中間的實現便是尋找的最優超平面(Optimal Hyper Plane),其到兩條虛線的距離相等,這個距離便是幾何間隔,兩條虛線之間的距離等於,虛線上的點就稱爲支持向量,支持向量機的名字便是從這裏來的。這些支持向量在邊界上剛好滿足,而對於所有不是支持向量的點,則顯然有。於是最大化間隔分類器的目標函數可以定義爲下式:
(1.1)
根據間隔的定義有:
(1.2)
由函數間隔有,且,從而上述的目標函數可以轉化爲下式:
(1.3)
四、SVM模型目標函數與優化
由式(1.3)可知現在的目標是在有約束的條件下來最大化幾何間隔,即SVM是固定分子優化分母,同時加上了支持向量的限制。由於最大化等同於最小化,這樣SVM的優化函數可以寫成下式:
(1.4)
現在的目標函數是二次的,約束條件是線性的,根據凸優化理論,可以通過拉格朗日函數將我們的優化目標轉化爲無約束的優化函數,所以,優化目標變爲:
(1.5)
其中,由於引入了拉格朗日乘子,所以需要滿足:
(1.6)
原來的優化目標轉化爲:
(1.7)
現在如果直接求解式(1.7)那麼需要面對這兩個參數,又是一個不等式約束,這個過程不太好做,但是注意到我們的這個優化函數滿足KKT條件,所以可以通過拉格朗日對偶將原問題轉化爲等價的對偶問題來求解。也就是說,我們現在要求的是:
(1.8)
上式中,我們可以先求優化函數對於w,b的極小值,再接着求朗格朗日乘子的極大值。
(1)首先來求基於w,b的極小值。這個極值問題可以通過高等數學當中的求偏導數得到:
(1.9)
將上式代入式(1.5)當中有:
即原優化目標轉化爲該對偶問題:
(1.10)
只要我們求出上式極大值時的向量就可以求出了,求出w,b之後可以得到模型:
(1.11)
式(1.10)解出來的是式(1.5)的拉格朗日乘子,他恰好對應着訓練樣本,上述過程需要滿足KKT(Karch-Kuhn-Tucker)條件,即要求:
(1.12)
於是,對任意樣本,總有或者,根據KKT條件中的對偶互補條件,如果則必有,即這個時候的點爲支持向量,否則如果,則有,即樣本在支持向量上或者已經被正確分類了。這就顯示出SVM的一個重要性質但是具體怎麼做,一般要用到SMO算法,這個算法比較複雜,後面會專門講,在這裏假設我們通過SMO算法得到了對應的值。那麼我們可以根據式(1.9)求出對應的值:
(1.13)
求b的時候,注意到對所有的支持向量,都有:
(1.14)
假如有S個支持向量,則對應的我們求出這S個,理論上這S個都可以作爲最終的結果,但是一般情況下采用另外一種更健壯的方法,即求出所有支持向量所對應的,然後將其平均值作爲最後的結果。注意到對於嚴格線性可分的SVM,b的值是唯一的,也就是求出來的都是一樣的。
目前我們得到的SVM模型還比較弱,只能處理線性可分情況,對於非線性問題,以及有outliers的情況還不能很好的解決,接下來我們會一一介紹。
五、線性可分SVM的算法過程
最後對線性可分的SVM算法做一個總結。
輸入:輸入線性可分的n個樣本,其中x爲r維特徵向量,y維二元輸出,輸出1或者-1。
輸出:分離超平面的參數和分類決策函數。
(1)構造約束優化:
(2)用SMO算法求出上式最大時對應的向量值。
(3)計算
(4) 找出所有的S個支持向量,即滿足對應的樣本,通過,計算出每一個支持向量對應的,計算出這些,所有的對應的平均值爲最終的。
(5)這樣的到最終的分類超平面爲:,最終的分類決策函數爲:。
下一節將會繼續介紹線性支持向量機的軟間隔(soft margin)最大化模型。