SVM 核方法


在 SVM 中引入核方法便可使得 SVM 變為非線性分類器,給定非線性可分數據集 $\left \{ (x_i,y_i)\right\}_{i=1}^N$,如下圖所示,此時找不到一個分類平面來將數據分開,核方法可以將數據投影到新空間,使得投影后的數據線性可分,下圖給出一個 $\mathbb{R}^2\rightarrow \mathbb{R}^2$ 的映射,原空間為 $x=(x^{(1)},x^{(2)})$ ,新空間 為 $z = \phi(x) = \left \{ (x^{(1)})^2,(x^{(2)})^2\right \}$ ,根據圖可以看出映射后樣本點的變化,此時樣本便為線性可分的了,直接用 $w_1 \cdot z^{(1)} +w_2 \cdot z^{(2)} +b= 0$ 分類即可。

1

上圖是一個 $\mathbb{R}^2\rightarrow \mathbb{R}^2$ 的映射,但一般情況下,特征空間的選取往往是很高維度的 $\mathbb{R}^2\rightarrow \mathbb{R}^n$ ,如下為一個 $\mathbb{R}^2\rightarrow \mathbb{R}^3$ 的映射:

1

下面給核函數一個正式定義,設 $\chi$ 為輸入空間,$\omega$ 為特征空間,如果存在一個 $\chi$ 到 $\omega$ 的映射  $\phi(x):\chi \rightarrow  \omega$ ,對所有的 $x,z \in \chi$,函數 $K(x,z)$ 滿足 $K(x,z) = \phi(x)\cdot\phi(z)$ ,則稱 $\phi(x)$ 為輸入空間到特征空間的映射函數,$K(x,z)$ 為核函數。

核函數常用的技巧是不計算映射函數 $\phi(x)$ ,因為特征空間 $\omega$ 通常是高維的,甚至無窮維,所以 $\phi(x)$ 計算並不容易,而計算核函數 $K(x,z)$ 卻相對簡單。映射 $\phi(x)$ 取法多種多樣,可以取不同的特征空間,即使在同一特征空間也可以取不同的映射。映射后的樣本一般是線性可分帶有異常值的,這時考慮 SVM 的優化目標:

\begin{aligned}
&\min_a \ \   \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N a_ia_jy_iy_j(x_i \cdot x_j) - \sum_{i=1}^Na_i \\
&s.t. \ \ \ \ \  0 \le a_i \le C , \ i = 1,2,…,N\\
&  \ \ \ \ \ \ \ \ \ \sum_{i=1}^Na_iy_i = 0,\  i = 1,2,…,N
\end{aligned}

由於在輸入空間計算的是 $x_i ,x_j$ 的內積,所以經過映射后分別為 $\phi(x_i)$ 與 $\phi(x_j)$ ,現在只需修改目標函數為  $\phi(x_i)$ 與 $\phi(x_j)$ 的內積即可,又由於 $\phi(x_i) \cdot \phi(x_j) = K(x_i,x_j)$  ,所以不需要定義映射函數 $\phi(x)$ ,只需要定義核函數便可得到高維空間中內積的結果,而這便是 Kernel Trick。所以線性不可分的數據集的優化目標變為:

\begin{aligned}
&\min_a \ \   \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N a_ia_jy_iy_jK(x_i , x_j) - \sum_{i=1}^Na_i \\
&s.t. \ \ \ \ \  0 \le a_i \le C , \ i = 1,2,…,N\\
&  \ \ \ \ \ \ \ \ \ \sum_{i=1}^Na_iy_i = 0,\  i = 1,2,…,N
\end{aligned}

也就是說給定核函數 $K(x,z)$ ,即可用求解線性 SVM 的方法來求解非線性問題,核技巧的好處在於不需要顯式的定義特征空間與映射函數,只需要選擇一個合適的核函數即可。綜上核函數是用來免去顯式計算高維變換的,直接用低維度的參數帶入核函數來等價計算高維度的向量的內積。

核函數的選擇

什么樣的函數 $K(x,z)$ 可以作為一個有效核函數呢?答案是只要滿足 Mercer 定理 即可,即如果函數 $K(x,z)$ 是 $\mathbb{R}^n \times \mathbb{R}^n \rightarrow \mathbb{R}$ 上的映射( 也就是兩個$n$ 維向量映射到實數域 )。那么如果 $K(x,z)$ 是一個有效核函數(也稱為Mercer核函數),那么當且僅當其訓練樣本 $\left \{x_1,x_2…,x_N \right \}$ 相應的核函數矩陣是對稱半正定的,這里先解釋一下正定矩陣

首先來定義奇異矩陣,若 n 階矩陣 A 為奇異陣,則其行列式為零,即  $|A| = 0$ 。

設 M 是 n 階方陣,如果對任何非零向量 z ,都有 $z^TMz >0$ ,其中 $z^T$ 表示 z 的轉置,就稱 M 為正定矩陣。

正定矩陣性質如下:

1)正定矩陣一定是非奇異的。

2)正定矩陣的任一主子矩陣也是正定矩陣。

3)若 A 為 n 階正定矩陣,則 A 為 n 階可逆矩陣。

對於 N 個訓練樣本,每一個樣本 $x_i$ 對應一個訓練樣例。那么,我們可以將任意兩個 $x_i$ 和 $x_j$ 帶入核函數中,計算 $K_{ij} = K(x_i,x_j)$ 。這樣可以把 $K_{ij}$ 表示為一個 $m \times m$ 的 Gram 矩陣,只要 Gram 矩陣為對稱半正定的,則 K(x,z) 即為一個有效的核函數,Gram 矩陣如下:

\begin{bmatrix}
K_{11}&  K_{12}&  \cdots&  K_{1m}& \\
K_{21}&  K_{22}&  \cdots&  K_{2m}& \\
\vdots & \vdots&  \ddots&  \vdots& \\
K_{m1}&  K_{m2}&  \cdots&   K_{mm}
\end{bmatrix}

顯然對於自己定義的核函數判定是否為正定核不太容易,所以在工業生產中一般使用一些常用的核函數,下面給出幾個:

1)線性核線性核其實就是不采用非線性分類器,認為樣本是線性可分的;

\[K(x,z) = x \cdot z +c\] 

2)多項式核該核函數對應的是一個 p 次多項式的分類器,這時需要額外調節的參數為 c p ; 

\[K(x,z) = (x \cdot z +c)^p\]

3)高斯核:或者叫做徑向基核,該核函數甚至可以將特征空間映射為無窮維,這時需要額外調節的參數為 $\delta$ ,

\[K(x,z) = exp \left ( \frac{-||x-z||^2 }{2 \delta^2}\right )\]

如果 $\delta$ 選得很大的話,高次特征上的權重實際上衰減得非常快,所以實際上(數值上近似一下)相當於一個低維的子空間;反過來,如果 $\delta$ 選得很小,則可以將任意的數據映射為線性可分,當然,這並不一定是好事,因為隨之而來的可能是非常嚴重的過擬合問題。總的來說,通過調控參數 $\delta$ ,高斯核實際上具有相當高的靈活性,也是使用最廣泛的核函數之一。

綜上,給出非線性可分支持向量機的學習算法1.4

給定非線性可分數據集 $\left \{ (x_i,y_i)\right\}_{i=1}^N$ ;

  (1)構造約束最優化問題:

\begin{aligned}
&\min_a \ \   \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N a_ia_jy_iy_jK(x_i , x_j) - \sum_{i=1}^Na_i \\
&s.t. \ \ \ \ \  0 \le a_i \le C , \ i = 1,2,…,N\\
&  \ \ \ \ \ \ \ \ \ \sum_{i=1}^Na_iy_i = 0,\  i = 1,2,…,N
\end{aligned}

  (2)求解得到 $a^* = (a^*_1,a^*_2,…,a^*_N)$ ,求解一般采用SMO算法  

  (3)根據 $a^*$ 求解得到 $w^*,b^*$ ,首先選擇 $0<a_j^*<C$ ,的支持向量 $(x_j,y_j)$ :

\begin{aligned}
&w^* = \sum_{i=1}^Na_i^*y_ix_i\\
&b^* = y_j - \sum_{i=1}^N y_ia_i^*K(x_i , x_j)
\end{aligned}

  (4)求得超平面 $w^* \cdot x +b^* = 0$ , 對於新的觀測數據 $x$ ,判斷其類別:

\[f(x) = sign \left( \sum_{i=1}^N a_i^*y_iK(x,x_i) +b^*\right)\]

 


免責聲明!

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



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