监督学习 | SVM 之非线性支持向量机原理
文章目錄
- 1. 非線性支持向量機
- 1.1 核技巧
- 1.2 核函數
- 1.2.1 核函數選擇
- 1.2.2 RBF 函數
- 參考資料
相關文章:
機器學習 | 目錄
機器學習 | 網絡搜索及可視化
監督學習 | SVM 之線性支持向量機原理
監督學習 | SVM 之支持向量機Sklearn實現
1. 非線性支持向量機
對解線性分類問題,線性分類支持向量機是一種非常有效的方法。但是,有時分類問題是非線性的,這時可以使用非線性支持向量機(non-linear support vector machine)。
非線性分類問題是指通過利用非線性模型才能很好地進行分類的問題。如下圖所示,這是一個分類問題,無法用直線(線性模型)將正負實例正確分開,但可以用一條橢圓(非線性模型)將它們正確分開。[1]
圖1 非線性分類問題與核技巧示例再看一個“異或”問題,同樣也不是線性可分的:
圖2 異或問題與非線性映射對這樣的問題,可將樣本從原始空間映射到一個更高維的特征空間,使得樣本在這個特征空間內線性可分。如圖 2 所示,若將原始的二維空間映射到一個合適的三維空間,就可以找到一個合適的劃分超平面。當原始空間是有限維(即屬性數是有限的),那么一定存在一個高維特征空間使樣本可分。
令 ?(x)\phi(x)?(x) 表示將 xxx 映射后的特征向量,于是,在特征空間中劃分超平面模型可表示為:
(1)f(x)=wT?(x)+bf(x)=w^T\phi(x)+b \tag{1}f(x)=wT?(x)+b(1)
線性可分支持向量機的原始問題變為:
(2)min?w,b12∥w∥2s.t.?yi(wT?(xi)+b)?1?0,i=1,2,? ,N\begin{array}{ll}{\min \limits_{w, b}} & {\frac{1}{2}\|w\|^{2}} \tag{2}\\ {\text { s.t. }} & {y_{i}\left(w^T \phi(x_i)+b\right)-1 \geqslant 0, \quad i=1,2, \cdots, N}\end{array} w,bmin??s.t.??21?∥w∥2yi?(wT?(xi?)+b)?1?0,i=1,2,?,N?(2)
其對偶問題為:
(3)max?α∑i=1Nαi?12∑i=1N∑j=1Nαiαjyiyj?(xi)T?(xj)s.t.?∑i=1Nαiyi=0αi?0,i=1,2,? ,N\begin{array}{ll}{\max \limits_{\alpha}} & { \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j)} \tag{3}\\ {\text { s.t. }} & {\sum_{i=1}^N\alpha_iy_i=0}\\ & {\alpha_i\geqslant 0, \quad i=1,2,\cdots,N}\end{array} αmax??s.t.??∑i=1N?αi??21?∑i=1N?∑j=1N?αi?αj?yi?yj??(xi?)T?(xj?)∑i=1N?αi?yi?=0αi??0,i=1,2,?,N?(3)
1.1 核技巧
求解 (2) 涉及到計算 ?(xi)T?(xj)\phi(x_i)^T\phi(x_j)?(xi?)T?(xj?),這是樣本 xix_ixi? 與 xjx_jxj? 映射到特征空間之后的內積。由于特征空間維數可能很高,設置可能是無窮維,因此直接計算 ?(xi)T?(xj)\phi(x_i)^T\phi(x_j)?(xi?)T?(xj?) 通常是困難的。為了避開這個障礙,可以設想這樣一個函數:
(4)k(xi,xj)=?(xi)T?(xj)k(x_i,x_j)= \phi(x_i)^T\phi(x_j)\tag{4}k(xi?,xj?)=?(xi?)T?(xj?)(4)
核技巧:xix_ixi? 與 xjx_jxj? 在特征空間的內積等于它們在原始樣本空間中通過函數 k(?,?)k(\cdot,\cdot)k(?,?) 計算的結果,于是 (3)可以重寫為:
(5)max?α∑i=1Nαi?12∑i=1N∑j=1Nαiαjyiyjk(?,?)s.t.?∑i=1Nαiyi=0αi?0,i=1,2,? ,N\begin{array}{ll}{\max \limits_{\alpha}} & { \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j k(\cdot,\cdot)}\\ {\text { s.t. }} & {\sum_{i=1}^N\alpha_iy_i=0}\\ & {\alpha_i\geqslant 0, \quad i=1,2,\cdots,N} \end{array}\tag{5} αmax??s.t.??∑i=1N?αi??21?∑i=1N?∑j=1N?αi?αj?yi?yj?k(?,?)∑i=1N?αi?yi?=0αi??0,i=1,2,?,N?(5)
求解后即可得到:
(6)f(x)=wT?(x)+b=∑i=1Nαiyi?(xi)T?(x)+b=∑i=1Nαiyik(x,xi)+b\begin{array}{ll} {f(x)} &= {w^T\phi(x)+b} \\ &= {\sum_{i=1}^N{\alpha_iy_i\phi(x_i)^T\phi(x)+b}} \\ &= {\sum_{i=1}^N\alpha_iy_ik(x,x_i)+b}\\ \end{array}\tag{6} f(x)?=wT?(x)+b=∑i=1N?αi?yi??(xi?)T?(x)+b=∑i=1N?αi?yi?k(x,xi?)+b?(6)
這里的函數 k(?,?)k(\cdot,\cdot)k(?,?) 就是“核函數”(kernel function)。上式顯示出模型最優解可以通過訓練樣本的核函數展開,這一展開式又稱為支持向量展式(support vector expansion)。
1.2 核函數
定理(核函數):令 XXX 為輸入空間,k(?,?)k(\cdot,\cdot)k(?,?) 是定義在 X×XX\times XX×X 上的對稱函數,則 kkk 是核函數當且僅當對于任意數據 D={x1,x2,?xm}D=\{x_1,x_2,\cdots x_m \}D={x1?,x2?,?xm?},“核矩陣”(kernel matrix)KKK 總是半正定的:[2]
(7)K=[κ(x1,x1)?κ(x1,xj)?κ(x1,xm)?????κ(xi,x1)?κ(xi,xj)?κ(xi,xm)?????κ(xm,x1)?κ(xm,xj)?κ(xm,xm)]\mathbf{K}=\left[\begin{array}{ccccc}{\kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{1}\right)} & {\cdots} & {\kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{j}\right)} & {\cdots} & {\kappa\left(\boldsymbol{x}_{1}, \boldsymbol{x}_{m}\right)} \\ {\vdots} & {\ddots} & {\vdots} & {\ddots} & {\vdots} \\ {\kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{1}\right)} & {\cdots} & {\kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)} & {\cdots} & {\kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{m}\right)} \\ {\vdots} & {\ddots} & {\vdots} & {\ddots} & {\vdots} \\ {\kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{1}\right)} & {\cdots} & {\kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{j}\right)} & {\cdots} & {\kappa\left(\boldsymbol{x}_{m}, \boldsymbol{x}_{m}\right)}\end{array}\right] \tag{7}K=?????????κ(x1?,x1?)?κ(xi?,x1?)?κ(xm?,x1?)???????κ(x1?,xj?)?κ(xi?,xj?)?κ(xm?,xj?)???????κ(x1?,xm?)?κ(xi?,xm?)?κ(xm?,xm?)??????????(7)
這個定理表明,只要一個對稱函數所對應的核矩陣半正定,它就能作為核函數使用。事實上,對于一個半正定核矩陣,總能找到一個與之對應的映射 ?\phi? 。換言之,任何一個核函數都隱式地定義了一個稱為“再生核希爾伯特空間”(RKHS, Reproducing Kernel Hilbert Space)的特征空間。
1.2.1 核函數選擇
通過前面討論我們知道,我們希望樣本在特征空間內線性可分,因此特征空間的好壞對支持向量機的性能直觀重要。需要注意的是,在不知道特征映射的形式時,我們并不知道什么樣的核函數時合適的,而核函數也僅是隱式地定義了這個特征空間。于是,“核函數選擇”稱為支持向量機的最大變數。若核函數選擇不合適,則意味著將樣本映射到了一個不合適的特征空間,很可能導致性能不佳。
表1 常用核函數對文本數據通常采用線性核;情況不明時可先嘗試高斯核(RBF 核)
此外,還可以通過函數組合得到,例如:
- 若 k1k_1k1? 和 k1k_1k1? 為核函數,則對于任意正數 γ1,γ2\gamma_1, \gamma_2γ1?,γ2?,其線性組合:
(8)γ1k1+γ2k2\gamma_1 k_1 + \gamma_2 k_2 \tag{8}γ1?k1?+γ2?k2?(8)
也是核函數;- 若 k1k_1k1? 和 k1k_1k1? 為核函數,則核函數的直積:
(9)k1?k2(x,z)=k1(x,z)k2(x,z)k_1 \otimes k_2(x,z)=k_1(x,z)k_2(x,z) \tag{9}k1??k2?(x,z)=k1?(x,z)k2?(x,z)(9)
也是核函數;- 若 k1k_1k1? 為核函數,則對于任意函數 g(x)g(x)g(x):
(10)k(x,z)=g(x)k1(x,z)g(z)k(x,z)=g(x)k_1(x,z)g(z) \tag{10}k(x,z)=g(x)k1?(x,z)g(z)(10)
也是核函數。1.2.2 RBF 函數
首先來看一個例子,假設我們要將一組直線上的數據進行分類,但由于它們是非線性的,因此需要利用核函數將數據變換為線性可分的數據。
圖3 非線性數據我們通過一條曲線將直線上的數據投射到一個平面上,可以看見,所有的正實例都被投射到了曲線的頂端,而所有的負實例都被投射到了曲線的低端,因此這時我們就可以利用線性可分支持向量機找出分類超平面。
圖4 高斯核函數變換后的線性可分數據那么這條曲線是怎么構造出來的呢,這里就要介紹一個函數:徑向基函數(RBF Radial Basis Function)。
所謂徑向基函數,就是某種沿徑向對稱的標量函數。通常定義為空間中任一點 xxx 到某中心 xcx_cxc? 之間歐式距離的單調函數,可以記為 k(x,xc)k(x,x_c)k(x,xc?),其作用往往是局部的,即當 xxx 原理 xcx_cxc? 時函數取值很小。
最常用的徑向基函數是高斯徑向基函數:
(11)k(x,xc)=exp(?∥x?xc∥22σ2)k(x,x_c) = exp(-\frac{\|x-x_c\|^2}{2\sigma^2}) \tag{11}k(x,xc?)=exp(?2σ2∥x?xc?∥2?)(11)
當我們使用高斯徑向基函數作為核函數時,就稱之為高斯核函數。
它的圖像與高斯分布 y=1σ2πe?(x?μ)22σ2y=\frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}y=σ2π?1?e?2σ2(x?μ)2? 相似,在高斯分布中,其分布被參數 σ\sigmaσ 和 μ\muμ 唯一確定,當 σ\sigmaσ 越大時,圖像越矮胖;當 σ\sigmaσ 越小時,圖像越高瘦。
圖5 正態分布圖類似地,我們在高斯徑向基函數中使用 gamma 參數來決定圖像的高瘦或矮胖:
(12)γ=12σ2\gamma = \frac{1}{2\sigma^2} \tag{12}γ=2σ21?(12)
當 γ\gammaγ 越大時,圖像越高瘦;當 γ\gammaγ 越小時,圖像越矮瘦:
圖6 參數 gamma 的大小對圖像的影響在高維數據中也相似:
圖7 高維度下參數 gamma 的大小對圖像的影響此時超平面的截面即為分類數據的邊界:
圖8 參數 gamma 的大小對擬合程度的影響當我們使用高斯核函數時,此時的非線性支持向量機則由參數 γ\gammaγ 和懲罰參數 CCC 所確定:
當 γ\gammaγ 越大時,越有可能過擬合;當 γ\gammaγ 越小時,越有可能欠擬合;
當 CCC 越大時,對誤分類的懲罰越大;當 CCC 越小時,對誤分類的懲罰越小。
由于 SVM 模型沒有先驗信息,所以可以使用網絡搜索來確定參數大小。
現在我們可以回答開頭的例子中曲線時怎么擬合出來的了,我們通過在每一個數據點上使用一個高斯核函數,可以將數據分為兩類,接著用一個連續平滑的曲線將這些圖形連接起來,就得到了曲線:
圖8 利用高斯核函數將數據線性化 圖9 數據投射的曲線參考資料
[1] 李航. 統計學習方法[M]. 北京: 清華大學出版社, 2012: 115-116.
[2] 周志華. 機器學習[M]. 北京: 清華大學出版社, 2016: 127-129.
總結
以上是生活随笔為你收集整理的监督学习 | SVM 之非线性支持向量机原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vivado环境下用Verilog语言实
- 下一篇: 暗到深处,看到了光