“橫看成嶺側成峯,遠近高低各不同。”
支持向量機(Support Vector Machine, SVM)作爲一個被廣泛應用的有監督機器學習算法,網絡上對它的介紹數不勝數,其中更有不少好文佳作。本文與它們的區別在於:並不着重於“教程式”地對SVM進行系統性介紹,而是希望從三個不同的角度對這個算法進行探究。我相信經過這番“把玩”,看過你會跟我一樣覺得:機器學習真的是好玩!
1、引言
最大化類間間隔分類器(maximum margin classifier),估計是最爲直觀,也是最爲人們所熟悉的對於SVM的理解。我們不妨也先從這個角度切入,看看爲什麼SVM能給我們帶來優良的泛化能力。這一部分的路線圖如下:
2、線性可分和線性分類器
對於一個二分類問題,如果存在至少一個超平面能夠將不同類別的樣本分開,我們就說這些樣本是線性可分的(linear separable)。所謂超平面,就是一個比原特徵空間少一個維度的子空間,在二維情況下就是一條直線,在三維情況下就是一個平面。
線性分類器(linear classifier)是一類通過將樣本特徵進行線性組合來作出分類決策的算法,它的目標就是找到一個如上所述能夠分割不同類別樣本的超平面。這樣在預測的時候,我們就可以根據樣本位於超平面的哪一邊來作出決策。
用數學語言來描述,一個線性函數可以簡單表示爲:
即分類的結果由
下圖展示了幾個線性可分/不可分的例子,並且畫出了一個可能的分類超平面:
3、最大化間隔
在樣本線性可分的情況下,可行的分類超平面可能會有很多,如下圖的
那麼怎麼選擇一個最好的呢?從上圖我們可以直觀看出,
SVM正是基於這種直觀思路來確定最佳分類超平面的:通過選取能夠最大化類間間隔的超平面,得到一個具有高確信度和泛化能力的分類器,即最大間隔分類器。
3.1、間隔
既然SVM的目標是最大化間隔,我們便要先對“間隔”進行定義。所謂間隔,就是分類超平面與所有樣本距離的最小值,表示爲:
假設任意一個樣本點
綜上所述,我們可以得到對於分類超平面
3.2、最大化
有了上述定義的間隔,接下來的事情就很直接了——求解能使間隔最大化的參數
我們定義
4、鬆弛變量
以上我們都只關心一個目的:尋找能夠最大化間隔的分類超平面。然而,由於樣本點中異常點的存在,只考慮這一個因素往往無法得到一個最佳的分類器。我們來看下圖的例子:
從上圖可以看出:若我們嚴格遵守“間隔”的限制,由於藍色異常點的存在,最終只能得到一個間隔很小的分類超平面。反之,如果我們能夠放寬對於間隔的限制,便可以一定程度的忽略異常點的影響,反而能得到間隔更大的分類超平面。
上述容忍異常點的思路可以通過引入“鬆弛變量”(slack variable)實現。在原優化問題中,我們對“間隔”的限制表現在
鬆弛變量的引入有助於增強模型對異常點的容忍能力,還能解決一定的數據線性不可分的問題。然而,如果不對鬆弛變量進行限制,得到的分類器又會變得沒有用處(大量的錯誤分類)。因此,我們需要同時對兩個目標進行優化:最大化間隔和容忍異常樣本,並且引入一個平衡參數
最後,我們再來分析一下平衡參數
C 取無窮:ζi 只能爲零,代表無法容忍任何誤判樣本的出現,即嚴格遵守“間隔”的限制,得到沒有引入鬆弛變量時的分類超平面C 取零:ζi 可以任意大,即任何誤判結果都可以被容忍,得到分類超平面沒有意義C 較大:ζi 不能很大,因此限制條件難以被忽略,會得到較爲狹窄間隔的分類超平面C 較小:ζi 影響較小,因此限制條件可以被忽略,會得到較爲寬間隔的分類超平面
5、結語
作爲最直觀簡單的角度,最大化間隔的思想不僅帶我們一步步走向SVM背後的原理,更讓我們理解到SVM具有的良好泛化能力的原因。雖然我們現在得到的SVM只能處理線性的情況,但我覺得從最大間隔分類器的角度去看,走到這一步已經足夠了。SVM還蘊含着很多有趣的性質和優點,我們會在其他角度的探尋中一一發現。
Reference
1、本校AI課課件及參考資料:http://www.cs.rochester.edu/~jliu/CSC-242/svm.pdf, http://www.robots.ox.ac.uk/~az/lectures/ml/lect2.pdf
2、July博客:支持向量機通俗導論
3、PRML Chapter 7.