支持向量機是機器學習領域中經典的分類算法之一,最早由Corinna Cortes, Vladimir Vapnik於1995年提出。對原論文感興趣的讀者可下載此論文Support-Vector Network
簡介
分類學習的最基本思想就是基於給定的訓練集D,在樣本空間中尋找一個劃分超平面,將不同類別的樣本分開。假如有一樣本集D={(x1,y1),(x2,y2),…,(xm,ym)},它的劃分超平面可能存在很多個,如下圖所示。那我們應該選取哪一個呢?
直觀上看,我們應該選取正中間的劃分超平面,即圖中的綠色超平面。因爲該劃分超平面對訓練樣本的數據擾動“容忍性”最好,即魯棒性最好,泛化能力最強。而且的確有理論證明,擁有最大間隔的劃分超平面泛化能力最強,如下圖所示(摘自常虹老師的《Support Vector Machine》)。其中,間隔就是距離劃分超平面最近的點與劃分超平面間的距離。
在樣本空間中,劃分超平面可通過如下線性方程描述,
wTx+b=0
其中,w=(w1,w2,…,wn)是法向量,決定了超平面的方向。b是位移項,決定了超平面與源點間的截距。因此,樣本空間中任意點x到劃分超平面的距離即爲,
d=∣∣w∣∣∣wT+b∣
假定超平面能將訓練樣本正確分類,即對於∀ (xi,yi)∈D,如果yi=1,則wTx+b>0,相反則有wTx+b<0,即有
{wTxi+b≥1wTxi+b≤1,yi=1,yi=−1
可能有讀者疑問,之前不是以0爲樣本劃分的分界點嗎?這裏又爲何改爲1了?其實,如果超平面能正確劃分樣本,那麼總存在縮放能使得上式成立。
此外,我們將使上式等號成立的點稱爲支持向量,兩個異類的支持向量到超平面的距離之和,
γ=∣∣w∣∣2
即爲我們前面所說的間隔。因此,爲找到最大間隔的劃分超平面以使得模型泛化能力最強,我們需要,
max∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,…,m
不難看出,最大化∣∣w∣∣2等價於最小化∣∣w∣∣2(後面,我會解釋爲什麼需要這樣改寫)。因此,上式可改寫爲,
min21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,…,m
這就是支持向量機的原型。
算法推導
前面說到,爲獲得最優劃分超平面,我們需要求解下式,
min21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,…,m
這是一個典型的二次優化問題。與一般的優化問題相比,二次優化是較難解決的。然而,“穩住,我們能贏!”。因爲,我們有拉格朗日大神!(再次拜服拉格朗日老前輩)。利用大名鼎鼎的拉格朗日乘子法,我們可以輕鬆解決這類問題。對拉格朗日問題感興趣的同學,可以觀看我的另一篇博客——原來拉格朗日乘子法這麼簡單!。
因此,根據拉格朗日乘子法,我們有,
L(w,b,λ)=21∣∣w∣∣2+i=1∑mλi(1−yi(wTxi+b))
其中,λ=(λ1,λ2,…,λm),λi≥0是對應的拉格朗日乘子。令L(w,b,λ)對w和b求偏導,併爲零,得,
w0=i=1∑mλiyixi=i=1∑mλiyi
將上式代入拉格朗日函數,可得,
λmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjxiTxjs.t.i=1∑mλiyi=0λi≥0,i=1,2,…,m
因此,求解出λ之後,即可得到模型,
f(x)=wTx+b=i=1∑mλiyix+b
而在求解過程中,根據拉格朗日乘子法,我們不難發現上述過程滿足KKT條件,
⎩⎪⎨⎪⎧λiyif(xi)−1λi(yif(xi)−1)≥0≥0=0
因此,對於任意樣本(xi,yi),總有λi=0或者yif(xi)=1。若λi=0,則對應樣本不會在求和過程中出現,即不會對最終的劃分超平面產生影響;若λi>0,則必有yif(xi)=1,則對應樣本位於最大間隔邊界上,即是一個支持向量。這顯示出支持向量機的一個重要性質:最終的劃分超平面只與支持向量有關,大部分的樣本都無需保留。
於是,我們可以這一性質,求解出
b=∣SV∣1xi∈SV∑(yi−wTxi)
可是,又如何求解出λ呢?如果λ未知,我們是無法求解出模型f(x)的。幸好,人們利用問題本身的特性,設計了很多高效算法,SMO算法是其中著名的一個代表。
SMO算法的思路很簡單——在參數初始化之後,重複以下兩個步驟直至收斂:
- 選取一對需更新的變量λi和λj;
- 固定λi和λj之外的參數,求解對偶函數獲得更新後的λi和λj.
至此,支持向量機的基本思路已經闡述完畢,是不是很簡單啊,一目瞭然!
軟間隔與正則化
在前面的討論中,我們假設存在一個超平面能將所有樣本正確劃分。然而,在現實生活中,很難找到能正確劃分全部樣本的超平面,如下圖所示(摘自周志華老師的《機器學習》)。
緩解該問題的方法一個方法就是允許支持向量機在一些樣本上出錯,即引入鬆弛變量ξ,
yi(wTxi+b)≥1−ξi
而這就是我們所說的軟間隔。顯而易見,硬間隔要求對所有樣本劃分正確。當然,在最大化間隔的同時,不滿足約束的樣本應儘可能地少。於是,優化目標改寫爲,
w,b,ξimin21∣∣w∣∣2+Ci=1∑mξis.t.yi(wTxi+b)≥1−ξi,ξi≥0,i=1,2,…,m
這裏,C是正則化因子,用於平衡邊界最大化和訓練誤差最小化。
因此,有拉格朗日函數,
L(w,b,λ,μ)=21∣∣w∣∣2+Ci∑ξi+i=1∑mλi[1−ξi−yi(wTx+b)]−i∑μiξi
這裏,λi≥0,μ≥0都是拉格朗日乘子。於是,我們利用拉格朗日乘子法求解,
λmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjxiTxjs.t.i=1∑mλiyi=00≤λi≤C,i=1,2,…,m
不難看出,我們只需按照之前的步驟,即可求解軟間隔的支持向量機。
核函數
細心的讀者不難看出,本篇博客前面的討論中,都假設樣本是線性可分的。然而在現實任務中,原始樣本空間也許並不存在一個能正確劃分樣本的超平面,即原始樣本空間不是線性可分的,如下圖所示。
幸運的是,有理論證明,如果原始空間是有限維的,那麼一定存在一個高維特徵空間使樣本可分。因此,對於這樣的問題,可將原始樣本空間映射到更高維的特徵空間,使得樣本在這個特徵空間線性可分,如下圖所示(摘自周志華老師的《機器學習》)。
令ϕ(x)表示x映射後的特徵向量。於是,在特徵空間中劃分超平面爲,
f(x)=wTϕ(x)+b
同樣地,有優化函數,
w,bmin21∣∣w∣∣2+Ci=1∑mξis.t.yi(wTϕ(x)+b)≥1−ξiξi≥0,i=1,2,…,m
對偶問題即爲
λmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjϕ(xi)Tϕ(xj)s.t.i=1∑mλiyi=00≤λi≤C,i=1,2,…,m
不難看出,上式的求解涉及到ϕ(xiT)ϕ(xj)的計算。然而由於特徵空間維度很高,導致直接計算
ϕ(xi)Tϕ(xj)十分困難。而核函數的出現解決了這一問題,
k(xi,xj)=ϕ(xi)Tϕ(x′j)
因此,有
λmaxi=1∑mλi−21i=1∑mj=1∑mλiλjyiyjk(xi,xj)s.t.i=1∑mλiyi=00≤λi≤C,i=1,2,…,m
求解後,即可得到
f(x)=wTx+b=i=1∑mλiyiϕ(xi)Tϕ(x)+b=i=1∑mλiyik(x,xi)+b
可見,核函數巧妙地解決了高維空間的特徵向量內積計算的難題,爲支持向量機解決非線性可分的問題提供瞭解決方案。而常用的核函數有以下幾種:
k(xi,xj)=xiTxj
k(xi,xj)=(xiTxj+1)d
k(xi,xj)=exp(−2s2∣∣xiT−xj∣∣)
k(xi,xj)=tanh(2xiTxj+1)
不過,可能有讀者對核函數仍抱有疑惑——它是如何找到對應的特徵空間。以多項式核函數爲例,假設d=2,原始空間的維度D=2,則
k(xi,xj)=(xiTxj+1)2=(x1x1′+x2x2′+1)2=1+2x1x1′+2x2x2′+2x1x2x1′x2′+(x1)2(x1′)2+(x2)2(x2′)2
因此,對應的特徵向量爲,
ϕ(x)=(1,2x1,2x2,2x1x2,(x1)2,(x2)2)T
至此,核函數的基本概念已經爲大家闡述完畢。
總結
支持向量機是一種對數據進行二元分類,其決策邊界是對學習樣本求解的最大邊距超平面。其優缺點如下:
參考文獻
周志華,《機器學習》
常虹,《Support Vector Machines》