間隔和支持向量
線性可分
上面的再二維界面上,兩類點被一條直線完全分開,叫做線性可分。
嚴格的數學定義是:
D0和D1是n維歐式空間中的兩個點集。如果存在n爲向量w和實數b,使得所有屬於D0的點xi都有wxi+b>0,而對所有屬於D1的點xj都有wxj+b≤0。則,我們稱D0和D1線性可分。
超平面
上面提到的,將D0和D1完全正確地區分開的wx+b=0,就是一個超平面。
以最大間隔把兩類樣本區分開的超平面,就是最大間隔超平面,也稱爲最佳超平面。
- 兩類樣本分別分隔在超平面兩側
- 兩側超平面最近的樣本點到超平面的距離最大化了
支持向量
在支持向量機中,距離超平面最近的且滿足一定條件的幾個訓練樣本點被稱爲支持向量。
SVM的最優化問題
首先,我們想要最優化的是各類樣本點到超平面的距離最遠。
也就是,找到最大間隔超平面。
任意一個超平面可以用如下的線性方程來描述
wTx+b=0
n維空間距離是怎樣計算的呢?
二維空間距離
d=2A2+B2∣Ax+By+C∣
推廣到n維
d=∣∣w∣∣∣wTx+b∣∣∣w∣∣=2w12+⋯+wn2
根據支持向量的定義,是樣本中距離超平面最近的點,所以所有支持向量以外的點,到超平面的距離都大於1。
{∣∣w∣∣(wTxi+b)≥d yi=1∣∣w∣∣(wTxi+b)≤−d yi=−1⇒{∣∣w∣∣d(wTxi+b)≥1 yi=1∣∣w∣∣d(wTxi+b)≤−1 yi=−1等比例改變w,b的值,對幾何間隔沒有影響爲了方便計算,取∣∣w∣∣d=1⇒{(wTxi+b)≥1 yi=1(wTxi+b)≤−1 yi=−1⇒yi(wTxi+b)≥1函數間隔爲γ^=yi(wTxi+b)幾何間隔爲γ=∣∣w∣∣yi(wTxi+b)=∣∣w∣∣γ^那麼最優化問題就轉變成了maxw,bγ=maxw,b∣∣w∣∣γ^約束條件s.t. yi(wTxi+b)≥γ^,i=1,2,⋯,n
函數間隔γ^並不影響最優化解的問題,但是當w、b成倍改變的時候函數間隔也會成倍改變,而幾何間隔保持不變,對目標函數沒有影響。爲了方便,這裏取γ^=1,而且max∣∣w∣∣1等價於min21∣∣w∣∣2,便可得到下面支持線性可分的支持向量機的最優化問題。minw,b 21∣∣w∣∣2s.t. yi(wTxi+b)≥1⇒1−yi(wTxi+b)≤0,i=1,2,⋯,n
對偶問題
求解最優化問題
可以用拉格朗日乘子法進行求解,將原本有約束的優化問題,轉化爲對拉格朗日函數的無約束優化問題了。
拉格朗日乘子法的定義(以三維空間爲例):
L(x,y,λ)=f(x,y)+λg(x,y),λ是拉格朗日乘子
拉格朗日函數把原本的目標函數和其限制條件整合成了一個函數,這樣子約束問題就不存在了,我們可以直接對該目標函數求解極值。
理解對偶問題
首先,原問題是:
minw,b21∣∣w∣∣2s.t. gi(w,b)=1−yi(wTxi+b)≤0,i=1,2,⋯,m
拉格朗日乘子法轉換後,變成了:
L(w,b,λ)=21∣∣w∣∣2+i=1∑mλi[1−yi(wxi+b)]
原問題就變成了:
minw,bmaxλL(w,b,λ)s.t. λi≥0
我們首先直觀的看一下,爲什麼轉化後的下面的式子,可以替代上面的式子
由於λi≥0當1−yi(wxi+b)≥0時,maxλL(w,b,λ)是無窮,沒有意義當1−yi(wxi+b)≤0時,maxλL(w,b,λ)是21∣∣w∣∣2所以min(∞,21∣∣w∣∣2)=21∣∣w∣∣2
這樣就可以看出,轉化後的式子,與原式,意義相同。
什麼是對偶問題
對偶問題實際上就是將
minw,bmaxλL(w,b,λ)s.t. λi≥0
變成了
maxλminw,bL(w,b,λ)s.t. λi≥0
我們假設有一個函數f,我們一定有:
min maxf≥max minf
也就是說,大的裏面挑出來的小的,也要比小的裏面挑出來的大的要大。
這個關係實際上就是弱對偶關係,那什麼是強對偶關係呢?
min maxf=max minf
我們上面實際上就是用了強對偶的關係。
如果主問題是凸優化問題,也就是說當:
- 拉格朗日函數中的f(x)和g(x)都是凸函數
- h(x)是仿射函數
- 主問題可行域中至少有一點使得不等式約束嚴格成立。即存在x,對所有j,使得gj(x)<0
1,2,3同時成立時,存在強對偶性。
KKT約束條件
首先我們看一下什麼是KKT條件,以本節SVM爲例:
什麼時候KKT條件成立呢?
原問題具有強對偶性的充要條件是滿足KKT條件。
上面這個式子告訴我們什麼事?
直觀的來講就是說,支持向量滿足1-yi(wxi+b)=0,所以λi>0即可。
而,其他向量,1-yi(wxi+b)=0<0,λI=0
求解SVM優化問題
SVM優化問題的主問題:
minw,b21∣∣w∣∣2s.t. gi(w,b)=1−yi(wxi+b)≤0,i=1,2,⋯,m
那麼使用對偶算法求解線性可分的SVM步驟爲:
步驟1:對主問題構造拉格朗日函數
引入拉格朗日乘子λi≥0,其中i=1,2,…,m,得到拉格朗日函數:
L(w,b,λ)=21∣∣w∣∣2+i=1∑mλi[1−yi(wxi+b)]
步驟2:求拉格朗日函數對於w,b的最小
maxλminw,bL(w,b,λ)s.t. λi≥0
最後得到結果:
w=i=1∑mλixiyii=1∑mλiyi=0
我們將這個結果代回拉格朗日函數中,得:
實際上也就是:
minw,bL(w,b,λ)=i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)
步驟3:
求解maxλminw,bL(w,b,λ)
maxλ[i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)]s.t. i=1∑mλiyi=0λi≥0,i=1,2,⋯,m
對於凸優化問題,我們習慣於求解min,而不是max,稍作轉換:
minλ[21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)−i=1∑mλi]s.t. i=1∑mλiyi=0λi≥0,i=1,2,⋯,m
步驟4:由對偶問題求解λ1,λ2,…,λm
設:T(λ1,λ2,⋯,λm)=21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)−i=1∑mλi
問題就變成了求解T在約束條件下的最優解。
我們可以通過SMO算法求出這個最優解λ*
步驟5:由λ*求w
由步驟1已知:
w=i=1∑mλiyixi
xi、yi已知,λi*已由上一步求出,將它們代入上式,求w。
步驟6:由w求b
λ1*、λ2*、…、λm*都已經求出來了。
因爲λi(1-yi(wxI+b))=0,i=1,2,…,m是整體約束條件(KKT約束條件)
又因爲對於所有支持向量(xs,ys),都有1-ys(wxs+b)=0。
因此,所有大於0的λk*所對應的(xk,yK)必然是支持向量。
這樣,我們就能確認哪些樣本點是支持向量。
選擇任意支持向量,把它和w代入:ys(wxs+b)=1,即可求出b
ys(wxs+b)=1ys(wxs)+ysb=1,左右同乘ysys2(wxs)+ys2b=ys因爲ys2=1,所以,wxs+b=ys⇒b=ys−wxs
爲了更加魯棒,我們可以求出所有支持向量的均值:
b=∣S∣1s∈S∑(ys−wxs)
步驟7:求最終結果
現在w和b都求出來了
我們就能構造最大間隔超平面:wx+b=0
構造分類決策函數:f(x)=sign(wx+b)
其中,sign(·)全稱爲SignumFunction,定義爲:
sign(x)=⎩⎪⎨⎪⎧−1 : x<0 0 : x=0+1 : x>0
將新的樣本點帶入到決策函數中,可以得到樣本的分類
軟間隔
軟間隔的提出
在實際應用中,大部分情況的樣本都是線性不可分的,比如
上圖是部分樣本點線性不可分。
針對這種情況,提出了軟間隔,允許個別樣本點出現在間隔帶裏,比如
這樣就允許部分樣本點不滿足約束條件:yi(wxi+b)≥1
爲了度量這個“軟”的程度,我們針對每一個樣本(xi,yi),引入一個鬆弛變量ξi,令ξi≥0,且yi(wxi+b)≥1-ξi
對應到上圖就是:
軟間隔的SVM最優化問題
優化目標就從原來的硬間隔優化目標:
minw,b21∣∣w∣∣2s.t. 1−yi(wxi+b)≤0,i=1,2,⋯,m
變成了新的軟間隔優化目標:
minw,b21∣∣w∣∣2+Ci=1∑mξis.t. yi(wxi+b)≥1−ξi,i=1,2,⋯,m;ξi≥0,i=1,2,⋯,m
其中C是一個大於0的常數,若C爲無窮大,則ξi必然是無窮小,否則將無法最小化主問題。
如此一來,(部分)線性不可分SVM又變成了線性可分SVM。
當C爲有限值的時候,才能允許部分樣本不遵守約束條件1-yi(wxi+b)≤0
我們將優化目標整理成和線性可分的形式一樣,即爲:
minw,b,ξ21∣∣w∣∣2+Ci=1∑mξis.t. 1−ξi−yi(wxi+b)≤0,i=1,2,⋯,m;−ξi≤0,i=1,2,⋯,m
我們開始像硬間隔SVM一樣,使用對偶算法,求解優化問題
步驟1:構造拉格朗日函數
L(w,b,ξ,λ,μ)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mλi[1−ξi−yi(wxi+b)]+i=1∑m(−μiξi)λi≥0,μi≥0
其中λi和μi是拉格朗日乘子,而w、b和ξi是主問題參數。
根據主問題的對偶性,主問題的對偶問題是:
maxλ,μminw,b,ξL(w,b,ξ,λ,μ)
步驟2:最小化拉格朗日函數
首先對w、b和ξ最小化L(w,b,ξ,λ,μ)——分別對w、b和ξi求偏導,然後令導數爲0,得出如下關係:
w=i=1∑mλiyixi0=i=1∑mλiyiC=λi+μi
將這些關係代入SVM主問題的拉格朗日函數,得到:
minw,b,ξL(w,b,ξ,λ,μ)=i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)
步驟3:求minw,bL(w,b,ξ,λ,μ)對λ的最大
因爲上面最小化後的結果只有λ沒有μ,所以只需最大化λ
maxλ,μminw,b,ξL(w,b,ξ,λ,μ)=maxλ(i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj))s.t. i=1∑mλiyi=0;C−λi−μi=0;λi≥0,μi≥0;i=1,2,⋯,m
步驟4:使用SMO算法求解
將最大化問題,轉化爲最小化問題
maxλ(i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj))=minλ(21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)−i=1∑mλi)s.t. i=1∑mλiyi=0;0≤λi≤C;i=1,2,⋯,m
然後我們可以看到,實際上差別只在約束條件上,所以我們同樣可使用SMO算法求解出拉格朗日乘子λ*
步驟5:求解出w和b
由w=i=1∑mλiyixi求出w
因爲最終要求得到的超平面滿足wx+b=0,這一點是和硬間隔SVM的超平面是一樣的,因此求解過程照搬即可。
b=∣S∣1s∈S∑(ys−wxs)
其中S是支持向量的集合
在這裏,會面臨一個問題,就是在間隔中的樣本點,是不是支持向量
我們可以看到w=i=1∑mλiyixi,因此對於所有的λi>0的點都能影響到超平面本身,所以都是支持向量。
核函數
對svm來講,好的當然是樣本完全線性可分,就算差一點不是完全的我們也希望絕大部分樣本點線性可分。
但是我們可能碰到一種情況,樣本點完全線性不可分的,比如:
這種情況的一種解決辦法就是,將二維線性不可分樣本,映射到高維空間去,讓樣本點在高維空間線性可分,比如變成這樣:
非線性SVM
對於在有限維度向量空間中線性不可分的樣本,將其映射到更高維度的向量空間裏,再通過間隔大化的方式,學習得到支持向量機,就是非線性 SVM。
將樣本映射到的這個更高維度的新空間叫做特徵空間。
用x來表示原來的樣本點,用φ(x)表示x映射到特徵空間之後的新向量。
那麼間隔超平面可以表示爲:f(x)=wφ(x)+b
由上面的線性SVM的對偶問題,此處非線性SVM的對偶問題就變成了:
min(21i=1∑mj=1∑mλiλjyiyjϕ(xi)⋅ϕ(xj)−i=1∑mλi)s.t. i=1∑mλiyi=00≤λi≤C,i=1,2,⋯,m
可以看到,和線性SVM唯一不同的就是:之前的xi和xj的內積變成了φ(xi)和φ(xj)的內積。
核函數
對於非線性函數來說,和之前不同的主要是φ(xi)和φ(xj)的內積。而由於是低維空間映射到高維空間,維度可能會很大,所以如果將全部樣本的點乘全部計算好,這樣的計算量太大了。
針對這個問題,我們的解決方式是先不算,用一個函數先代替,我們用
k(xi,xj)=ϕ(xi)⋅ϕ(xj)k(xi,xj)稱爲核函數
這樣還體會不到核函數的好處,那麼我們設計一個例子:
假設多項式核函數
k(x,y)=(x⋅y+1)2
帶進樣本
k(x,y)=(i=1∑n(xi⋅yi+1))2
展開
i=1∑n(xi2)(yi2)+i=2∑nj=1∑i−1(22xixj)(22yiyj)+i=1∑n(22xi)(22yi)+1
需要先把向量映射成
x‘=(xn2,⋯,x12,22xnxn−1,⋯,22xn,⋯,22x1,1)
然後進行計算,顯然,這個映射不管是計算量還是存儲量都是極大的。
但是有了核函數,就不需要做這樣的映射,直接使用原樣本維度的點進行計算即可。
求解非線性SVM
在有了核函數之後,非線性問題重新轉換爲線性問題,與之前的求解過程相似。
先根據對偶函數求解λ,然後根據λ求解w,再根據支持向量求解b。
常用的核函數
線性核函數
k(xi,xj)=xiTxj
使用時無須指定參數,它直接計算兩個輸入向量的內積。經過線性和函數轉換的樣本,特徵空間與輸入空間重合,相當於沒有將樣本映射到更高維度的空間。
很顯然這是簡單的核函數,實際訓練、使用 SVM 的時候,在不知道用什麼核的情況下,可以先 試試線性核的效果。
多項式核函數
k(xi,xj)=(γxiTxj+r)d,r>0,d≥0
需要指定三個參數γ、r、d
這是一個不平穩的核,適用於數據做了歸一化的情況。
RBF核(Radial Basis Function Kernel)
k(xi,xj)=exp(−γ∣∣xi−xj∣∣2),γ>0
RBF核,又稱高斯核(Gaussian Kernel),是一個核函數家族。它會將輸入空間的樣本以非線性的方式映射到更高維度的空間(特徵空間),因此它可以處理類標籤和樣本屬性之間是非線性關係的狀況。
它有一個參數:γ,這個參數的設置非常關鍵。
- 如果設置過大,則整個 RBF 核會向線性核方向退化,向更高維度非線性投影的能力就會減弱
- 如果設置過小,則會使得樣本中噪音的影響加大,從而干擾終 SVM 的有效性。
不過相對於多項式核的3個參數,RBF 核只有一個參數需要調,還是相對簡單的。
當線性核效果不是很好時,可以用 RBF 試試。或者,很多情況下可以直接使用 RBF。
在具體應用核函數時,好針對具體問題參照前人的經驗。
附錄
SMO算法
SMO算法最通俗易懂的解釋
拉格朗日對偶問題
SUP、INF
INF下確界,SUP上確界
KKT
對於SVM最優化問題
f:21∣∣w∣∣2,g:1−yi(wxi+b)≤0λ>0,λigi(x)=λi(1−yi(wxi+b))=0
間隔
參考鏈接
在超平面w⋅x+b=0確定的情況下,|w⋅x+b|可以相對地表示點x距離超平面的遠
近。對於兩類分類問題,如果w⋅x+b>0,則x的類別被判定爲1;否則判定爲-1。
所以如果y(w⋅x+b)>0,則認爲x的分類結果是正確的,否則是錯誤的。且y(w⋅x+b)的值越大,分類結果的確信度越大。反之亦然。
函數間隔
對於一個訓練樣本(x(i),y(i)),定義它到超平面(w,b)的函數間隔爲:γ^=y(i)(wT+x(i)+b)
我們希望函數間隔越大越好,這樣分類效果好,即:
if y(i)=1,want wTx(i)+b>>0if y(i)=−1,want wTx(i)+b<<0並且有,若y(i)(wTx(i)+b)>0,則樣本(x(i),y(i))分類正確。對於整個訓練集,函數間隔定義爲:γ^=miniγ^(i)
也就是說,對於整個訓練集來說,函數間隔爲所有樣本中函數間隔最小的那個函數間隔。
那麼問題來了
函數間隔越大, 代表我們對於分類的結果非常確定. 我們希望函數間隔越大越好. 看上去好像沒什麼毛病。
但這裏的確有一個問題, 就是其實我們可以在不改變這個超平面的情況下可以讓函數間隔任意大, 爲什麼?
只要我們成比增加w,b就可以達到這個目的了.
例如, 我們將w變爲2w, b變爲2b, 那麼我們的函數間隔將會是原來的兩倍, 但是超平面2wTx+2b=0與wTx+b=0是一回事.
爲了解決這個問題, 我們就需要加上一些限制條件
需要將w的大小固定,如||w||=1,使得函數間隔固定。
這時的間隔也就是幾何間隔
幾何間隔
幾何間隔就是點到超平面的距離
點(xi,yi)到直線ax+by+c=0的距離公式:d(xi,yi)=2a2+b2∣axi+byi+c∣
在二維空間中,幾何間隔就是點到直線距離。
在三維及以上空間中,幾何間隔就是點到超平面的距離。
而函數間隔就是上述距離公式中的分子。
幾何間隔定義
γ(i)=∣∣w∣∣y(i)(wTx(i)+b)
顯然,當||w||=1時,幾何間隔就是函數間隔。
幾何間隔與函數間隔
γ(i)=∣∣w∣∣γ^(i)
訓練集到超平面的最小几何間隔
γ=miniγ(i)