∗ ∗ ∗ 點 擊 查 看 : 吳 恩 達 機 器 學 習 — — 整 套 筆 記 + 編 程 作 業 詳 解 ∗ ∗ ∗ \color{#f00}{***\ 點擊查看\ :吳恩達機器學習 \ —— \ 整套筆記+編程作業詳解\ ***} ∗ ∗ ∗ 點 擊 查 看 : 吳 恩 達 機 器 學 習 — — 整 套 筆 記 + 編 程 作 業 詳 解 ∗ ∗ ∗
第一部分:支持向量機 1/3 —— 建立 SVM 基本型(超平面與間隔)
第二部分:支持向量機 2/3 —— 線性可分SVM
非線性問題
我們已經瞭解到,SVM如何處理線性可分的情況,而對於非線性的情況,SVM的處理方式就是通過一個非線性變換,將輸入的低維特徵映射到高維特徵空間,將其變成在高維空間線性可分,並在這個高維空間中構造最優分類超平面,如下圖:
根據上篇文章,線性可分的情況下,可知最終的超平面方程爲:
f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b \begin{aligned}
f(\boldsymbol{x}) &=w^{T} x+b \\
&=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{T} \boldsymbol{x}+b
\end{aligned}
f ( x ) = w T x + b = i = 1 ∑ m α i y i x i T x + b 用內積表示:f ( x ) = ∑ i = 1 m α i y i ⟨ x i , x ⟩ + b f(\boldsymbol{x})=\sum_{i=1}^{m} \alpha_{i} y_{i}\left\langle\boldsymbol{x}_{i}, \boldsymbol{x}\right\rangle+b
f ( x ) = i = 1 ∑ m α i y i ⟨ x i , x ⟩ + b 對於線性不可分,我們使用一個非線性映射,將數據映射到特徵空間,在特徵空間中使用線性學習器,分類函數變形如下:
f ( x ) = ∑ i = 1 m α i y i ⟨ ϕ ( x i ) , ϕ ( x ) ⟩ + b f(\boldsymbol{x})=\sum_{i=1}^{m} \alpha_{i} y_{i}\left\langle\phi\left(\boldsymbol{x}_{i}\right), \phi(\boldsymbol{x})\right\rangle+b
f ( x ) = i = 1 ∑ m α i y i ⟨ ϕ ( x i ) , ϕ ( x ) ⟩ + b 其中 ϕ ϕ ϕ 表示從輸入空間(X)到某個特徵空間(F)的映射,這意味着建立非線性學習器分爲兩步:
首先使用一個非線性映射將數據變換到一個特徵空間F;
然後在特徵空間使用線性學習器進行分類。
由上式可知,我們的主要計算任務就是高維特徵空間的內積 < ϕ ( x i ) , ϕ ( x ) > <ϕ(x_i),ϕ(x)> < ϕ ( x i ) , ϕ ( x ) >
核技巧與核函數
假如在低維空間中存在某個函數K K K ,它恰好等於在高維空間中的內積,即K ( x i , x ) = < ϕ ( x i ) , ϕ ( x ) > K(x_i, x)=\ <ϕ(x_i),ϕ(x)> K ( x i , x ) = < ϕ ( x i ) , ϕ ( x ) > 那麼SVM就不用計算複雜的非線性變換,而由這個函數 K ( x i , x ) K(x_i, x) K ( x i , x ) 直接得到非線性變換的內積,大大簡化了計算。這樣的函數 K ( x i , x ) K(x_i, x) K ( x i , x ) 就被稱爲核函數 。
這種將內積替換成核函數的方式被稱爲 核技巧(kernel trick) 。
舉個例子:假設現在有兩個二維空間中的數據點 x = ( x 1 , x 2 ) x=(x1,x2) x = ( x 1 , x 2 ) 和 y = ( y 1 , y 2 ) y=(y1,y2) y = ( y 1 , y 2 ) ,考慮下面這個二元函數:K ( x , y ) = ( x . y + 1 ) 2 = ( x 1 y 1 + x 2 y 2 + 1 ) 2 = x 1 2 y 1 2 + x 2 2 y 2 2 + 2 x 1 y 1 + 2 x 2 y 2 + 2 x 1 x 2 y 1 y 2 = ( x 1 2 , x 2 2 , 2 x 1 x 2 , 2 x 1 , 2 x 2 , 1 ) ⋅ ( y 1 2 , y 2 2 , 2 y 1 y 2 , 2 y 1 , 2 y 2 , 1 ) = < ϕ ( x ) , ϕ ( y ) > \begin{aligned}
K(x, y)=(x . y+1)^{2}&=\left(x_{1} y_{1}+x_{2} y_{2}+1\right)^{2} \\
&=x_{1}^{2} y_{1}^{2}+x_{2}^{2} y_{2}^{2}+2 x_{1} y_{1}+2 x_{2} y_{2}+2 x_{1} x_{2} y_{1} y_{2} \\
&=\left(x_{1}^{2}, x_{2}^{2}, \sqrt{2} x_{1} x_{2}, \sqrt{2} x_{1}, \sqrt{2} x_{2}, 1\right) \cdot\left(y_{1}^{2}, y_{2}^{2}, \sqrt{2} y_{1} y_{2}, \sqrt{2} y_{1}, \sqrt{2} y_{2}, 1\right) \\
&=<ϕ(x),ϕ(y)>
\end{aligned} K ( x , y ) = ( x . y + 1 ) 2 = ( x 1 y 1 + x 2 y 2 + 1 ) 2 = x 1 2 y 1 2 + x 2 2 y 2 2 + 2 x 1 y 1 + 2 x 2 y 2 + 2 x 1 x 2 y 1 y 2 = ( x 1 2 , x 2 2 , 2 x 1 x 2 , 2 x 1 , 2 x 2 , 1 ) ⋅ ( y 1 2 , y 2 2 , 2 y 1 y 2 , 2 y 1 , 2 y 2 , 1 ) = < ϕ ( x ) , ϕ ( y ) > 發現最後結果恰好是兩個向量的內積,而且兩個向量分別是二維空間數據點 x x x 和 y y y 在5維空間中的映射!想到剛纔核函數的定義,我們很容易知道,K ( x , y ) K(x,y) K ( x , y ) 就是一個核函數,這樣大大簡化了運算。
通過核技巧的轉變,我們的超平面方程變爲:
f ( x ) = ∑ i = 1 m α i y i K ( x i , x ) + b f(\boldsymbol{x})=\sum_{i=1}^{m} \alpha_{i} y_{i} K\left(\boldsymbol{x}_{i}, \boldsymbol{x}\right)+b
f ( x ) = i = 1 ∑ m α i y i K ( x i , x ) + b 對偶問題變爲:
max α ∑ i = 1 m α i − 1 2 α i α j y i y j K ( x i , x j ) s.t. α i ≥ 0 , i = 1 , 2 , ⋯ , m ∑ i = 1 m α i y i = 0 \begin{aligned}
&\max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \alpha_{i} \alpha_{j} y_{i} y_{j} K\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) \\
&\text { s.t. } \alpha_{i} \geq 0, i=1,2, \cdots, m \\
&\quad \sum_{i=1}^{m} \alpha_{i} y_{i}=0
\end{aligned} α max i = 1 ∑ m α i − 2 1 α i α j y i y j K ( x i , x j ) s.t. α i ≥ 0 , i = 1 , 2 , ⋯ , m i = 1 ∑ m α i y i = 0
核函數的選擇
常用的核函數有很多,例如,線性核、多項式核、拉普拉斯核等等,一般我們使用徑向基核函數(RBF)。
徑向基核函數是SVM中常用的一個核函數。徑向基核函數採用向量作爲自變量的函數,能夠基於向量舉例運算輸出一個標量。徑向基核函數的高斯版本的公式如下:
K ( x 1 , x 2 ) = exp { − ∥ x 1 − x 2 ∥ 2 2 σ 2 } K\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{2}\right)=\exp \left\{-\frac{\left\|\boldsymbol{x}_{1}-\boldsymbol{x}_{2}\right\|^{2}}{2 \sigma^{2}}\right\}
K ( x 1 , x 2 ) = exp { − 2 σ 2 ∥ x 1 − x 2 ∥ 2 }
其中,σ是用戶自定義的用於確定到達率(reach)或者說函數值跌落到0的速度參數。
如果σ選得很大,模型複雜度越高,高次特徵上的權重實際上衰減得非常快,所以實際上(數值上近似一下)相當於一個低維的子空間;
如果σ選得很小,則可以將任意的數據映射爲線性可分——當然,這並不一定是好事,因爲隨之而來的可能是非常嚴重的過擬合問題。
總的來說,通過調控參數σ,高斯覈實際上具有相當高的靈活性,也是使用最廣泛的核函數之一。
推薦閱讀:
支持向量機實戰篇之再撕非線性SVM
Coursera-吳恩達-機器學習-(第7周筆記)支持向量機