支持向量機算法

支持向量機(Support Vector Machine, SVM)是有監(jiān)督分類算法。

一、SVM本質(zhì)

(1)無數(shù)條分類線

例如下圖左側(cè)分散了兩類點(星星、圓圈),想要找到一條分類直線,當(dāng)輸入新點坐標(biāo)(x_0,y_0)時,這條分類直線可以判斷這個輸入點是星星還是圓圈。
不過,觀察右圖可以發(fā)現(xiàn)這樣的直線可以有無數(shù)條,哪條直線才是最優(yōu)的分類直線呢?

(2)確信度

首先,我們需要引入“確信度”的概念:一個點距離分離直線的遠近表示分類預(yù)測的確信程度。
當(dāng)輸入新點坐標(biāo)(x_0,y_0),該點距離分類直線距離很近的話,判斷該點為XX類是沒那么確認的。如果該點距離分類直線距離很遠的話,就比較確信預(yù)測結(jié)果是正確的。

(3)點到直線的距離

確信度本質(zhì)是點到直線的距離,讓我們來回顧一下距離公式。
求P到直線的距離:


【首先過P點畫直線的垂線】
由于兩直線垂直,斜率之積為-1,得垂線的斜率為\frac{B}{A}
由于垂線過P點,垂線公式為y-y0=\frac{B}{A}(x-x0)
·
【然后計算垂線和直線的交點Q】
經(jīng)計算交點Q為:
Q = (\frac{B^2x_0-ABy_0-AC}{A^2+B^2},\frac{A^2y_0-ABx_0-BC}{A^2+B^2})
·
【點與點的距離】
P到直線的距離等價與PQ兩點的距離,參考勾股定理a^2+b^2 = c^2,|PQ| = \sqrt{(x_1-x_0)^2+(y_1-y_0)^2}
=\sqrt{(\frac{B^2x_0-ABy_0-AC}{A^2+B^2}-x_0)^2+(\frac{A^2y_0-ABx_0-BC}{A^2+B^2}-y_0)^2}
=\frac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}
·
【備注】
三維空間點(x_0,yy_0,z_0)到平面Ax+By+Cz+D=0的距離為
d = \frac{|Ax_0+By_0+Cz_0+D|}{\sqrt{A^2+B^2+C^2}}

回顧上面的分類圖,令分類直線為wx+b=0,其中w=[w_1,w_2]^T,x=[x_1,x_2]
代入上面點到直線的距離公式,得到任意點x_i到該直線的距離為\gamma = \frac{|wx_i+b|}{||w||}
其中{||w||} = \sqrt{w_1^2+w_2^2}

(4)幾何間隔

二分類的算法結(jié)果要么為正類,要么為負類,在SVM里令正類y=1,負類y=-1。

正類上的點到分類直線的距離為:
\gamma = \frac{wx_i+b}{||w||}
負類上的點到分類直線的距離為:
\gamma = -\frac{wx_i+b}{||w||}

因此我們構(gòu)建一個新函數(shù),我們把\gamma_i叫做樣本點到分類線的幾何間隔
\gamma_i = y_i(\frac{wx_i+b}{||w||})

如果點被正確分類,\gamma就是點到分類線的距離。如果分類錯誤,不管判斷為正類還是負類,幾何間隔就是一個負值。

整個訓(xùn)練數(shù)據(jù)集T={[(x_1,y_1),(x_2,y_2),...(x_n,y_n))]}到分類線的幾何間隔為:
\gamma = \min_{w,b} \gamma_i

訓(xùn)練數(shù)據(jù)集到分類線的幾何間隔,就是離分類線最近點到分類線的距離

(4) 最優(yōu)分類線

讓我們回到問題開始,什么樣的分類線才是最優(yōu)的分類線呢?肯定要讓確信度盡可能的高吧,對最難分的點(離分類線最近的點)也要有足夠大的確信度(距離盡可能大)。

就是說數(shù)據(jù)集到分類線的幾何間隔最大的分類線就是最好的分類線。

·

二、最優(yōu)分類線求解

假設(shè)給定空間上的訓(xùn)練數(shù)據(jù)為:
T={[(x_1,y_1),(x_2,y_2),...(x_n,y_n))]},其中x_i\in R^n,y_i \in {(-1,+1)}

(1)建立最優(yōu)解

假設(shè)距離分類線最近點為(x_0,y_0),訓(xùn)練數(shù)據(jù)的幾何距離為\gamma = \frac{y_0(wx_0+b)}{||w||}
我們的目標(biāo)是獲得最大幾何間隔的分類線(最大幾何間隔的w,b最優(yōu)解)
\max_{w,b} \gamma

s.t. \frac{y_i(wx_i+b)}{||w||}\geq\gamma

如果我們令y_0(wx_0+b)=\widehat{\gamma},那么\gamma = \frac{\widehat{\gamma}}{||w||},最優(yōu)解問題就變成:
\max_{w,b} \frac{\widehat{\gamma}}{||w||}

s.t. y_i(wx_i+b)\geq\widehat{\gamma}

(2)簡化問題

這個最優(yōu)問題不好求解,假設(shè)令\widehat{\gamma}=1,簡化一下問題。
由于之前我們令訓(xùn)練數(shù)據(jù)的幾何間隔\gamma = \frac{\widehat{\gamma}}{||w||},令\widehat{\gamma}=1意味著我們假設(shè)訓(xùn)練數(shù)據(jù)的幾何間隔為\frac{1}{||w||},意味著里分類線最近點到分類線的距離為\frac{1}{||w||}


上圖發(fā)現(xiàn)有兩條虛線,虛線距離分類線的距離都是,虛線上的點到分類線的空間距離為: ,即正例方的虛線上的點滿足,負例方的虛線上的點滿足,我們把虛線上的點叫做“支持向量”。

簡化后最優(yōu)化問題為:
\max_{w,b} \frac{1}{||w||}

s.t. y_i(wx_i+b)-1\geq0

(3)最小化問題

我們一般還是喜歡求解最小化問題。求最大化\frac{1}{||w||}等價于求最小化\frac{1}{2}||w||^2,因此最優(yōu)化問題變?yōu)椋?br> \min_{w,b} \frac{1}{2}||w||^2

s.t. y_i(wx_i+b)-1\geq0

(4)拉格朗日乘數(shù)法

接下來我們就要求解最優(yōu)的w,b值,引入神器“拉格朗日乘數(shù)法”。

拉格朗日乘數(shù)法
如果求解問題的格式為:\min_{x,y} f(x,y),s.t. g_i(x,y)\leq0,i=1,2,...N
經(jīng)過拉格朗日乘數(shù)法的推導(dǎo),可以將問題轉(zhuǎn)換為求解:
\max_{\lambda}\min_{x,y}L(x,y,\lambda),其中 L(x,y,\lambda) = f(x,y) + \sum_{i=1}^N\lambda_ig_i(x,y)
其中\lambda = [\lambda_1,\lambda_2,...,\lambda_n]為拉格朗日乘子向量。

轉(zhuǎn)換最優(yōu)解問題

通過加負號轉(zhuǎn)換\ge\le,所以最優(yōu)解問題可以轉(zhuǎn)換為:
\max_{\lambda}\min_{w,b}L(w,b,\alpha)

L(w,b,\alpha) = \frac{1}{2}||w||^2 - \sum_{i=1}^N\alpha_i[y_i(wx_i+b)-1] = \frac{1}{2}||w||^2 - \sum_{i=1}^N\alpha_iy_i(wx_i+b) + \sum_{i=1}^N\alpha_i

求解偏導(dǎo)

先求\min_{w,b}L(w,b,\alpha),我們知道有極大值或極小值的地方的斜率是0,所以我們先對w,b做偏導(dǎo)處理。
\nabla_w L(w,b,\alpha) = w - \sum_{i=1}^N\alpha_iy_ix_i = 0
\nabla_b L(w,b,\alpha) = \sum_{i=1}^N\alpha_iy_i = 0
可見w = \sum_{i=1}^N\alpha_iy_ix_i,代入L(w,b,\alpha),公式變?yōu)椋?/p>

\min_{w,b}L(w,b,\alpha) = \frac{1}{2}\sum_{i=1}^N\alpha_iy_ix_i\sum_{j=1}^N\alpha_jy_jx_j - \sum_{i=1}^N\alpha_iy_i((\sum_{j=1}^N\alpha_jy_jx_j)·x_i+b) + \sum_{i=1}^N\alpha_i
= - \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_jy_iy_j(x_i·x_j) + \sum_{i=1}^N\alpha_i

此時原始求解問題變成:
\max_{\alpha} -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_jy_iy_j(x_i·x_j) + \sum_{i=1}^N\alpha_i

s.t. \sum_{i=1}^N\alpha_iy_i = 0; a_i \geq 0

當(dāng)然我們還是習(xí)慣求解最小值問題,轉(zhuǎn)換后為:
\min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i \alpha_jy_iy_j(x_i·x_j) - \sum_{i=1}^N\alpha_i

s.t. \sum_{i=1}^N\alpha_iy_i = 0; a_i \geq 0

SMO求解最優(yōu)\alpha

到這一步原始最優(yōu)化問題轉(zhuǎn)變成求解最優(yōu)alpha問題,我們可以使用SMO(sequential minimal optimization,簡稱SMO)求解最優(yōu)參數(shù)\alpha^*。

最優(yōu)參數(shù) w,b

求解最優(yōu)的\alpha^*后,
根據(jù)上面偏導(dǎo)的計算結(jié)果,w^* = \sum_{i=1}^N\alpha^*_iy_ix_i;
s.t. y_i(wx_i+b)-1\geq0,最小值b是在y_i(wx_i+b)-1=0時,代入w后,計算得到b^* = y_j - \sum_{i=1}^N\alpha^*_iy_i(x_i·x_j)

現(xiàn)在我們就有最優(yōu)的分類線:
w^*·x+b^* = 0

分類決策函數(shù):
f(x) = sign(w^*·x+b^*)

三、軟間隔支持向量機

(1)硬間隔/軟間隔

有的時候線性數(shù)據(jù)集中存在少量的異常點,由于這些異常點導(dǎo)致了數(shù)據(jù)集不能夠線性劃分。
我們通過引入軟間隔的概念來解決這個問題。

支持向量機要求所有樣本都必須劃分正確,這叫做“硬間隔”;
而軟間隔是允許一部分樣本不滿足約束條件的,但這樣的樣本要盡可能少[5]。

軟間隔面向場景:數(shù)據(jù)集由于異常點的存在是線性不可分的(不能用一條直線劃分兩類樣本),將這些異常點去除后,剩下的大部分樣本點是線性可分的。

(2)松弛變量

二.(3)中我們經(jīng)過一系列轉(zhuǎn)換最后獲得分類的最優(yōu)解問題:
\min_{w,b} \frac{1}{2}||w||^2

s.t. y_i(wx_i+b)-1\geq0

使得所有樣本點都被正確劃分,都在虛線上或虛線外。
軟間隔支持向量機允許存在樣本點被錯誤劃分,所以我們引入松弛變量\xi_i\geq 0,使得y_i(w·x_i+b)\geq 1-\xi_i

點到分類線的幾何間距=\frac{1-\xi_i}{||w||},兩條虛線到分類線的幾何間隔=\frac{1}{||w||},異常點到虛線的距離為\frac{\xi_i}{||w||}。
如果1\geq\xi_i\geq 0。回顧點到分類線的幾何間隔=\frac{y_i(wx_i+b)}{||w||},兩條虛線到分類線的幾何間隔=\frac{1}{||w||},也就是允許存在樣本點在虛線里。
如果\xi_i\geq 1,點到分類線的幾何間距=\frac{1-\xi_i}{||w||}\leq0,說明允許存在樣本點被分類錯誤。

改進后的最優(yōu)解問題為:
\min_{w,b} \frac{1}{2}||w||^2 + C\sum_{i=1}^N \xi_i

s.t. y_i(wx_i+b)\geq1-\xi_i

這里稱C為懲罰參數(shù),C > 0。

(3)拉格朗日乘子法轉(zhuǎn)化最優(yōu)問題

繼續(xù)套神器,轉(zhuǎn)化最優(yōu)解問題為:
L(w,b,\xi,\alpha,u)=\frac{1}{2}||w||^2 + C\sum_{i=1}^N\xi_i - \sum_{i=1}^N \alpha_i(y_i(wx_i+b)-1+\xi_i)-\sum_{i=1}^Nu_i\xi_i
w,b,\xi求偏導(dǎo)等于0
\nabla_w L(w,b,\xi,\alpha,u) = w - \sum_{i=1}^N\alpha_iy_ix_i = 0
\nabla_b L(w,b,\xi,\alpha,u) = - \sum_{i=1}^N\alpha_iy_i= 0
\nabla_{\xi} L(w,b,\xi,\alpha,u) = C-\alpha_i-u_i = 0

把相關(guān)值代入L(w,b,\xi,\alpha,u),問題變?yōu)榍蠼猓?br> \max_{\alpha} -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j) + \sum_{i=1}^N \alpha_i
s.t. \sum_{i=1}^N\alpha_iy_i=0;C-\alpha_i-u_i=0;\alpha_i\geq0;u_i\geq0 i=1,2,...,N

當(dāng)然,我們還是習(xí)慣求解最小值問題:
\min_{\alpha} \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i·x_j) - \sum_{i=1}^N \alpha_i
s.t. \sum_{i=1}^N\alpha_iy_i=0;C\geq\alpha_i\geq0; i=1,2,...,N

(3)最優(yōu)解

根據(jù)計算出的最優(yōu)值\alpha,從而計算最優(yōu)的參數(shù)w,b
w^* = \sum_{i=1}^N\alpha_i^*y_ix_i
b = y_i- \sum_{i=1}^Ny_i\alpha_i^*(x_i·x_j)
求得分離超平面:w^*x+b^* = 0
分類決策函數(shù):f(x) = sign(w^*·x + b^*)

四、核函數(shù)

有些分類是線性劃分無法滿足的,不管怎么控制松弛變量,幾何間隔都無法成功劃分。

(1)SVM的高維轉(zhuǎn)換

SVM使用核函數(shù)解決線性不可分問題。
核函數(shù)就是把低維映射到高維的方式,實質(zhì)就是x特征的重組,把一個低維不可分問題轉(zhuǎn)換為高維可分問題。
例如上圖顯然二維空間是不可線性劃分的,那就把輸入的[x_1,x_2]轉(zhuǎn)換成高維空間的特征,例如[x_1x_1,x_1x_2,x_2x_2],發(fā)現(xiàn)在高維空間是線性可分的,那就繼續(xù)用上面的支持向量機求解最優(yōu)分類函數(shù)。

(2)核函數(shù)

核函數(shù)K(kernel function)
就是指K(x, y) = <f(x), f(y)>,其中x和y是n維的輸入值,f(·) 是從n維到m維的映射。<x, y>是x和y的內(nèi)積[7]

令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);
令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;
這樣就實現(xiàn)了四維到更高維度的轉(zhuǎn)換。
讓我們帶幾個簡單的數(shù)字進去看看是個什么效果:x = (1, 2, 3, 4); y = (5, 6, 7, 8). 那么:
f(x) = ( 1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16) ;
f(y) = (25, 30, 35, 40, 30, 36, 42, 48, 35, 42, 49, 56, 40, 48, 56, 64) ;
<f(x), f(y)> = 25+60+105+160+60+144+252+384+105+252+441+672+160+384+672+1024
= 4900.
如果我們用核函數(shù)呢?
K(x, y) = (5+12+21+32)^2 = 70^2 = 4900.
所以核函數(shù)kernel其實就是幫我們省去在高維空間里進行繁瑣計算的“簡便運算法”。

支持向量機中假設(shè)輸入的X映射到高維空間然后計算內(nèi)積,但實際上核函數(shù)的使用,使得求解在低維空間上快速計算出目標(biāo)內(nèi)積。

參考資料

[1] 點到直線距離的七種推導(dǎo)公式:https://wenku.baidu.com/view/7f68a89cad02de80d4d840eb.html
[2] 拉格朗日乘子法:https://blog.csdn.net/loseinvain/article/details/78624888
[3] 支持向量機SVM之-SMO算法: https://blog.csdn.net/code__online/article/details/90518735
[4] SVM課程資料:https://www.bilibili.com/video/av39800693/?p=80
[5] SVM支持向量機—核函數(shù)、軟間隔:https://www.cnblogs.com/luban/p/9516411.html
[6] 軟間隔模型:http://www.itdecent.cn/p/f8f09b638760
[7] 核函數(shù):https://blog.csdn.net/kateyabc/article/details/79980880

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容