1. 程式人生 > >【Machine Learning, Coursera】機器學習Week7 核函式

【Machine Learning, Coursera】機器學習Week7 核函式

Kernels

本節內容:
核函式(Kernel)是一類計算變數間相似度的函式,它可用於構造新的特徵變數,幫助SVM解決複雜的非線性分類問題。

相關機器學習概念:
相似度函式(Similarity Function)
高斯核函式(Gaussian Kernel)

1. Kernels

對於下圖中的非線性分類問題,常用的思路是構造多項式特徵變數,如果θTx=θ0+θ1x1+θ2x2+θ3x1x2+θ4x12+θ5x22+...0\theta^T x=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+\theta_4x^2_1+\theta_5x^2_2 +...≥0

,預測y=1y=1,反之預測0.

然而,將所有高階項納入特徵變數會導致運算成本過高等問題,有沒有更好的選擇特徵變數的方法呢?

核函式就是一種可用於構造新的特徵變數的方法。

把新的特徵變數記作ffθTf=θ0+θ1f1+...+θnfn\theta^T f=\theta_0+\theta_1f_1+...+\theta_nf_n
fif_i的計算方法如下:
fi=similarity(x,l(i))=exp(xl(i)22σ2)

f_i=similarity(x,l^{(i)})=exp(-\frac{‖ x-l^{(i)} ‖^2}{2\sigma^2})
其中,l(i)l^{(i)}是我們事先選擇的一些標記點(選擇方法在下一節會講到),它的維度和樣本點的維度相同,每個標記點定義一個新的特徵變數。這裡的similarity函式是高斯核函式(Gaussian Kernel),它是核函式中的一種。核函式是眾多相似度函式的總稱。

高斯核函式所做的,其實是計算了樣本點和標記點的遠近程度,距離越近,fif_i的值越接近1,反之,其值越接近0.
如果x

l(i)x≈l^{(i)},那麼fiexp(02σ2)1f_i≈exp(-\frac{0}{2\sigma^2})≈1
如果xx距離l(i)l^{(i)}很遠,那麼fiexp((largenumber)22σ2)0f_i≈exp(-\frac{(large\ number)^2}{2\sigma^2})≈0

高斯核函式的表示式中有一個σ2\sigma^2,它是高斯核函式的引數,它控制了fif_i下降的速度。
在這裡插入圖片描述

\qquad

2. Application

2.1 SVM with Kernels

要使用核函式,首先需要選擇一系列標記點。

標記點該如何選擇呢?

在實踐中,一種選擇標記點的方法是將標記點與樣本點完全對應。有m個樣本點,就能得到m個標記點。此外,按照慣例,我們可能還會加入一個額外的標記點f0f_0,其值始終為1.

在這裡插入圖片描述

這樣我們就得到了帶核函式的SVM模型:

Hypothesis: Given x, compute features fRm+1f∈\R^{m+1}
\qquadPredict “y=1” if θTf=θ0+θ1f1+...+θmfm0\theta^T f=\theta_0+\theta_1f_1+...+\theta_mf_m≥0

Objective function:
J(θ)=Ci=1m[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+12j=1mθj2J(\theta)=C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^T f^{(i)})+(1-y^{(i)})cost_0(\theta^T f^{(i)})]+\frac{1}{2}\sum_{j=1}^m\theta_j^2
\qquad
從原理上看,核函式不僅可以應用於SVM,也可應用於其他演算法,如邏輯迴歸等。但在實踐中我們並不這樣做,原因是用於SVM的計算技巧不能很好地推廣到其他演算法上,核函式和其他演算法結合時運算速度會非常慢。
\qquad

2.2 SVM parameters

在這裡插入圖片描述