注:轉載請標明原文出處鏈接:https://xiongyiming.blog.csdn.net/article/details/94553561
1 SVM 簡介
支持向量機 (Support Vector Machine, SVM)是一類按監督學習 (supervised learning)方式對數據進行二元分類(binary classification)的廣義線性分類器 (generalized linear classifier),其決策邊界是對學習樣本求解的最大邊距超平面(maximum-margin hyperplane)。
SVM被提出於1964年,在二十世紀90年代後得到快速發展並衍生出一系列改進和擴展算法,在人像識別(face recognition)、 文本分類(text categorization)等模式識別(pattern recognition)問題中有得到應用。
SVM是由模式識別中廣義肖像算法(generalized portrait algorithm)發展而來的分類器,其早期工作來自前蘇聯學者Vladimir N. Vapnik和Alexander Y. Lerner在1963年發表的研究 [8] 。1964年,Vapnik和Alexey Y. Chervonenkis對廣義肖像算法進行了進一步討論並建立了硬邊距的線性SVM [9] 。此後在二十世紀70-80年代,隨着模式識別中最大邊距決策邊界的理論研究 [10] 、基於鬆弛變量(slack variable)的規劃問題求解技術的出現 [11] ,和VC維(Vapnik-Chervonenkis dimension, VC dimension)的提出 [12] ,SVM被逐步理論化併成爲統計學習理論的一部分。1992年,Bernhard E. Boser、Isabelle M. Guyon和Vapnik通過核方法首次得到了非線性SVM。1995年,Corinna Cortes和Vapnik提出了軟邊距的非線性SVM並將其應用於手寫數字識別問題,這份研究在發表後得到了廣泛的關注和引用,爲其後SVM在各領域的應用奠定了基礎。
(以上來源於百度百科)
2 引例
我們通過一個故事來理解SVM。這個故事也主要參考博客:https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html
很久以前一位大俠閉關修煉10年,想在江湖上留下自己的名號,不斷地向各個武林門派挑戰。其中一個門派的掌門佈局迎接這位大俠的挑戰。這位掌門對這位大俠說:“你能用一根棍將下面不同顏色的球分開?要求:儘量在放更多球之後,仍然適用。”(佈局如下圖所示)
這位大俠很快地找到一個合適的位置放了棍,心想這是考我的智商嗎?
這位掌門又隨機放了很多球。
顯然掌門有幾個故意是放錯了,大俠有趕緊對棍的位置做出調整。
如上圖所示,大俠試圖把棍放在最佳位置,好讓在棍的兩邊有儘可能大的間隙。這個間隙就是球到棍的距離,這就是SVM。然而,這位掌門發現這位大俠智力還可以,再考一考內功如何,掌門又重新佈局,如下圖所示:
現在,這位大俠沒有棍可以很好幫他分開兩種球了,現在怎麼辦呢?大俠苦思冥想,一會兒想到了一個辦法,大俠用自己閉關修煉10年練出來的內功將這球都打入空中,然後,大俠隨手拿一張紙,插入兩個球的中間,如下圖所示:
現在,掌門這個佈局被大俠用一條曲線給分開了,如下圖所示:
掌門看了這位大俠內功深厚,對這位大俠讚不絕口。
多年以後,大牛們把這些球稱爲數據(data),把棍子稱爲分類器 (classifier), 找到最大間隙的trick叫做優化(optimization),用內功將這些球弄到空中稱爲核(kernel), 那張紙稱爲超平面 (hyperplane)。
SVM超平面視頻鏈接如下
B站:https://www.bilibili.com/video/av33852263/
YouTube: https://www.youtube.com/watch?v=3liCbRZPrZA
當一個分類問題,數據是線性可分的,也就是用一根棍就可以將兩種小球分開的時候,我們只要將棍的位置放在讓小球距離棍的距離最大化的位置即可,尋找這個最大間隔的過程,就叫做最優化。但是,現實往往是很殘酷的,一般的數據是線性不可分的,也就是找不到一個棍將兩種小球很好的分類。這個時候,我們就需要像大俠一樣,運用內功將小球拍起,用一張紙代替小棍將小球進行分類。想要讓數據飛起,我們需要的東西就是核函數 (kernel),用於切分小球的紙,就是超平面(hyperplane)。
下面就將具體說明SVM背後的最優化問題。
3 SVM背後的最優化問題
3.1 自然語言描述
對於下圖的數據進行分類,我們容易地將其進行分類,並且有很多種方法。
如下圖所示,給出了三種辦法將數據進行分類,直觀看上去,應該去找位於兩類訓練樣本的“正中間”畫出分界線。因爲中間的那條線中規中矩,對訓練樣本的局部擾動的容忍性最好。
因此,在進行分類時,我們需要找出最佳的分界線(超平面),這樣的分類結果的魯棒性更強。
SVM需要嘗試尋找最優的決策邊界,距離兩個類型的最近的樣本最遠。上圖外邊的兩條直線上的點(最近的樣本點) 稱之爲支持向量。而外邊的兩條直線的距離稱之爲間隔(margin)。SVM的任務就是使得間隔最大化。
對於上述問題可以很容易的進行分類,我們稱之爲硬間隔 (Hard Margin)。而在實際情況中,大部分數據並不是這麼容易進行分類。爲了解決上述問題,我們允許SVM出現一些錯誤並且這些錯誤在一定範圍是可接受的,這被稱之爲軟間隔 (soft margin)。
3.2 數學語言描述
前面說到,SVM的任務就是使得間隔最大化,如下圖所示,間隔爲2d,那麼如何使用做數學去描述這個間隔呢?
首先回顧一下高中學習過的點到直線的距離:
給出點(x0,y0),直線爲Ax+By+C=0,則點到直線的距離r爲:
r=A2+B2∣Ax0+By0+C∣(1)同樣地,點(x0,y0,z0) 到平面Ax+By+Cz+D=0的距離r爲:
r=A2+B2+C2∣Ax0+By0+Cz0+D∣(2)同理也可以拓展n維空間點x,在樣本空間中,超平面可通過線性方程描述爲:
wTx+b=0(3)其中,w=(w1;w2;…;wd)爲超平面的法向量,決定超平面的方向;b爲位移項,決定超平面與n維空間中的原點之間的距離。下面將超平面記爲(w,b),因此n維樣本空間中任一點x到超平面(w,b)的距離爲:
r=∥w∥∣∣wTx+b∣∣(4)其中,∥w∥=w12+w22+…+wd2 .
給定樣本數據集D={(x1,y1),(x2,y2),…,(xm,ym)},yi∈{+1,−1}用於分類,假設超平面能將樣本空間的點正確分類,即對於任意的(xm,ym)∈D,若∀yi=+1,則+1類別樣本中的點到超平面的距離要大於等於間隔d,即∥w∥∣wTx+b∣≥d;若∀yi=−1,則-1類別樣本中的點到超平面的距離要大於等於間隔d,即∥w∥∣wTx+b∣≥d,將絕對值去掉,化簡爲∥w∥wTx+b≤−d.
因此,合併起來:
{∥w∥wTx+b≥d,∀yi=+1∥w∥wTx+b≤−d,∀yi=−1(5)
將上式化簡:
{∥w∥dwTx+b≥+1,∀yi=+1∥w∥dwTx+b≤−1,∀yi=−1(6)而上式中∥w∥d爲一個數,所以可以化簡爲:
{wdTx+bd≥+1,wdTx+bd≤−1,∀yi=+1∀yi=−1(7)其中,wdT=∥w∥dwT,bd=∥w∥db。這樣化簡的目的是方便後面的計算。
因此,化簡後的分類直線如下圖所示:
其中,最中間的直線方程同樣也可以化簡,如下圖所示:
這樣三條直線方程都統一起來,爲了後面表達方便,我們再次化簡,將公式(7)重新定義爲:
{wTx+b≥+1,wTx+b≤−1,∀yi=+1∀yi=−1(8)將兩邊同時乘上yi
yi(wTx+b)≥1(9)因此,要有正確分類,必須滿足公式(9)的表達式。即公式(9)作爲約束條件。
我們的任務就是最大化間隔,而間隔的大小爲2r:
2r=2∥w∥∣∣wTx+b∣∣⇒∥w∥2(10)則這個間隔(margin)定義爲:
γ=∥w∥2(11)
如上圖所示,這是被重新定義的直線方程以及間隔。
若想找到最大間隔(maximum margin),即在公式(9)的約束條件下,找到間隔最大值即可,則:
maxw,b∥w∥2 s.t. yi(wTx+b)≥1,i=1,2,…,m(12)注:這個最優化問題是有約束條件的,我們稱之爲有條件的最優化問題。
顯然,爲了最大化間隔,僅需要最大化∥w∥1 ,這個等價於最小化∥w∥2 。則公示最優化問題可轉化爲:
minw,b21∥w∥2 s.t. yi(wTx+b)≥1,i=1,2,…,m(13)這就是支持向量機 (Support Vector Machine, SVM) 背後的最優化問題。
注:本博客只說明支持向量機的原理(背後的最優化的問題)。關於最優化問題如何求解比較複雜,後面有時間會更新。
參考資料
[1] https://coding.imooc.com/class/169.html#Anchor
[2] https://cuijiahua.com/blog/2017/11/ml_8_svm_1.html
[3] 機器學習, 北京: 清華大學出版社, 2016年1月
[4] 機器學習(西瓜書). 公式推導解析