SVM是一個非常經典的監督學習算法。下面給出SVM對於二值分類的原理及推導過程。
1、問題轉化
如下圖所示:
想要找一條直線
wx+b=0將圖中紅藍兩類樣本區分開,假設將這條線向左和向右分別平移,接觸到樣本點停止,得到兩條新的直線,設它們分別爲
wx+b=c和
wx+b=−c。
令
w=cw,b=cb,則這兩條直線轉化爲
wx+b=1和
wx+b=−1。此時,令
wx+b=0也左右同時除以
c,仍得到
wx+b=0。
SVM的目的即找到直線
wx+b=0,使得
wx+b=1和
wx+b=−1之間的距離
2d=∣∣w∣∣2最大。
所以,只要保證:
min21∣∣w∣∣2
由於在上圖中紅線的上方
wx+b<0,且標籤
y=−1;而在紅線的下方有
wx+b>0,且標籤
y=1,故有約束條件:
(wxi+b)yi≥1
到這裏,此問題已被轉化爲一有約束的優化問題:
{min21∣∣w∣∣2(wxi+b)yi≥1
對於小樣本問題,可以用拉格朗日乘子法解決。
詳細解法參照 https://blog.csdn.net/qq_36758914/article/details/103324074
2、拉格朗日對偶
此處引入拉格朗日對偶的概念。
1) 原始問題
假設
f(x),ci(x),hj(x)是定義在
Rn上的連續可微函數,考慮約束最優化問題:
x∈Rnminf(x)
s.t.ci(x)≤0,i=1,2,…,k;hj(x)=0,i=1,2,…,l
稱此約束最優化問題爲原始最優化問題或原始問題。
首先,引進廣義拉格朗日函數:
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)
這裏,
x=(x(1),x(2),…,x(n))T∈Rn,
αi,βj是拉格朗日乘子,
αi≥0。考慮
x的函數:
θp(x)=α,β,αi≥0maxL(x,α,β)
假設給定某個
x,如果
x違反原始問題的約束條件,即存在某個
i使得
ci(x)>0或者存在某個
j使得
hj(x)=0,那麼就有:
θp(x)=α,β,αi≥0max[f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)]=+∞
因爲若某個
i使得
ci(x)>0,則可以令
αi→+∞,若某個
j使
hj(x)=0,則可令
βj→+∞。以上兩種情況均可以使
θp(x)=+∞。
相反地,若
x滿足約束條件,則:
θp(x)=α,β,αi≥0max[f(x)+i=1∑kαici(x)]
由於
αi≥0,
ci(x)≤0,故
i=1∑kαici(x)≤0。所以:
θp(x)=f(x)
即:
θp(x)={f(x),+∞,x滿足原問題約束其他
如果考慮極小化問題
xminθp(x)=xminα,β,αi≥0maxL(x,α,β)
由
θp(x)的表達式可知,
xminθp(x)是與原始最優化問題等價的,也就是說它們的解相同。問題
xminα,β,αi≥0maxL(x,α,β)被稱爲廣義拉格朗日函數的極小極大問題。
2)對偶問題
定義
θD(α,β)=xminL(x,α,β)
再考慮極大化
θD(α,β),即:
α,β,αi≥0maxθD(α,β)=α,β,αi≥0maxxminL(x,α,β)
問題
α,β,αi≥0maxxminL(x,α,β)稱爲廣義拉格朗日函數的極大極小問題。
若目標函數與所有約束函數皆爲凸函數,則原始問題和它的對偶問題是等價的。
而對於
SVM,其所有函數皆爲凸函數。
3、SVM的對偶問題
{min21w2(wxi+b)yi≥1
其廣義拉格朗日函數爲:
L(w,b,α)=21w2+i=1∑Nαi[1−(wxi+b)yi]
原問題:
w,bminαi≥0maxL(w,b,α)
對偶問題:
αi≥0maxw,bminL(w,b,α)
先對
L(x,α,β)求極小值:
∂w∂L=0⇒w=i=1∑Nαixiyi
∂b∂L=0⇒i=1∑Nαiyi=0
將結果帶入對偶問題,可將其轉化爲下式:
αi≥0max21(i=1∑Nαixiyi)2+i=1∑Nαi[1−((j=1∑Nαjxjyj)xi+b)yi]
=αi≥0max21(i=1∑Nαixiyi)2+i=1∑Nαi[1−(j=1∑Nαjxjyj)xiyi]
=αi≥0max21(i=1∑Nαixiyi)2+i=1∑Nαi−i=1∑Nj=1∑Nαixiyiαjxjyj
=αi≥0max−21i=1∑Nj=1∑Nαiαjyiyj<xixj>+i=1∑Nαi
約束條件爲:
i=1∑Nαiyi=0αi≥0
KKT條件爲:
αi[1−(wxi+b)yi=0
故原始問題被轉化爲:
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧αi≥0max−21i=1∑Nj=1∑Nαiαjyiyj<xixj>+i=1∑Nαii=1∑Nαiyi=0αi≥0αi[1−(wxi+b)yi=0
4、SMO算法(序列最小優化算法)
優化此問題時採用SMO算法。
假設此問題中只有
α1到
α10,則SMO算法的步驟如下。
1)先固定
α3到
α10,則最優化函數變爲:
αi≥0max−21i=1∑2j=1∑2αiαjyiyj<xixj>+i=1∑2αi
約束條件變爲:
α1y1+α2y2=−i=3∑10αiyi爲一常數
則此優化問題變成了一個二維變量(
α1,α2)的優化問題,使原來的十維優化問題大大簡化。
這時,可以先算出最優的
α1和
α2。
2)固定
α1和
α4到
α10,重複以上操作並代入最優的
α1,得到最優的
α2和
α3。
3)固定
α1,
α2和
α5到
α10,重複以上操作並代入最優的
α1和
α2,得到最優的
α3和
α4。
……
4)得到所有的最優
α,將其代入
w=i=1∑10αixiyi,得到最優的
w值。
5)若得到的
αi=0,則表示第
i個約束條件不起作用;若得到的
αi=0,則它對應的
xi和
yi就是支持向量。
6)通過
y=(i=1∑Nαixiyi)Tx=i=1∑NαiyixiTx得到某樣本點對應的標籤。
5、線性不可分核函數
對於一些線性不可分的樣本,如下圖(左),不能找出一條直線來分類樣本。此時需要做空間的變換。
設原空間爲
χ⊂Rn,x=(x(1),x(2))T∈χ,新空間爲
Z⊂R2,z=(z(1),z(2))T∈Z,定義從原空間到新空間的變換(映射):
z=ϕ(x)=((x(1))2,(x(2))2)T
經過變換
z=ϕ(x),原空間
χ⊂Rn變換爲新空間
Z⊂R2,原空間中的點相應地變換爲新空間中的點,原空間中的橢圓
w1(x(1))2+w2(x(2))2+b=0
變換爲新空間中的直線
w1z(1)+w2z(2)+b=0
即由下圖中的左圖變爲右圖。
實際上我們並不需要知道經過空間變換後的
z1和
z2的具體值,因爲由
y=(i=1∑Nαixiyi)Tx=i=1∑NαiyixiTx知,我們只需要知道
xi和
x的點積即可。
常用的空間變換有:
1)多項式核函數:
K(x,z)=(x⋅z+1)p
對應的支持向量機是一個
p次多項式的分類器。此時,分類決策函數變成:
f(x)=sign(i=1∑Nαiyi(xi⋅x+1)p+b)
2)高斯核函數:
K(x,z)=e−2σ2∣∣x−z∣∣2
對應的支持向量機是高斯徑向基函數分類器。此時,分類決策函數變成:
f(x)=sign(i=1∑Nαiyie−2σ2∣∣xi−x∣∣2+b)