機器學習系列18:核函數

  • 2019 年 10 月 7 日
  • 筆記

讓我們來考慮這樣一個問題,現在給定一個數據集,讓你劃分出決策邊界,該怎麼辦呢?數據集中正樣本為「叉」,負樣本為「圈」,如下圖:

第一反應就是用一個高階多項式去構造一個假設函數,當假設函數大於等於零時,我們就可以認為它為正樣本,否則為負樣本,類似下面這種形式:

但是有一個問題出現了,我們不能確定構造的假設函數就是最符合這個例子的高階多項式,可能還有其他的高階多項式能夠更好地符合這個例子。

為了解決這樣一個問題,我們首先來引入新的符號,用 f 替換原來多項式中的 x,假設函數就變成了如下這種類型:

現在問題就轉化成如何選擇特徵 f?我們可以通過核函數(Kernels)改造支援向量機讓它來學習複雜的非線性假設函數。

對於特徵 x_1 和 x_2,我們首先手動的選取幾個點 l^(1), l^(2), l^(3), 這些點被稱作標誌(landmark), 然後令:

其中:

這裡的 similarity( ) 是相似度函數,被稱為核函數(Kernels),也叫做高斯核函數(Gaussian Kernel)雖然這個函數跟正態分布函數長得很像,但其實比沒有什麼關係。

現在我們來分析一下這個函數,當 x 與 l 幾乎相等時,這一項:

就等於 0,那麼 f =1。當 x 與 l 差距很大時,f = 0。

讓我們用影像去直觀地感受一下:

影像中高度為 f 的值,x 越接近 l ,f 就越處在「山丘」的頂部。山丘的形狀還與 σ^2 有關。

σ^2 越小,「山丘」越「瘦高」,σ^2 越大,「山丘」越「胖矮」。

在下面這張圖中,假設我們已經手動尋找了標誌且構造了一個假設函數:

參數也知道了:

現在觀察粉紅色的點,它離 l^(1) 近,f1 = 1,離 l^(2) , l^(3) 遠,f2 和 f3 都為 0,此時假設函數大於 0,我們就可以預測這是一個正樣本。

再來觀察淺藍色的點:

離 l^(1) , l^(2) , l^(3) 都遠,f1,f2,f3 都為 0,假設函數就小於 0,我們就可以認為這是一個負樣本。通過這樣的判斷,我們就可以畫出一個決策邊界:

如何選擇標記點呢?我們可以將訓練集所在的位置直接當做樣本點來處理。