標籤:

SVM Kernel

SVM Kernel

來自專欄 機器學習

在之前的討論中,我們遇到的問題是輸入 x 是房屋居住面積,我們考慮採用 x,x^{2},x^{3} 來進行回歸的到3次方程,為了將這兩組變數進行區分,我們稱:

  1. 原始的輸入值為問題的input attribute(在這個問題中就是居住面積 x )
  2. 當input attribute映射到一個新的值並且直接傳遞給學習演算法,將這些新的值稱為input feature

我們用 phi 表示feature mapping,將attribute映射到features,例如本例中 phi(x)=left[ x,x^{2},x^{3} 
ight]^{T}

如果不想直接採用original input attribute x 到SVM,我們希望採用一些feature phi(x) 來進行學習,回顧之前的演算法,我們所有的 x 都用 phi(x) 進行替換即可。

然而演算法可以寫成內積的形式 left langle x,z 
ight 
angle ,我們將所有的內積替換為 left langle phi(x),phi(z) 
ight 
angle ,因此給定一個feature mapping phi 我們定義對應的Kernel為:

K(x,z)=phi(x)^{T}phi(z).

我們只要將演算法中的形式 left langle x,z 
ight 
angle 替換為 K(x,z) ,演算法就會採用映射後的特徵進行學習。


給定 phi ,確定 phi(x),phi(z) 後取內積即可計算得到 K(x,z) ,但是通常 phi(x) 本身難於計算,因為其往往是一個extremely high dimeensional vector,而 K(x,z) 是便於計算的。因此我們可以在不計算 phi(x) 的情況下讓SVM在high dimensional feature space來進行學習。

例如,假設 x,z in R^{n} ,考慮 K(x,z)=(x^{T}z)^{2}. 我們可以將其寫為

K(x,z)=(sum_{i=1}^{n}{x_{i}z_{i}})(sum_{i=1}^{n}{x_{i}z_{i}})=sum_{i=1}^{n}{sum_{j=1}^{n}{x_{i}x_{j}z_{i}z_{j}}}=sum_{i,j=1}^{n}{(x_{i}x_{j})(z_{i}z_{j})}

因此我們可以看到 K(x,z)=phi(x)^{T}phi(z). 特徵映射 phi 為(以n=3為例)

顯然計算high-dimensional phi(x) 需要 O(n^{2}) 時間複雜度,而查找 K(x,z) 只需要 O(n) 時間複雜度。

我們考慮第二個相關的Kernel如下所示,對應的特徵映射如下所示

其中的參數c控制一階項 x_{i} 和二階項 x_{i}x_{j} 之間的相對權重。

更加廣義的來說,Kernel K(x,z)=(x^{T}z+c)^{d} 對應一個特徵映射到 C_{n+d}^{d} 維的特徵空間


我們從另一個角度來看到kernel,如果 phi(x),phi(z) 足夠接近,那麼 K(x,z)=phi(x)^{T}phi(z). 就會很大;相反,如果 phi(x),phi(z) 遠離,那麼 K(x,z)=phi(x)^{T}phi(z). 就會很小,因此我們可以將 K(x,z) 看作是 phi(x),phi(z) 相似度的一個衡量,或者 x,z 相似度的衡量。

在這個角度下,我們可以採用K(x,z)=exp(-frac{||x-z||^{2}}{2sigma^{2}}) 來衡量相似度,這是一個很合理的衡量方式,當x、z足夠接近, K(x,z)
ightarrow1 ;當 x,z 分離很遠, K(x,z)
ightarrow0 .我們能否採用這個K來作為SVM中的kernel呢?答案是可以,這個Kernel被稱為Gaussian Kernel.對應一個無窮維特徵映射 phi .

進行推廣,給定一個函數K,我們如何區分是否是valid kernel,我們能否區分是否存在一個特徵映射 phi 使得 K(x,z)=phi(x)^{T}phi(z). 對所有的 x,z 成立?下面介紹Mercer定理


Mercer定理:給定 K:R^{n}	imes R^{n}
ightarrow R ,K是一個valid kernel的充分必要條件是對於所有的 left{ x^{(1)},...,x^{(m)} 
ight},(m<infty) 對應的kernel matrix是 symmetric positive semi-definite(對稱半正定矩陣).

證明:假設K是一個valid kernel對應某個feature mapping phi ,給定一個有限集合m個點 left{ {x^{(1)},...,x^{(m)}} 
ight} ,定義 m	imes m 矩陣 K 為Kernel Matrix,其中元素為 K_{ij}=K(x^{(i)},x^{(j)}) ,注意這裡我們重載了符號 K ,既用來表示核函數 K(x,z) 也表示Kernel Matrix K

必要性證明:假設K是一個valid kernel,那麼 K_{ij}=K(x^{(i)},x^{(j)})=phi(x{(i)})^{T}phi(x{(j)})=phi(x{(j)})^{T}phi(x{(i)})=K(x^{(j)},x^{(i)})=K_{ji}

因此 K 是對稱矩陣;

phi_{k}(x) 表示向量 phi(x) 的第k個元素,那麼對於任意的向量 z 有:

由於向量z是任意的,因此K是半正定的(positive semi-definite, Kgeq0 )

充分性證明:這裡不做證明


常用核函數

多項式核函數(polynomial kernel function)

K(x,z)=(xcdot z+1)^{p}

對應的支持向量機是一個p次多項式分類器,在此情形下,分類決策函數成為:

f(x)=signleft( sum_{i=1}^{m}{alpha_{i}y^{(i)}(x^{(i)}}x+1)^{p}+b. 
ight)

高斯核函數(Gaussian Kernel Function)

K(x,z)=exp(-frac{||x-z||^{2}}{2sigma^{2}})

對應的支持向量機是高斯徑向基函數(radial basis function)分類器,在此情形下,分類決策函數成為:

f(x)=sign(sum_{i=1}^{m}{alpha_{i}y^{(i)}}exp(-frac{||x-z||^{2}}{2sigma^{2}})+b)


推薦閱讀:

BAT機器學習面試1000題系列(241-245)
機器學習技法筆記2:對偶支持向量機
MATLAB 機器學習筆記--SVM
我對於SVM的理解,以及Python實現
流形正則化:一個從已標記和未標記樣本學習的幾何框架(JMLR2006)

TAG:機器學習 | SVM |