本文來自之前在Udacity上自學(xué)機(jī)器學(xué)習(xí)的系列筆記。這是第10篇,介紹了監(jiān)督學(xué)習(xí)中的支持向量機(jī)。
支持向量機(jī)
支持向量機(jī)是一種分類模型,它是在給定的有兩個(gè)類別的數(shù)據(jù)集下,尋找一條分割線(稱為“超平面”)將數(shù)據(jù)集正確地分成兩類。
比如說下圖中的兩個(gè)類別數(shù)據(jù),分別有三條分割線,將數(shù)據(jù)分隔開來。

你覺得哪一條直線是最佳分割線呢?這里我們得先定義怎么樣才是“最佳”。為此,我們認(rèn)為,一條最佳分割線除了正確分類數(shù)據(jù)外,還應(yīng)該最大化這條分割線到兩邊最近的數(shù)據(jù)點(diǎn)所在的平行線的距離。我們把這段距離叫做“Margin”。除了分類正確,還在最大化“Margin”。
支持向量機(jī)的模型推導(dǎo)
下圖有正樣本和負(fù)樣本兩類數(shù)據(jù)點(diǎn)。我們希望找到中間那條黃色的分隔線,同時(shí)它與兩類樣本的最近鄰點(diǎn)所在的平行線距離最大化。

如圖所示,我們把這些點(diǎn)看成是二維坐標(biāo)下的向量,那么兩個(gè)向量的點(diǎn)積就是一個(gè)向量到另一個(gè)向量的投影長(zhǎng)度。
假設(shè)是垂直于黃線的向量,我們要判斷給定的任意一點(diǎn)
是正還是負(fù),我們可以根據(jù)這個(gè)條件來判斷,即
,它表示什么意思呢?它的意思是,如果兩者的點(diǎn)積大于等于某個(gè)值
,則判斷為正;否則為負(fù)。向量的點(diǎn)積有實(shí)際的含義,它表示其中一個(gè)向量在另外一個(gè)向量的投影的長(zhǎng)度。所以,大于
說明在分隔線之上,為正樣本;小于
說明在分隔線之下,為負(fù)樣本。
因此,決策規(guī)則表示為
,
假設(shè)是正樣本,則
假設(shè)是負(fù)樣本,則
設(shè)定,當(dāng)
為正樣本時(shí);否則
從而可以得到
決策規(guī)則變換為, 對(duì)于所有訓(xùn)練集
從而,上圖中的“Margin”的寬度就等于
問題就轉(zhuǎn)換為求解的問題,也是
的問題。
綜上,這是一個(gè)在約束條件下多元函數(shù)求極值的問題,可以使用拉格朗日乘數(shù)法來解決。
約束條件也就是上面提到的決策規(guī)則, 對(duì)于所有訓(xùn)練集
構(gòu)造以下的函數(shù)
其中,,函數(shù)對(duì)
求導(dǎo),可得
所以
函數(shù)對(duì)求導(dǎo),可得
所以
將上式中的和
分別帶回函數(shù)
和決策規(guī)則,經(jīng)過推導(dǎo)可以得到
如果,那么
為正樣本。
到了這一步后,我們已經(jīng)得到式,根據(jù)拉格朗日對(duì)偶性,接下來的問題就是求解
的問題(完整地,應(yīng)該就是
問題)。其中
是約束條件。該問題可以使用數(shù)值分析中的SMO(Sequential Minimal Optimization)算法進(jìn)行求解。
在得到的值之后,就可以求解
和
了(求解
還需要再推導(dǎo)一番)。
解讀
上面得出的式,在實(shí)際運(yùn)用時(shí)有個(gè)特點(diǎn),就是大部分的
是為0的。它是通過對(duì)整體樣本判斷后得出哪些
為0,哪些不為0。這說明在決策時(shí)真正有影響力的數(shù)據(jù)點(diǎn)是靠近決策邊界的點(diǎn),而那些遠(yuǎn)離決策邊界的點(diǎn),影響不大。
式中的
告訴我們找出所有的點(diǎn)對(duì),弄清楚哪些點(diǎn)是重要的,能夠影響決策邊界的定義的點(diǎn)對(duì)。然后
則告訴我們,從這些點(diǎn)對(duì)的輸出的角度出發(fā),它們是如何彼此相關(guān),以及考慮它們之間的相似程度。
另外,從式可以看出,其結(jié)果只取決于
,所以對(duì)于不能使用一條直線直觀地分隔開數(shù)據(jù)的情況,我們可以構(gòu)造函數(shù)
來對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,實(shí)現(xiàn)線性可分。我們稱其為核函數(shù),它表示了數(shù)據(jù)之間的一種相似性。核函數(shù)也是我們將域知識(shí)(Domain Knowledge)引入到SVM的機(jī)制。
常用的核函數(shù)有
參考sklearn:
https://scikit-learn.org/stable/modules/svm.html#svm