吳恩達機器學習筆記44-核函數(Kernels)


  回顧我們之前討論過可以使用高級數的多項式模型來解決無法用直線進行分隔的分類
問題:

為了獲得上圖所示的判定邊界,我們的模型可能是𝜃0 + 𝜃1𝑥1 + 𝜃2𝑥2 + 𝜃3𝑥1𝑥2 + 𝜃4𝑥²1 +𝜃5𝑥²2 + ⋯的形式。

我們可以用一系列的新的特征f 來替換模型中的每一項。例如令: 𝑓1 = 𝑥1, 𝑓2 = 𝑥2, 𝑓3 =𝑥1𝑥2, 𝑓4 = 𝑥²1, 𝑓5 = 𝑥²2

...得到ℎ𝜃 (𝑥) = 𝜃1𝑓1 + 𝜃2𝑓2+. . . +𝜃𝑛𝑓𝑛。然而,除了對原有的特征進行組合以外,有沒有
更好的方法來構造𝑓1, 𝑓2, 𝑓3?我們可以利用核函數來計算出新的特征。

  給定一個訓練實例𝑥 , 我們利用𝑥 的各個特征與我們預先選定的地標
(landmarks)𝑙(1), 𝑙(2), 𝑙(3)的近似程度來選取新的特征𝑓1, 𝑓2, 𝑓3。

例如:

其中:

為實例𝑥中所有特征與地標𝑙(1)之間的距離的和。

上例中的𝑠𝑖𝑚𝑖𝑙𝑎𝑟𝑖𝑡𝑦(𝑥, 𝑙(1))就是核函數,具體而言,這里是一個高斯核函數(Gaussian Kernel)。
注:這個函數與正態分布沒什么實際上的關系,只是看上去像而已。

這些地標的作用是什么?如果一個訓練實例𝑥與地標𝐿之間的距離近似於0,則新特征 𝑓近似於𝑒−0 = 1,如果訓練實例𝑥與地標𝐿之間距離較遠,則𝑓近似於𝑒−(一個較大的數) = 0。

假設我們的訓練實例含有兩個特征[𝑥1 𝑥2],給定地標𝑙(1)與不同的𝜎值,見下圖:

圖中水平面的坐標為 𝑥1,𝑥2而垂直坐標軸代表𝑓。可以看出,只有當𝑥與𝑙(1)重合時𝑓才
具有最大值。隨着𝑥的改變𝑓值改變的速率受到𝜎2的控制。

  在下圖中,當實例處於洋紅色的點位置處,因為其離𝑙(1)更近,但是離𝑙(2)和𝑙(3)較遠,因
此𝑓1接近1,而𝑓2,𝑓3接近0。因此ℎ𝜃 (𝑥) = 𝜃0 + 𝜃1𝑓1 + 𝜃2𝑓2 + 𝜃1𝑓3 > 0,因此預測𝑦 = 1。同
理可以求出,對於離𝑙(2)較近的綠色點,也預測𝑦 = 1,但是對於藍綠色的點,因為其離三個
地標都較遠,預測𝑦 = 0。

這樣,圖中紅色的封閉曲線所表示的范圍,便是我們依據一個單一的訓練實例和我們選
取的地標所得出的判定邊界,在預測時,我們采用的特征不是訓練實例本身的特征,而是通
過核函數計算出的新特征𝑓1, 𝑓2, 𝑓3。

  如何選擇地標?
  我們通常是根據訓練集的數量選擇地標的數量,即如果訓練集中有𝑚個實例,則我們選
取𝑚個地標,並且令:𝑙(1) = 𝑥(1), 𝑙(2) = 𝑥(2), . . . . . , 𝑙(𝑚) = 𝑥(𝑚)。這樣做的好處在於:現在我們
得到的新特征是建立在原有特征與訓練集中所有其他特征之間距離的基礎之上的,即:

下面我們將核函數運用到支持向量機中,修改我們的支持向量機假設為:
• 給定𝑥,計算新特征𝑓,當𝜃𝑇𝑓 >= 0 時,預測 𝑦 = 1,否則反之。
相應地修改代價函數為:

在具體實施過程中,我們還需要對最后的正則化項進行些微調整,在計算

時,

我們用𝜃𝑇𝑀𝜃代替
𝜃𝑇𝜃,其中𝑀是根據我們選擇的核函數而不同的一個矩陣。這樣做的原因是為了簡化計算。

  理論上講,我們也可以在邏輯回歸中使用核函數,但是上面使用 𝑀來簡化計算的方法
不適用與邏輯回歸,因此計算將非常耗費時間。

  在此,我們不介紹最小化支持向量機的代價函數的方法,你可以使用現有的軟件包(如
liblinear,libsvm 等)。在使用這些軟件包最小化我們的代價函數之前,我們通常需要編寫核
函數,並且如果我們使用高斯核函數,那么在使用之前進行特征縮放是非常必要的。

  另外,支持向量機也可以不使用核函數,不使用核函數又稱為線性核函數(linear kernel),
當我們不采用非常復雜的函數,或者我們的訓練集特征非常多而實例非常少的時候,可以采
用這種不帶核函數的支持向量機。

  下面是支持向量機的兩個參數𝐶和𝜎的影響:
𝐶 = 1/𝜆
𝐶 較大時,相當於𝜆較小,可能會導致過擬合,高方差;
𝐶 較小時,相當於𝜆較大,可能會導致低擬合,高偏差;
𝜎較大時,可能會導致低方差,高偏差;
𝜎較小時,可能會導致低偏差,高方差。


免責聲明!

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



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