本文是“支持向量機(jī)系列”的第一篇,參見(jiàn)本系列的其他文章。
支持向量機(jī)即 Support Vector Machine,簡(jiǎn)稱(chēng) SVM 。我最開(kāi)始聽(tīng)說(shuō)這頭機(jī)器的名號(hào)的時(shí)候,一種神秘感就油然而生,似乎把 Support 這么一個(gè)具體的動(dòng)作和 Vector 這么一個(gè)抽象的概念拼到一起,然后再做成一個(gè) Machine ,一聽(tīng)就很玄了!
不過(guò)后來(lái)我才知道,原來(lái) SVM 它并不是一頭機(jī)器,而是一種算法,或者,確切地說(shuō),是一類(lèi)算法,當(dāng)然,這樣摳字眼的話(huà)就沒(méi)完沒(méi)了了,比如,我說(shuō) SVM 實(shí)際上是一個(gè)分類(lèi)器 (Classifier) ,但是其實(shí)也是有用 SVM 來(lái)做回歸 (Regression) 的。所以,這種字眼就先不管了,還是從分類(lèi)器說(shuō)起吧。
SVM 一直被認(rèn)為是效果最好的現(xiàn)成可用的分類(lèi)算法之一(其實(shí)有很多人都相信,“之一”是可以去掉的)。這里“現(xiàn)成可用”其實(shí)是很重要的,因?yàn)橐恢币詠?lái)學(xué)術(shù)界和工業(yè)界甚至只是學(xué)術(shù)界里做理論的和做應(yīng)用的之間,都有一種“鴻溝”,有些很 fancy 或者很復(fù)雜的算法,在抽象出來(lái)的模型里很完美,然而在實(shí)際問(wèn)題上卻顯得很脆弱,效果很差甚至完全 fail 。而 SVM 則正好是一個(gè)特例——在兩邊都混得開(kāi)。
好了,由于 SVM 的故事本身就很長(zhǎng),所以廢話(huà)就先只說(shuō)這么多了,直接入題吧。當(dāng)然,說(shuō)是入貼,但是也不能一上來(lái)就是 SVM ,而是必須要從線(xiàn)性分類(lèi)器開(kāi)始講。這里我們考慮的是一個(gè)兩類(lèi)的分類(lèi)問(wèn)題,數(shù)據(jù)點(diǎn)用
一個(gè)超平面,在二維空間中的例子就是一條直線(xiàn)。我們希望的是,通過(guò)這個(gè)超平面可以把兩類(lèi)數(shù)據(jù)分隔開(kāi)來(lái),比如,在超平面一邊的數(shù)據(jù)點(diǎn)所對(duì)應(yīng)的 T
x+b
如圖所示,兩種顏色的點(diǎn)分別代表兩個(gè)類(lèi)別,紅顏色的線(xiàn)表示一個(gè)可行的超平面。在進(jìn)行分類(lèi)的時(shí)候,我們將數(shù)據(jù)點(diǎn)
從幾何直觀上來(lái)說(shuō),由于超平面是用于分隔兩類(lèi)數(shù)據(jù)的,越接近超平面的點(diǎn)越“難”分隔,因?yàn)槿绻矫嫔晕⑥D(zhuǎn)動(dòng)一下,它們就有可能跑到另一邊去。反之,如果是距離超平面很遠(yuǎn)的點(diǎn),例如圖中的右上角或者左下角的點(diǎn),則很容易分辯出其類(lèi)別。
實(shí)際上這兩個(gè) Criteria 是互通的,我們定義 functional margin 為
?
=y(w
T
x+b)=yf(x)
0
又由于 0
0
)=0
不過(guò),這里的
顯然,functional margin 和 geometrical margin 相差一個(gè)
不過(guò)這里我們有兩個(gè) margin 可以選,不過(guò) functional margin 明顯是不太適合用來(lái)最大化的一個(gè)量,因?yàn)樵?hyper plane 固定以后,我們可以等比例地縮放 T
x+b
?
?
當(dāng)然,還需要滿(mǎn)足一些條件,根據(jù) margin 的定義,我們有
其中 ?
=γ
?
w
?
?
?
?
?
?
=1
通過(guò)求解這個(gè)問(wèn)題,我們就可以找到一個(gè) margin 最大的 classifier ,如下圖所示,中間的紅色線(xiàn)條是 Optimal Hyper Plane ,另外兩條線(xiàn)到紅線(xiàn)的距離都是等于 ?
到此為止,算是完成了 Maximum Margin Classifier 的介紹,通過(guò)最大化 margin ,我們使得該分類(lèi)器對(duì)數(shù)據(jù)進(jìn)行分類(lèi)時(shí)具有了最大的 confidence (實(shí)際上,根據(jù)我們說(shuō)給的一個(gè)數(shù)據(jù)集的 margin 的定義,準(zhǔn)確的說(shuō),應(yīng)該是“對(duì)最不 confidence 的數(shù)據(jù)具有了最大的 confidence”——雖然有點(diǎn)拗口)。不過(guò),到現(xiàn)在似乎還沒(méi)有一點(diǎn)點(diǎn) Support Vector Machine 的影子。很遺憾的是,這個(gè)要等到下一次再說(shuō)了,不過(guò)可以先小小地劇透一下,如上圖所示,我們可以看到 hyper plane 兩邊的那個(gè) gap 分別對(duì)應(yīng)的兩條平行的線(xiàn)(在高維空間中也應(yīng)該是兩個(gè) hyper plane)上有一些點(diǎn),顯然兩個(gè) hyper plane 上都會(huì)有點(diǎn)存在,否則我們就可以進(jìn)一步擴(kuò)大 gap ,也就是增大 ?
ps: 本文開(kāi)頭那張照片來(lái)源于這里。Allaboutinquiry 同學(xué)留言揭露典故真相啦:
關(guān)于這個(gè)同學(xué)舉牌子的典故我知道,我也是CMU的。這是在2009年在Pittsburgh舉行的G20峰會(huì)現(xiàn)場(chǎng)外面。很多反對(duì)G20的,支持G20的都來(lái)湊熱鬧。我們這位同學(xué)也來(lái)了,魚(yú)目混珠的高舉Support Vector Machine的牌子。很多老美就暈了,你說(shuō)你支持加強(qiáng)控制二氧化碳排放我懂,你支持的的這個(gè)Vector Machine是個(gè)什么東西???然后這個(gè)同學(xué)搞笑的目的就達(dá)到了。