有時我想:人為什么會喜新厭舊?難道不知新的總會變成舊的。又想:人為什么忽略過程只求結果?難道不知一切結果也都是虛幻的。人能把握的只有現在、此刻正在經歷的點點滴滴。所以走路時千萬不要忘記看風景,有時良辰美景也只是驚鴻一瞥,如果一味向前沖,早晚會為自己的魯莽而后悔。最好的不一定總在前面,回憶往事,最好的也許就是今天、此刻的限量版。所以不用為什么遠大目的而奔忙,即刻享受當下吧。
今天學習另一種分類算法SVM(Support Vector Machine,支持向量機),它的目的是最大化分類間隔,間隔是指分離決策邊界與離之最近的訓練樣本點之間的距離。
-
線性可分和線性分類器
對於一個二分類問題,如果存在至少一個超平面能夠將不同類別的樣本分開,我們就說這些樣本是線性可分的(linear separable)。所謂超平面,就是一個比原特征空間少一個維度的子空間,在二維情況下就是一條直線(注意不能是曲線),在三維情況下就是一個平面。
線性分類器(linear classifier)是一類通過將樣本特征進行線性組合來作出分類決策的算法,它的目標就是找到一個如上所述能夠分割不同類別樣本的超平面。這樣在預測的時候,我們就可以根據樣本位於超平面的哪一邊來作出決策。
用數學語言來描述,一個線性函數可以簡單表示為:f(x)=wTx+b,而線性分類器則根據線性函數的結果進行分類決策:y=g(f(x))=g(wTx+b)
其中g(⋅)是一個將變量映射到不同類別的非線性函數,可以簡單取為:
即分類的結果由 f(x) 的符號決定,f(x)=wTx+b=0即為分類超平面。
下圖展示了幾個線性可分/不可分的例子,並且畫出了一個可能的分類超平面:
-
最大化間隔
在樣本線性可分的情況下,可行的分類超平面可能會有很多,如下圖的L1、L2和L3。
那么怎么選擇一個最好的呢?從上圖我們可以直觀看出,L2比另外兩條分界線要更好,這是因為L2離樣本的距離更遠一些,讓人覺得確信度更高。這好比人(相當於樣本)站在離懸崖邊(分類邊界)越遠,人就會感到越安全(分類結果是安全還是危險)。從統計的角度講,由於正負樣本可以看作從兩個不同的分布隨機抽樣而得,若分類邊界與兩個分布的距離越大,抽樣出的樣本落在分類邊界另一邊的概率就會越小。
SVM正是基於這種直觀思路來確定最佳分類超平面的:通過選取能夠最大化類間間隔的超平面,得到一個具有高確信度和泛化能力的分類器,即最大間隔分類器。
-
間隔
既然SVM的目標是最大化間隔,我們便要先對“間隔”進行定義。所謂間隔,就是分類超平面與所有樣本距離的最小值,表示為:
其中l表示分類超平面,N為樣本個數,xi為第i個樣本。接下來我們還需要定義樣本到超平面的“距離” dist(l,x)。
假設任意一個樣本點x0,其在分類超平面上的投影記作。對於分類超平面wTx+b=0,我們知道他的法向量是w,法向量方向的單位向量可以由法向量除以其模長所得:
。我們將dist(l,xi)記為d(d≥0),則可以得到:
等式兩邊同時左乘wT並加上b,並且利用超平面上的點+b=0的性質,我們可以得到:
記y∈{−1,1}為分類標簽,由於y(wTx+b)=∣wTx+b∣,我們可以以此消去上式的絕對值。
綜上所述,我們可以得到對於分類超平面l和N個樣本xi的“間隔”的表達式:
-
最大化
有了上述定義的間隔,接下來的事情就很直接了——求解能使間隔最大化的參數w和b,即求解以下優化函數:
令,上述優化函數也可以寫成如下等價的形式:
其中第二行的約束條件是為了滿足對“間隔”的定義。下面我們來做一些數學上的小變換,使形式更為簡潔。
我們定義,則目標函數可寫成:
,約束條件可寫成:
,i=1,2,...,N。再用w替換
,b替換
,並且利用
與
等價的原理,可以得到以下下等價的優化問題:
-
松弛變量
以上我們都只關心一個目的:尋找能夠最大化間隔的分類超平面。然而,由於樣本點中異常點的存在,只考慮這一個因素往往無法得到一個最佳的分類器。我們來看下圖的例子:
從上圖可以看出:若我們嚴格遵守“間隔”的限制,由於藍色異常點的存在,最終只能得到一個間隔很小的分類超平面。反之,如果我們能夠放寬對於間隔的限制,便可以一定程度的忽略異常點的影響,反而能得到間隔更大的分類超平面。
上述容忍異常點的思路可以通過引入“松弛變量”(slack variable)實現。在原優化問題中,我們對“間隔”的限制表現在 yi(wTxi+b)≥1, i=1,2,...,N 當中。為了放寬對此的限制,我們對每個樣本引入其對應的松弛變量 ζi (ζi≥0),則限制條件變為:yi(wTxi+b)≥1−ζi, i=1,2,...,N。
從上式可以看出,若樣本點xi不是異常點(滿足 yi(wTxi+b)≥1),則其松弛變量ζi=0,與原限制一樣。若樣本點xi是異常點,只要ζi足夠大,限制條件便能滿足,分類超平面(由w、b決定)不受影響。直觀上講,ζi等於將異常點“拉”回原間隔處所需要移動的距離,如下圖所示:
松弛變量的引入有助於增強模型對異常點的容忍能力,還能解決一定的數據線性不可分的問題。然而,如果不對松弛變量進行限制,得到的分類器又會變得沒有用處(大量的錯誤分類)。因此,我們需要同時對兩個目標進行優化:最大化間隔和容忍異常樣本,並且引入一個平衡參數 C (C≥0)來衡量這兩個方面的重要程度。引入松弛變量后的完整優化問題如下:
最后,我們再來分析一下平衡參數 C 對求得分類超平面的影響。
C 取無窮:ζi只能為零,代表無法容忍任何誤判樣本的出現,即嚴格遵守“間隔”的限制,得到沒有引入松弛變量時的分類超平面
C取零:ζi可以任意大,即任何誤判結果都可以被容忍,得到分類超平面沒有意義
C較大:ζi不能很大,因此限制條件難以被忽略,會得到較為狹窄間隔的分類超平面
C較小:ζi影響較小,因此限制條件可以被忽略,會得到較為寬間隔的分類超平面
下周學習如何在scikit-learn中使用SVM分類器,敬請期待:)