【機器學習筆記】SVM part2: 核函數與SMO算法

回顧我們之前的問題:
之前我們說到,假設我們了 α , 又有樣本點數據,我們很容易由 w=mi=1αiy(i)x(i) 得出 w , 同時也求得了 b

那麼就得到了這個分類面 wTx+b ,我們換一種表示方法:

wTx+b=(i=1mαiy(i)x(i))Tx+b=i=1mαiy(i)<x(i),x>+b

這裏我們可以看出,新的數據點只需與那些 αi=0 的臨界點做內積,便可以得到分類結果。

核函數(Kernels)

先說一下直觀理解吧(不一定正確,僅作直觀理解),核函數就是把低維特徵映射到高維,從而使得在低維情況下線性不可分的數據在高維情況下有可能能夠找到那個分類面

特定情況下,如果我們需要,可以將一個一維特徵加以變換成多維
比如說要擬合曲線的時候,我們可以用一個自變量的多次方程去擬合
比如在一個迴歸問題中,觀察到 y 可以用關於 x 的 3次多項式來擬合
就可以用如下變換,將 x 擴展到高維,使得 y 成爲一個關於 ϕ(x) 的函數:

ϕ(x)=xx2x3

如果有原來變量的內積,如 <x,z> , 那麼映射之後爲 <ϕ(x),ϕ(z)> , 那麼這個核函數的形式化表出就爲:

K(x,z)=ϕ(x)Tϕ(z)

這裏只是簡單列舉一個形式化表出的例子,沒有直接關聯原問題,但是這裏可以理解,我們可以通過這個和函數,讓SVM學習更高維度的特徵

這裏還產成了一個問題:是不是每一個核函數都能表出爲類似 ϕ(x)Tϕ(z) 的形式呢?

其實我初步的思考爲,只有在原低維特徵向量有做內積的運算時,我們這樣構造和轉化會方便

(好像有點廢話,因爲後面看到高斯核的時候在想是不是也能轉化…不過是可以轉化的,高斯核將低維特徵轉化成了無線維的特徵)

Andrew 在課上講了這樣一句話:每當你在原問題中遇到 <x,z> ,也就是內積的形式時,你都可以把它轉化成 K(x,z) ,當你在做這個轉化的時候,你就將低維特徵映射到了高維。

嗯,學到後面就清晰了,這個就是核函數有效性的問題

這裏說明一個核函數減少計算複雜度的例子:

假設, x,z 都是 n 維向量, 核函數爲: K(x,z)=(xTz)2 , 整理:

K(x,z)=ni=1nj=1(xi,xj)(zi,zj)=ϕ(x)Tϕ(z)

不要疑惑,這裏的 ϕ(x) 並不是上文的,而是如下:

ifn=3:

ϕ(x)=x1x1x1x2...x3x3

顯然, ϕ(x)

顯然, ϕ(x) n2 項,所以計算複雜度爲 O(n2) ;

但是如果我們直接計算 K(x,z)=(xTz)2 這裏的複雜度就變成了 O(n)

相關文章
相關標籤/搜索