1. 程式人生 > >機器學習----支援向量機(核函式)

機器學習----支援向量機(核函式)

#線性不可分 我們的SVM是找到一條分割直線,但是如果線性不可分怎麼辦?如下圖:

可以看出,是有一個明顯的分割線的,但是不是直線,這種情況下我們怎麼用SVM呢?我們可以找到一種變化,讓變換後的資料線性可分,用圖形象的表示為:

圖中的ϕ就是我們找到的線性變化。至此我們就能解決線性不可分問題。

核函式

我們接著說線性不可分問題。我們怎麼找ϕ呢?有個想法是這樣的:
比如原始資料滿足的是二次函式規律那把原來的X,擴充套件成[X | X2]的形式,這樣我們就又能進行線性迴歸了。同理,如果是三次,就擴充套件成[X | X2| X3],記作ϕ(x)
正常線性可分問題dual問題為:

maxαipαi12i,j=1pyiyjαiαjxTixj
現在改寫成:
m
ax
α
ipαi12i,j=1pyiyjαiαjϕ(xi)Tϕ(xj)

接下來我們就要說核函數了(kernel)。注意到先變換再內積的複雜(二維就是2×2,三維就是3×3),我們就像有沒有函式κ它滿足這樣優良的性質:
ϕ(xi)Tϕ(xj)=κ(xixj)
即它能把問題變成先低維預算,再直接對映的效果,我們把κ就叫做核函式。
常見的核函式有:
名稱 表示式 引數
線性核 κ(xi,xj)=xTixj
多項式核 κ(xi,xj)=(xTixj)d d1
高斯核 κ(xi,xj)=exp(|
|xixj||2
2σ2
)
σ>0
拉普拉斯核 κ(xi,xj)=exp(||xixj||σ) σ>0
Sigmoid核 κ(xi,xj)=tank(βxTixj+θ) tanh為雙曲正切函式,β>0,θ<0

下圖是高斯核的例子: