1. 感知機原理(Perceptron)
2. 感知機(Perceptron)基本形式和對偶形式實現
3. 支持向量機(SVM)拉格朗日對偶性(KKT)
4. 支持向量機(SVM)原理
5. 支持向量機(SVM)軟間隔
6. 支持向量機(SVM)核函數
1. 前言
在前一篇支持向量機(SVM)原理中,我們對線性可分SVM的模型和損失函數優化做了總結。但是大家有沒發現,之前的文章介紹的支持向量機會無法處理一些情況,比如在有0,1兩類,在0類的中間出現了幾個1類的異常點,這樣的話要之前最原始的SVM絕對分離兩個類基本是不可能的了。本文對支持向量機做一個推廣,允許超平面能夠錯分一些點,來達到能分離異常點。
2. SVM異常點問題
有時候本來數據的確是可分的,也就是說可以用線性分類SVM的學習方法來求解,但是卻因為混入了異常點,導致不能線性可分,比如下圖,本來數據是可以按下面的實線來做超平面分離的,可以由於一個橙色和一個藍色的異常點導致我們沒法按照上一篇線性支持向量機中的方法來分類。

另外一種情況沒有這么糟糕到不可分,但是會嚴重影響我們模型的泛化預測效果,比如下圖,本來如果我們不考慮異常點,SVM的超平面應該是下圖中的紅色線所示,但是由於有一個藍色的異常點,導致我們學習到的超平面是下圖中的粗虛線所示,這樣會嚴重影響我們的分類模型預測效果。

3. 線性分類SVM的軟間隔最大化
前一篇的SVM由於是絕對分離類別,我們可以稱之為硬間隔SVM。公式為
本文介紹的軟間隔是:SVM對訓練集里面的每個樣本(xi,yi)引入了一個松弛變量\(\xi_i\geq0\),使函數間隔加上松弛變量大於等於1,也就是說條件變量改為如下:
加入松弛變量\(\xi_i\)后,損失函數就需要改寫為
這里,\(C>0\)為懲罰參數,可以理解為我們一般回歸和分類問題正則化時候的參數。\(C\)越大,對誤分類的懲罰越大,\(C\)越小,對誤分類的懲罰越小。
也就是說,我們希望\(\frac{1}{2}||w||^2_2\)盡量小,誤分類的點盡可能的少。\(C\)是協調兩者關系的正則化懲罰系數。在實際應用中,需要調參來選擇。
這個目標函數的優化和上一篇的線性可分SVM的優化方式類似,我們下面就來看看怎么對線性分類SVM的軟間隔最大化來進行學習優化。
4. 拉格朗日對偶化
我們將軟間隔最大化的約束問題用拉格朗日函數轉化為無約束問題公司如下:
我們現在要優化的目標函數是:
這個優化目標也滿足KKT條件,也就是說,我們可以通過拉格朗日對偶將我們的優化問題轉化為等價的對偶問題來求解如下:
最后求出的結果很干凈,和之前的結果也非常像,如下:
這就是軟間隔最大化時的線性可分SVM的優化目標形式,和上一篇的硬間隔最大化的線性可分SVM相比,我們僅僅是多了一個約束條件\(0≤\alpha_i≤C\)。我們依然可以通過SMO算法來求上式極小化時對應的\(\alpha\)向量就可以求出\(w\)和\(b\)了。
5. Hinge損失函數
我們從另一個角度來解讀軟間隔的損失函數,表達式如下:
其中\(L(y(w \bullet x + b)) = [1-y_i(w \bullet x + b)]_{+}\)稱為合頁損失函數(hinge loss function),下標+表示為:
也就是說,如果點被正確分類,且函數間隔大於1,損失是0,否則損失是\(1-y(w \bullet x + b)\),如下圖中的綠線。我們在下圖還可以看出其他各種模型損失和函數間隔的關系:對於0-1損失函數,如果正確分類,損失是0,誤分類損失1, 如下圖黑線,可見0-1損失函數是不可導的。對於感知機模型,感知機的損失函數是\([-y_i(w \bullet x + b)]_{+}\),這樣當樣本被正確分類時,損失是0,誤分類時,損失是\(-y_i(w \bullet x + b)\),如下圖紫線。對於邏輯回歸之類和最大熵模型對應的對數損失,損失函數是\(log[1+exp(-y(w \bullet x + b))]\), 如下圖紅線所示。

6. 總結
線性可分SVM通過軟間隔最大化,可以解決線性數據集帶有異常點時的分類處理,但是現實生活中的確有很多數據不是線性可分的,這些線性不可分的數據也不是去掉異常點就能處理這么簡單。那么SVM怎么能處理中這樣的情況呢?我們在下一篇就來討論線性不可分SVM和核函數的原理。
