機(jī)器學(xué)習(xí)筆記(10):支持向量機(jī)

本文來自之前在Udacity上自學(xué)機(jī)器學(xué)習(xí)的系列筆記。這是第10篇,介紹了監(jiān)督學(xué)習(xí)中的支持向量機(jī)。

支持向量機(jī)
支持向量機(jī)是一種分類模型,它是在給定的有兩個(gè)類別的數(shù)據(jù)集下,尋找一條分割線(稱為“超平面”)將數(shù)據(jù)集正確地分成兩類。

比如說下圖中的兩個(gè)類別數(shù)據(jù),分別有三條分割線,將數(shù)據(jù)分隔開來。

image.png

你覺得哪一條直線是最佳分割線呢?這里我們得先定義怎么樣才是“最佳”。為此,我們認(rèn)為,一條最佳分割線除了正確分類數(shù)據(jù)外,還應(yīng)該最大化這條分割線到兩邊最近的數(shù)據(jù)點(diǎn)所在的平行線的距離。我們把這段距離叫做“Margin”。除了分類正確,還在最大化“Margin”。

支持向量機(jī)的模型推導(dǎo)
下圖有正樣本和負(fù)樣本兩類數(shù)據(jù)點(diǎn)。我們希望找到中間那條黃色的分隔線,同時(shí)它與兩類樣本的最近鄰點(diǎn)所在的平行線距離最大化。

image.png

如圖所示,我們把這些點(diǎn)看成是二維坐標(biāo)下的向量,那么兩個(gè)向量的點(diǎn)積就是一個(gè)向量到另一個(gè)向量的投影長(zhǎng)度。

假設(shè)\vec w是垂直于黃線的向量,我們要判斷給定的任意一點(diǎn)\vec u是正還是負(fù),我們可以根據(jù)這個(gè)條件來判斷,即\vec w \centerdot \vec u \geq C,它表示什么意思呢?它的意思是,如果兩者的點(diǎn)積大于等于某個(gè)值C,則判斷為正;否則為負(fù)。向量的點(diǎn)積有實(shí)際的含義,它表示其中一個(gè)向量在另外一個(gè)向量的投影的長(zhǎng)度。所以,大于C說明在分隔線之上,為正樣本;小于C說明在分隔線之下,為負(fù)樣本。

因此,決策規(guī)則表示為
\vec w \centerdot \vec u + b \geq 0, \quad y=1(b=-C)

假設(shè)\vec x是正樣本,則\vec w \centerdot \vec x_+ + b \geq 1
假設(shè)\vec x是負(fù)樣本,則\vec w \centerdot \vec x_- + b \leq -1

設(shè)定y_i=1,當(dāng)\vec x為正樣本時(shí);否則y_i=-1

從而可以得到
y_i(\vec w \centerdot \vec x_i + b) \geq 1

決策規(guī)則變換為, 對(duì)于所有訓(xùn)練集i
y_i(\vec w \centerdot \vec x_i + b) -1 \geq 0

從而,上圖中的“Margin”的寬度就等于
Margin = (\vec x_+ - \vec x_-) \centerdot \frac{\vec w}{\left \| \vec w \right \|}

問題就轉(zhuǎn)換為求解max \frac{1}{\left \| \vec w \right \|}的問題,也是min \frac{1}{2} \left \| \vec w \right \|^2的問題。

綜上,這是一個(gè)在約束條件下多元函數(shù)求極值的問題,可以使用拉格朗日乘數(shù)法來解決。
約束條件也就是上面提到的決策規(guī)則, 對(duì)于所有訓(xùn)練集i
y_i(\vec w \centerdot \vec x_i + b) -1 \geq 0

構(gòu)造以下的函數(shù)
L=\frac{1}{2} \left \| \vec w \right \|^2 - \sum \alpha_i [y_i(\vec w \centerdot \vec x_i + b)-1]

其中,\alpha \geq 0,函數(shù)對(duì)\vec w求導(dǎo),可得

\frac {\partial L}{\partial \vec w} = \vec w - \sum \alpha_i y_i x_i = 0

所以

\vec w = \sum \alpha_i y_i x_i

函數(shù)對(duì)b求導(dǎo),可得

\frac {\partial L}{\partial b} = - \sum \alpha_i y_i = 0
所以
\sum \alpha_i y_i = 0

將上式中的\vec wb分別帶回函數(shù)L和決策規(guī)則,經(jīng)過推導(dǎo)可以得到
L=\sum \alpha_i - \frac {1}{2} \sum_i \sum_j \alpha_i \alpha_j y_i y_j \vec x_i \centerdot \vec x_j

如果\sum \alpha_i y_i \vec x_i \centerdot \vec u + b \geq 0,那么\vec u為正樣本。

到了這一步后,我們已經(jīng)得到L式,根據(jù)拉格朗日對(duì)偶性,接下來的問題就是求解max_\alpha L的問題(完整地,應(yīng)該就是max_\alpha min_{\vec w, b} L(\vec w, b, \alpha)問題)。其中\sum \alpha_i y_i = 0是約束條件。該問題可以使用數(shù)值分析中的SMO(Sequential Minimal Optimization)算法進(jìn)行求解。

在得到\alpha的值之后,就可以求解\vec wb了(求解b還需要再推導(dǎo)一番)。

解讀
上面得出的L式,在實(shí)際運(yùn)用時(shí)有個(gè)特點(diǎn),就是大部分的\alpha是為0的。它是通過對(duì)整體樣本判斷后得出哪些\alpha為0,哪些不為0。這說明在決策時(shí)真正有影響力的數(shù)據(jù)點(diǎn)是靠近決策邊界的點(diǎn),而那些遠(yuǎn)離決策邊界的點(diǎn),影響不大。

L式中的\alpha_i \alpha_j告訴我們找出所有的點(diǎn)對(duì),弄清楚哪些點(diǎn)是重要的,能夠影響決策邊界的定義的點(diǎn)對(duì)。然后y_i y_j則告訴我們,從這些點(diǎn)對(duì)的輸出的角度出發(fā),它們是如何彼此相關(guān),以及考慮它們之間的相似程度。

另外,從L式可以看出,其結(jié)果只取決于x_i \centerdot x_j,所以對(duì)于不能使用一條直線直觀地分隔開數(shù)據(jù)的情況,我們可以構(gòu)造函數(shù)\phi(x^Ty)=\phi(x)^T\phi(y)來對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)線性可分。我們稱其為核函數(shù),它表示了數(shù)據(jù)之間的一種相似性。核函數(shù)也是我們將域知識(shí)(Domain Knowledge)引入到SVM的機(jī)制。

常用的核函數(shù)有

K=(x^Ty+c)^p
K=e^{-(\frac {\left \| x - y \right \|^2}{2\sigma^2})}
K=tanh(\alpha x^Ty+\theta)

參考sklearn:
https://scikit-learn.org/stable/modules/svm.html#svm

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

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

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