监督学习 | SVM 之非线性支持向量机原理
文章目錄
- 1. 非線性支持向量機(jī)
- 1.1 核技巧
- 1.2 核函數(shù)
- 1.2.1 核函數(shù)選擇
- 1.2.2 RBF 函數(shù)
- 參考資料
相關(guān)文章:
機(jī)器學(xué)習(xí) | 目錄
機(jī)器學(xué)習(xí) | 網(wǎng)絡(luò)搜索及可視化
監(jiān)督學(xué)習(xí) | SVM 之線性支持向量機(jī)原理
監(jiān)督學(xué)習(xí) | SVM 之支持向量機(jī)Sklearn實(shí)現(xiàn)
1. 非線性支持向量機(jī)
對(duì)解線性分類問(wèn)題,線性分類支持向量機(jī)是一種非常有效的方法。但是,有時(shí)分類問(wèn)題是非線性的,這時(shí)可以使用非線性支持向量機(jī)(non-linear support vector machine)。
非線性分類問(wèn)題是指通過(guò)利用非線性模型才能很好地進(jìn)行分類的問(wèn)題。如下圖所示,這是一個(gè)分類問(wèn)題,無(wú)法用直線(線性模型)將正負(fù)實(shí)例正確分開,但可以用一條橢圓(非線性模型)將它們正確分開。[1]
圖1 非線性分類問(wèn)題與核技巧示例再看一個(gè)“異或”問(wèn)題,同樣也不是線性可分的:
圖2 異或問(wèn)題與非線性映射對(duì)這樣的問(wèn)題,可將樣本從原始空間映射到一個(gè)更高維的特征空間,使得樣本在這個(gè)特征空間內(nèi)線性可分。如圖 2 所示,若將原始的二維空間映射到一個(gè)合適的三維空間,就可以找到一個(gè)合適的劃分超平面。當(dāng)原始空間是有限維(即屬性數(shù)是有限的),那么一定存在一個(gè)高維特征空間使樣本可分。
令 ?(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)
線性可分支持向量機(jī)的原始問(wèn)題變?yōu)?#xff1a;
(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)
其對(duì)偶問(wèn)題為:
(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) 涉及到計(jì)算 ?(xi)T?(xj)\phi(x_i)^T\phi(x_j)?(xi?)T?(xj?),這是樣本 xix_ixi? 與 xjx_jxj? 映射到特征空間之后的內(nèi)積。由于特征空間維數(shù)可能很高,設(shè)置可能是無(wú)窮維,因此直接計(jì)算 ?(xi)T?(xj)\phi(x_i)^T\phi(x_j)?(xi?)T?(xj?) 通常是困難的。為了避開這個(gè)障礙,可以設(shè)想這樣一個(gè)函數(shù):
(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? 在特征空間的內(nèi)積等于它們?cè)谠紭颖究臻g中通過(guò)函數(shù) k(?,?)k(\cdot,\cdot)k(?,?) 計(jì)算的結(jié)果,于是 (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)
這里的函數(shù) k(?,?)k(\cdot,\cdot)k(?,?) 就是“核函數(shù)”(kernel function)。上式顯示出模型最優(yōu)解可以通過(guò)訓(xùn)練樣本的核函數(shù)展開,這一展開式又稱為支持向量展式(support vector expansion)。
1.2 核函數(shù)
定理(核函數(shù)):令 XXX 為輸入空間,k(?,?)k(\cdot,\cdot)k(?,?) 是定義在 X×XX\times XX×X 上的對(duì)稱函數(shù),則 kkk 是核函數(shù)當(dāng)且僅當(dāng)對(duì)于任意數(shù)據(jù) 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)
這個(gè)定理表明,只要一個(gè)對(duì)稱函數(shù)所對(duì)應(yīng)的核矩陣半正定,它就能作為核函數(shù)使用。事實(shí)上,對(duì)于一個(gè)半正定核矩陣,總能找到一個(gè)與之對(duì)應(yīng)的映射 ?\phi? 。換言之,任何一個(gè)核函數(shù)都隱式地定義了一個(gè)稱為“再生核希爾伯特空間”(RKHS, Reproducing Kernel Hilbert Space)的特征空間。
1.2.1 核函數(shù)選擇
通過(guò)前面討論我們知道,我們希望樣本在特征空間內(nèi)線性可分,因此特征空間的好壞對(duì)支持向量機(jī)的性能直觀重要。需要注意的是,在不知道特征映射的形式時(shí),我們并不知道什么樣的核函數(shù)時(shí)合適的,而核函數(shù)也僅是隱式地定義了這個(gè)特征空間。于是,“核函數(shù)選擇”稱為支持向量機(jī)的最大變數(shù)。若核函數(shù)選擇不合適,則意味著將樣本映射到了一個(gè)不合適的特征空間,很可能導(dǎo)致性能不佳。
表1 常用核函數(shù)對(duì)文本數(shù)據(jù)通常采用線性核;情況不明時(shí)可先嘗試高斯核(RBF 核)
此外,還可以通過(guò)函數(shù)組合得到,例如:
- 若 k1k_1k1? 和 k1k_1k1? 為核函數(shù),則對(duì)于任意正數(shù) γ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)
也是核函數(shù);- 若 k1k_1k1? 和 k1k_1k1? 為核函數(shù),則核函數(shù)的直積:
(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)
也是核函數(shù);- 若 k1k_1k1? 為核函數(shù),則對(duì)于任意函數(shù) 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)
也是核函數(shù)。1.2.2 RBF 函數(shù)
首先來(lái)看一個(gè)例子,假設(shè)我們要將一組直線上的數(shù)據(jù)進(jìn)行分類,但由于它們是非線性的,因此需要利用核函數(shù)將數(shù)據(jù)變換為線性可分的數(shù)據(jù)。
圖3 非線性數(shù)據(jù)我們通過(guò)一條曲線將直線上的數(shù)據(jù)投射到一個(gè)平面上,可以看見(jiàn),所有的正實(shí)例都被投射到了曲線的頂端,而所有的負(fù)實(shí)例都被投射到了曲線的低端,因此這時(shí)我們就可以利用線性可分支持向量機(jī)找出分類超平面。
圖4 高斯核函數(shù)變換后的線性可分?jǐn)?shù)據(jù)那么這條曲線是怎么構(gòu)造出來(lái)的呢,這里就要介紹一個(gè)函數(shù):徑向基函數(shù)(RBF Radial Basis Function)。
所謂徑向基函數(shù),就是某種沿徑向?qū)ΨQ的標(biāo)量函數(shù)。通常定義為空間中任一點(diǎn) xxx 到某中心 xcx_cxc? 之間歐式距離的單調(diào)函數(shù),可以記為 k(x,xc)k(x,x_c)k(x,xc?),其作用往往是局部的,即當(dāng) xxx 原理 xcx_cxc? 時(shí)函數(shù)取值很小。
最常用的徑向基函數(shù)是高斯徑向基函數(shù):
(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)
當(dāng)我們使用高斯徑向基函數(shù)作為核函數(shù)時(shí),就稱之為高斯核函數(shù)。
它的圖像與高斯分布 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? 相似,在高斯分布中,其分布被參數(shù) σ\sigmaσ 和 μ\muμ 唯一確定,當(dāng) σ\sigmaσ 越大時(shí),圖像越矮胖;當(dāng) σ\sigmaσ 越小時(shí),圖像越高瘦。
圖5 正態(tài)分布圖類似地,我們?cè)诟咚箯较蚧瘮?shù)中使用 gamma 參數(shù)來(lái)決定圖像的高瘦或矮胖:
(12)γ=12σ2\gamma = \frac{1}{2\sigma^2} \tag{12}γ=2σ21?(12)
當(dāng) γ\gammaγ 越大時(shí),圖像越高瘦;當(dāng) γ\gammaγ 越小時(shí),圖像越矮瘦:
圖6 參數(shù) gamma 的大小對(duì)圖像的影響在高維數(shù)據(jù)中也相似:
圖7 高維度下參數(shù) gamma 的大小對(duì)圖像的影響此時(shí)超平面的截面即為分類數(shù)據(jù)的邊界:
圖8 參數(shù) gamma 的大小對(duì)擬合程度的影響當(dāng)我們使用高斯核函數(shù)時(shí),此時(shí)的非線性支持向量機(jī)則由參數(shù) γ\gammaγ 和懲罰參數(shù) CCC 所確定:
當(dāng) γ\gammaγ 越大時(shí),越有可能過(guò)擬合;當(dāng) γ\gammaγ 越小時(shí),越有可能欠擬合;
當(dāng) CCC 越大時(shí),對(duì)誤分類的懲罰越大;當(dāng) CCC 越小時(shí),對(duì)誤分類的懲罰越小。
由于 SVM 模型沒(méi)有先驗(yàn)信息,所以可以使用網(wǎng)絡(luò)搜索來(lái)確定參數(shù)大小。
現(xiàn)在我們可以回答開頭的例子中曲線時(shí)怎么擬合出來(lái)的了,我們通過(guò)在每一個(gè)數(shù)據(jù)點(diǎn)上使用一個(gè)高斯核函數(shù),可以將數(shù)據(jù)分為兩類,接著用一個(gè)連續(xù)平滑的曲線將這些圖形連接起來(lái),就得到了曲線:
圖8 利用高斯核函數(shù)將數(shù)據(jù)線性化 圖9 數(shù)據(jù)投射的曲線參考資料
[1] 李航. 統(tǒng)計(jì)學(xué)習(xí)方法[M]. 北京: 清華大學(xué)出版社, 2012: 115-116.
[2] 周志華. 機(jī)器學(xué)習(xí)[M]. 北京: 清華大學(xué)出版社, 2016: 127-129.
總結(jié)
以上是生活随笔為你收集整理的监督学习 | SVM 之非线性支持向量机原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vivado环境下用Verilog语言实
- 下一篇: 暗到深处,看到了光