SVM: 用kernels(核函數)來定義新的features,避免使用多項式,高斯kernel


應用kernels來進行非線性分類

非線性分類:是否存在好的features的選擇(而不是多項式)--f1,f2,f3....

上圖是一個非線性分類的問題,前面講過,我們可以應用多項式(features)來構造hypothesis來解決復雜的非線性分類問題。

我們將x1,x2,x1x2.....替換成f1,f2,f3......,那么是否有更好的features的選擇呢(而不是這些多項式做為features),因為我們知道以這些多項式做為features,次數較高,計算較復雜.

使用Kernel(核函數)來計算新的features

假設現在我們有三個features: x0,x1,x2;我們選擇三個標識點(landmarks l(1),l(2),l(3)),通過相似度函數,也稱為核函數來計算x與三個標識點之間的相似度

這兒我們使用的核函數是Gaussian(高斯)kernels,核函數有很多種,這兒我們只是選取了其中的一種

核函數也記為小寫k(x,l(i)),將舊的features(x0,x1,x2)通過核函數與標識點(landmarks)映射成新的features---f1,f2,f3

Kernels是怎么度量這種相似度的

在這個例子中,我們忽略了x0(截距),因為x0總是等於1.

由上面的公式可以看出,當x與我們的一個landmark很近時,它們之間的歐式距離約等於0,這時高斯核函數的值約為1(可以理解為與這個landmark相似)

當x與我們的landmark相距很遠時,它們之間的歐式距離很大,這時高斯核函數的值約為0(可以理解為與這個landmark不相似)

這樣我們通過三個landmarks(l(1),l(2),l(3))來生成三個新的features: f1,f2,f3.這三個features分別用來度量樣本點是否與這三個landmarks是否相似(1/0)

畫圖來看核函數(與landmarks的相似度)

 

假如現在我們的一個landmark為(3,5),σ2=1,則左邊為f1的圖,可以看到當x=(3,5)時(即與landmark相等時),f1的值達到最大=1,隨着x離(3,5)越來越遠,f1的值下降,直到為0(即相距很遠)。下面的那個圖為上面的圖的等值線

σ2高斯核函數的parameter(參數),它可以用來調整下降的速度。如當σ2=0.5時,圖像會更陡,說明下降上升得越快;當σ2=3時,圖像會更平緩,說明下降上升得越慢。

使用了新的features(利用kernel函數)后如何進行預測(畫出非線性decision boundary)

SVM中的hypothesis是直接對結果進行預測,如上圖所示,當θTx>=0時,hypothesis = 1;

利用某種學習算法求得了它的parameters(θ),分別為θ0=-0.5,θ1=1,θ2=1,θ3=0

當我的x(trainning/crossvalidation/test data)距離landmark1(l1)很近時,這時hypothesis=0.5>0,預測值為1;

當我的x(trainning/crossvalidation/test data)距離landmark2(l2)很近時,這時hypothesis=0.5>0,預測值為1;

當我的x(trainning/crossvalidation/test data)距離landmark1(l1)和landmark2(l2)都很遠時,這時hypothesis=-0.5<0,預測值為0;

這樣我們就可以畫出decision boundary大致如上圖所示,在紅色框里面的點,預測值為1;在框外的點,預測值為0;這樣我們就畫出了一個非線性的決策邊界

那么我們如何選擇landmarks呢?以及除了高斯核函數外有其它的核函數嗎?---之后會提到

總結

  1. Kernel(核函數)是用來計算新的features的,從而避免在非線性較復雜的問題時直接使用多項式來做為features(使用多項式計算較復雜)
  2. 高斯核函數通過x與landmarks的距離遠近來度量這種相似度(越近表明越相似越接近於1,越遠表明越不相似,越接近於0),取值范圍在0-1之間。這樣就映射出了新的features(這種features表明與landmarks相似的度量)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM