積跬步以致千里,積怠惰以致深淵
注:本篇文章整理時主要參考了 周志華 的《機(jī)器學(xué)習(xí)》宰睡。
主要內(nèi)容
支持向量機(jī)會接受數(shù)據(jù)點(diǎn),并輸出一個超平面(在二維的圖中,就是一條線)以將兩類分割開來。這條線就是判定邊界:將紅色和藍(lán)色分割開來。
但是货矮,最好的超平面是什么樣的?對于SVM來說斯够,它是最大化兩個類別邊距的那種方式囚玫,換句話說:超平面(在本例中是一條線)對每個類別最近的元素距離最遠(yuǎn)。
什么是SVM
好吧读规,故事是這樣子的:
在很久以前的情人節(jié)抓督,大俠要去救他的愛人,但魔鬼和他玩了一個游戲束亏。
魔鬼在桌子上似乎有規(guī)律放了兩種顏色的球铃在,說:“你用一根棍分開它們?要求:盡量在放更多球之后碍遍,仍然適用定铜。”
于是大俠這樣放怕敬,干的不錯揣炕?
然后魔鬼,又在桌上放了更多的球东跪,似乎有一個球站錯了陣營畸陡。
SVM就是試圖把棍放在最佳位置,好讓在棍的兩邊有盡可能大的間隙虽填。
現(xiàn)在即使魔鬼放了更多的球丁恭,棍仍然是一個好的分界線。
然后斋日,在SVM 工具箱中有另一個更加重要的trick牲览。 魔鬼看到大俠已經(jīng)學(xué)會了一個trick,于是魔鬼給了大俠一個新的挑戰(zhàn)恶守。
現(xiàn)在竭恬,大俠沒有棍可以很好幫他分開兩種球了跛蛋,現(xiàn)在怎么辦呢?當(dāng)然像所有武俠片中一樣大俠桌子一拍痊硕,球飛到空中。然后押框,憑借大俠的輕功岔绸,大俠抓起一張紙,插到了兩種球的中間橡伞。
現(xiàn)在盒揉,從魔鬼的角度看這些球,這些球看起來像是被一條曲線分開了兑徘。
再之后刚盈,無聊的大人們,把這些球叫做「data」挂脑,把棍子 叫做「classifier」, 最大間隙trick 叫做「optimization」藕漱, 拍桌子叫做「kernelling」, 那張紙叫做「hyperplane」。
找尋最佳超平面
1)為“最佳”的超平面定性
在考慮哪一個超平面性能會更佳時崭闲,一個直觀的想法就是位于兩類訓(xùn)練樣本“正中間”的劃分超平面會更好一些肋联,因?yàn)樗鼘τ?xùn)練樣本局部擾動的“容忍性”最好。而這個正中間的超平面一定滿足這樣的一個條件刁俭,那就是離它最近的正例數(shù)據(jù)和反例數(shù)據(jù)到它的距離之和最大橄仍。
所以,支持向量機(jī)算法第一步將尋找“最佳”超平面的問題轉(zhuǎn)換為尋找“最大間隔”的劃分超平面問題牍戚。
2)“最大間隔”由什么確定
為了更形象地表現(xiàn)正負(fù)樣本的間隔侮繁,我們可以在分割超平面的兩側(cè)再定義兩個平行的超平面H1和H2,這兩個超平面分別通過正樣本和負(fù)樣本中離分割超平面最近的樣本點(diǎn)如孝。
我們定義超平面H1和H2上面的點(diǎn)叫做支持向量宪哩。正負(fù)樣本的間隔可以定義為超平面H1和H2之間的間隔,它是分割超平面距最近正樣本點(diǎn)距離和最近負(fù)樣本點(diǎn)距離之和暑竟。
支持向量對于分割超平面的位置是起到關(guān)鍵作用的斋射。在優(yōu)化分割超平面位置之后,支持向量也顯露出來但荤,而支持向量之外的樣本點(diǎn)則對分類并不關(guān)鍵罗岖。為什么這樣說呢?因?yàn)榧词拱阎С窒蛄恳酝獾臉颖军c(diǎn)全部刪除腹躁,再找到最優(yōu)的分割超平面桑包,這個超平面的位置跟原先的分割超平面的位置也是一樣的》姆牵總結(jié)起來就是:支持向量包含著重構(gòu)分割超平面所需要的全部信息哑了!
支持向量機(jī)算法將尋找“最大間隔”的問題轉(zhuǎn)換為不等式約束的優(yōu)化問題赘方。
所以總結(jié)一下,支持向量機(jī)分類的背后邏輯是:找到最好的超平面將訓(xùn)練樣本正確分類 --> 最好的超平面為是正反例樣本“間隔最大”的平面 --> 間隔最大的平面尋找實(shí)際上是一個不等式約束優(yōu)化問題弱左。
3)當(dāng)超平面在樣本空間上無法劃分開訓(xùn)練樣本時窄陡,該如何處理?
在前面的討論中拆火,我們假設(shè)訓(xùn)練樣本是線性可分的跳夭,然而在現(xiàn)實(shí)任務(wù)中,原始樣本空間內(nèi)也許并不存在一個能正確劃分兩類樣本的超平面们镜。
對待原始數(shù)據(jù)無法線性可分的問題币叹,一個合適的思路是將樣本從原始空間映射到一個更高維的特征空間,使得樣本在這個特征空間內(nèi)線性可分模狭。
如上所示有兩類圓點(diǎn)颈抚,分別是藍(lán)點(diǎn)和紅點(diǎn)。容易發(fā)現(xiàn)我們不能夠找到一條直線將圓點(diǎn)分類嚼鹉。即線性不可分贩汉。
但如果將一維圓點(diǎn)映射到二維,就容易找出能夠?qū)A點(diǎn)分類的直線反砌。
下圖同樣為在線性不可分的情況下映射到更高維的視覺化演示雾鬼。
由于樣本 xi 和 xj 映射到特征空間之后的內(nèi)積因?yàn)榫S數(shù)可能很高,所以比較難直接計算宴树。為了避開這個障礙策菜,我們設(shè)計了“核函數(shù)”(kernel function),這個函數(shù)使得 xi 和 xj 在特征空間的內(nèi)積等于它們在原始樣本空間中通過核函數(shù) k(xi, xj) 計算的結(jié)果酒贬。
如果我們已知合適的特征映射O(.)的具體形式又憨,則可寫出核函數(shù) k(. , .),但在現(xiàn)實(shí)任務(wù)中我們通常不知道O(.)是什么形式锭吨。
幸運(yùn)的是蠢莺,我們知道:只要一個對稱函數(shù)所對應(yīng)的核矩陣是半正定,它就能作為核函數(shù)使用零如,并且對于一個半正定核矩陣躏将,總能找到一個與之對應(yīng)的映射O(.)空間。
所以考蕾,我們知道了吧祸憋,對于在樣本空間中無法線性可分的數(shù)據(jù),我們不是先去找到使它線性可分的映射空間肖卧,然后通過核函數(shù)去計算的蚯窥;相反,我們是得要選擇一個核函數(shù)先,然后通過這個核函數(shù)去找到對應(yīng)的映射特征空間拦赠,并計算在該映射空間上的最優(yōu)超平面巍沙。
通過前面的討論可知,我們希望樣本在特征空間內(nèi)線性可分荷鼠,因此特征空間的好壞對支持向量機(jī)的性能至關(guān)重要句携。很顯然,核函數(shù)的選擇不當(dāng)允乐,很可能會導(dǎo)致樣本被映射到一個不好的空間务甥,導(dǎo)致算法性能不佳。于是喳篇,“核函數(shù)選擇”成為了支持向量機(jī)的最大變數(shù)。
4)當(dāng)超平面無法完全劃分開訓(xùn)練樣本時态辛,該如何處理麸澜?
因?yàn)樵诂F(xiàn)實(shí)任務(wù)中往往很難確定合適的核函數(shù)使得訓(xùn)練樣本在特征空間中線性可分,為了緩解該問題奏黑,一個合理的辦法是允許支持向量機(jī)在一些樣本上出錯炊邦。這種策略被稱為“軟間隔”(soft margin),它允許某些樣本不滿足不等式約束熟史。
當(dāng)然馁害,在最大化間隔的同時,不滿足約束的樣本應(yīng)盡可能少蹂匹。我們在之前的優(yōu)化目標(biāo)式子中加入了損失函數(shù)的影響碘菜,當(dāng)樣本落入不滿足約束的空間內(nèi)時,損失函數(shù)的值就會變大限寞,使得優(yōu)化目標(biāo)的值向反方向移動忍啸;當(dāng)樣本落入滿足約束的空間內(nèi)時,損失函數(shù)的值減小甚至為0履植,使得優(yōu)化目標(biāo)的值向著目標(biāo)方向移動计雌。C > 0是個常數(shù),代表著損失函數(shù)的影響力玫霎,當(dāng)C無窮大時凿滤,會迫使所有的樣本要滿足約束;當(dāng)C取有限值時庶近,允許一些樣本不滿足約束翁脆。
5)支持向量回歸(SVR)
支持向量機(jī)是一個二分類器,SVR就是支持向量機(jī)算法在回歸模型上的應(yīng)用拦盹。同前一節(jié)的方式類似鹃祖,只不過這次引入的損失函數(shù)是根據(jù)回歸模型的原理設(shè)計的,是一個預(yù)測結(jié)果g(x)與真實(shí)結(jié)果y之間的差值,當(dāng)這個差值大于一個常數(shù) e 時恬口,才會被計算校读。
6)核方法
給定訓(xùn)練樣本,若不考慮偏移項(xiàng)祖能,則無論 SVM 還是 SVR 歉秫,學(xué)得的模型總能表示成核函數(shù)的線性組合。正因?yàn)楹撕瘮?shù)的重要性养铸,人們發(fā)展出一系列基于核函數(shù)的學(xué)習(xí)方法雁芙,統(tǒng)稱為“核方法”(kernel methods)
總結(jié)
?[1] 支持向量機(jī)的基本思想是:基于訓(xùn)練集 D 在樣本空間中找到一個劃分超平面,將不同類別的樣本分開
?[2] 支持向量機(jī)的目標(biāo)是:找到泛化性能最佳的那個超平面
?[3] 支持向量機(jī)的計算邏輯是:第一步將尋找“最佳”超平面的問題轉(zhuǎn)換為尋找“最大間隔”的劃分超平面問題钞螟;第二步將尋找“最大間隔”的問題轉(zhuǎn)換為不等式約束的優(yōu)化問題
?[4] 當(dāng)超平面無法在樣本空間中將訓(xùn)練數(shù)據(jù)劃分開時兔甘,將樣本從原始空間映射到一個更高維的特征空間,使得樣本在這個特征空間內(nèi)線性可分
?[5] 當(dāng)超平面無法完全將訓(xùn)練數(shù)據(jù)劃分開時鳞滨,使用軟間隔的策略洞焙,允許某些樣本不滿足不等式約束。具體通過引入損失函數(shù)到優(yōu)化目標(biāo)方程中實(shí)現(xiàn)拯啦。
?[6] 訓(xùn)練好的模型的算法復(fù)雜度是由支持向量的個數(shù)決定的澡匪,而不是由數(shù)據(jù)的維度決定的。所以SVM不太容易產(chǎn)生overfitting褒链。
?[7] SVM訓(xùn)練出來的模型完全依賴于支持向量(Support Vectors)唁情,即使訓(xùn)練集里面所有非支持向量的點(diǎn)都被去除,重復(fù)訓(xùn)練過程甫匹,結(jié)果仍然會得到完全一樣的模型甸鸟。
?[8] 一個SVM如果訓(xùn)練得出的支持向量個數(shù)比較小,SVM訓(xùn)練出的模型比較容易被泛化赛惩。