在【機器學習】推導支持向量機SVM二分類中,我們已經推導出線性核SVM的對偶優化問題:
J=∑iαi−12∑i∑jαiαjdidjk(xi)Tk(xj)=∑iαi−12∑i∑jαiαjdidjK(xi,xj)subject to ∑αidi=0,0≤αi≤C
在優化好
αi 拉格朗日量後,我們得到的w和b爲:
w=∑αidixib=−(y1+y−1)/2
需要注意的是,
w 的表達式中有
xi 。
我們引入核函數
K(xi,xj) 到SVM,必須注意到
K(xi,xj)=ϕ(xi)Tϕ(xj) ,也就是說理論上核函數應該能拆開。在引入核函數的前提下,w的表達式爲
w=∑αidiϕ(xi)T
我們已知幾個常用核函數,比如多項式核函數和徑向基核函數。多項式核函數的的定義爲
K(xi,xj)=(xTixj+1)n
假設n=2,那麼拆開爲
K(xi,xj)=(xTi)2x2j+2xixj+1=[(xTi)2,2‾‾√xTi,1][(xTj)2,2‾‾√xTj,1]T
這裏,我們可以確實求出w的值。
徑向基核函數定義爲
K(xi,xj)=e−(xi−xj)2σ2=e−x2iσ2e−x2jσ2exTixjσ2=e−x2iσ2e−x2jσ2∑k=0∞(2xTixj/σ2)kk!=[e−x2iσ2,1,21‾‾√xiσ,222!‾‾‾√(xiσ)2,...][e−x2jσ2,1,21‾‾√xjσ,222!‾‾‾√(xjσ)2,...]T
結果表明,
Φ(x) 函數是一個無限維度的函數。這說明,在工程上我們不一定能夠完美地拆開核函數爲
K(xi,xj)=ϕ(xi)Tϕ(xj) 。之後還有很多各種類型的核函數,比如使用了tanh函數的核函數,這些核函數在工程上是很難拆分求解的,很難獲取
ϕ(x) 函數,亦難以求取w的確切值。
那麼如何求解引入複雜核函數的SVM呢?在優化求解J之後,我們可以獲取並保存
αi 。由於SVM只有少量支持向量(數據)對決策超平面有決定作用,很多拉格朗日參數
αi→0 ,我們可以只保存足夠大的
αi 以及對應的訓練數據
xi 、標記
di ,不直接計算出w的確切值,這在工程上是確實可行的。
當我們需要進行預測的時候,我們導入
αi ,
xi 和
di ,然後把新數據x代入核函數,計算
y=∑iαidiK(xi,x)+b 即可。