1. 程式人生 > >支援向量機通俗導論(一)

支援向量機通俗導論(一)

第一層、瞭解SVM

支援向量機,因其英文名為support vector machine,故一般簡稱SVM,通俗來講,它是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。

1.1、分類標準的起源:Logistic迴歸

理解SVM,咱們必須先弄清楚一個概念:線性分類器。

給定一些資料點,它們分別屬於兩個不同的類,現在要找到一個線性分類器把這些資料分成兩類。如果用x表示資料點,用y表示類別(y可以取1或者-1,分別代表兩個不同的類),一個線性分類器的學習目標便是要在n維的資料空間中找到一個超平面(hyper plane

),這個超平面的方程可以表示為( wT中的T代表轉置):


可能有讀者對類別取1-1有疑問,事實上,這個1-1的分類標準起源於logistic迴歸

    Logistic迴歸目的是從特徵學習出一個0/1分類模型,而這個模型是將特性的線性組合作為自變數,由於自變數的取值範圍是負無窮到正無窮。因此,使用logistic函式(或稱作sigmoid函式)將自變數對映到(0,1)上,對映後的值被認為是屬於y=1的概率。

假設函式


其中xn維特徵向量,函式g就是logistic函式。

的影象是


可以看到,將無窮對映到了(0,1)

而假設函式就是特徵屬於y=1的概率。


從而,當我們要判別一個新來的特徵屬於哪個類時,只需求

即可,若大於0.5就是y=1的類,反之屬於y=0類。

此外,只和有關,>0,那麼>0.5g(z)只是用來對映,真實的類別決定權還是在於。再者,當>>0時,=1,反之=0。如果我們只從出發,希望模型達到的目標就是讓訓練資料中y=1的特徵》0,而是y=0的特徵《0Logistic迴歸就是要學習得到,使得正例的特徵遠大於0,負例的特徵遠小於0而且要在全部訓練例項上達到這個目標。

接下來,嘗試把logistic迴歸做個變形。首先,將使用的結果標籤y = 0y = 1替換為y = -1,y = 1,然後將中的替換為b,最後將)後面的替換為(即)。如此,則有了。也就是說除了yy=0變為y=-1

外,線性分類函式跟logistic迴歸的形式化表示沒區別。

進一步,可以將假設函式中的g(z)做一個簡化,將其簡單對映到y=-1y=1上。對映關係如下:


1.2、線性分類的一個例子

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


這個超平面可以用分類函式表示,當f(x) 等於0的時候,x便是位於超平面上的點,而f(x)大於0的點對應y=1 的資料點f(x)小於0的點對應y=-1的點,如下圖所示:


注:有的資料上定義特徵到結果的輸出函式與這裡定義的實質是一樣的。為什麼?因為無論是,還是,不影響最終優化結果。下文你將看到,當我們轉化到優化的時候,為了求解方便,會把yf(x)令為1,即yf(x)y(w^x + b),還是y(w^x - b),對我們要優化的式子max1/||w||已無影響。

有一朋友飛狗來自Mare_Desiderii,看了上面的定義之後,問道:請教一下SVM functional margin =y(wTx+b)=yf(x)中的Y是隻取1-1嗎?y的唯一作用就是確保functional margin的非負性?真是這樣的麼?當然不是

當然,有些時候,或者說大部分時候資料並不是線性可分的,這個時候滿足這樣條件的超平面就根本不存在(不過關於如何處理這樣的問題我們後面會講),這裡先從最簡單的情形開始推導,就假設資料都是線性可分的,亦即這樣的超平面是存在的

換言之,在進行分類的時候,遇到一個新的資料點xx代入f(x) 中,如果f(x)小於0x類別賦為-1,如果f(x)大於0x的類別賦為1

接下來的問題是,如何確定這個超平面呢?從直觀上而言,這個超平面應該是最適合分開兩類資料的直線。而判定最適合的標準就是這條直線離直線兩邊的資料的間隔最大。所以,得尋找有著最大間隔的超平面。

1.3、函式間隔Functional margin與幾何間隔Geometrical margin 

在超平面w*x+b=0確定的情況下,|w*x+b|能夠表示點x到距離超平面的遠近,而通過觀察w*x+b的符號與類標記y的符號是否一致可判斷分類是否正確,所以,可以用(y*(w*x+b))的正負性來判定或表示分類的正確性。於此,我們便引出了函式間隔(functional margin)的概念。

定義函式間隔(用表示)為:


而超平面(wb)關於T中所有樣本點(xiyi)的函式間隔最小值(其中,x是特徵,y是結果標籤,i表示第i個樣本),便為超平面(w, b)關於訓練資料集T的函式間隔

        mini (i=1...n)

但這樣定義的函式間隔有問題,即如果成比例的改變wb(如將它們改成2w2b),則函式間隔的值f(x)卻變成了原來的2(雖然此時超平面沒有改變),所以只有函式間隔還遠遠不夠。

事實上,我們可以對法向量w加些約束條件,從而引出真正定義點到超平面的距離--幾何間隔(geometrical margin)的概念。

假定對於一個點,令其垂直投影到超平面上的對應點為x0 是垂直於超平面的一個向量,為樣本x到超平面的距離,如下圖所示:


根據平面幾何知識,有


其中||w||w的二階範數(範數是一個類似於模的表示長度的概念),是單位向量(一個向量除以它的模稱之為單位向量)。

又由於x0是超平面上的點,滿足f(x0)=0,代入超平面的方程,可得,即

隨即讓此式的兩邊同時乘以,再根據,即可算出:


為了得到的絕對值,令乘上對應的類別y即可得出幾何間隔(用表示)的定義


從上述函式間隔和幾何間隔的定義可以看出:幾何間隔就是函式間隔除以||w||,而且函式間隔y*(wx+b) = y*f(x)實際上就是|f(x)|,只是人為定義的一個間隔度量,而幾何間隔|f(x)|/||w||才是直觀上的點到超平面的距離。

1.4、最大間隔分類器Maximum MarginClassifier的定義

對一個數據點進行分類,當超平面離資料點的間隔越大,分類的確信度(confidence)也越大。所以,為了使得分類的確信度儘量高,需要讓所選擇的超平面能夠最大化這個間隔值。這個間隔就是下圖中的Gap的一半


通過由前面的分析可知:函式間隔不適合用來最大化間隔值,因為在超平面固定以後,可以等比例地縮放w的長度和b的值,這樣可以使得的值任意大,亦即函式間隔可以在超平面保持不變的情況下被取得任意大。但幾何間隔因為除上了,使得在縮放wb的時候幾何間隔的值是不會改變的,它只隨著超平面的變動而變動,因此,這是更加合適的一個間隔。換言之,這裡要找的最大間隔分類超平面中的間隔指的是幾何間隔。

於是最大間隔分類器(maximum margin classifier)的目標函式可以定義為:


同時需滿足一些條件,根據間隔的定義,有


其中,s.t.,即subject to的意思,它匯出的是約束條件

回顧下幾何間隔的定義,可知:如果令函式間隔等於1之所以令等於1,是為了方便推導和優化,且這樣做對目標函式的優化沒有影響,則有 = 1 / ||w||,從而上述目標函式轉化成了


相當於在相應的約束條件下,最大化這個1/||w||,而1/||w||便是幾何間隔

如下圖所示,中間的實線便是尋找到的最優超平面(Optimal Hyper Plane),其到兩條虛線邊界的距離相等,這個距離便是幾何間隔,兩條虛線間隔邊界之間的距離等於2,而虛線間隔邊界上的點則是支援向量。由於這些支援向量剛好在虛線間隔邊界上,所以它們滿足還記得我們把 functional margin 定為 1了嗎?上節中:處於方便推導和優化的目的,我們可以令=1),而對於所有不是支援向量的點,則顯然有


    OK,到此為止,算是瞭解到了SVM的第一層,對於那些只關心怎麼用SVM的朋友便已足夠,不必再更進一層深究其更深的原理。