機器學習(4): 支持向量機(Support Vector Machine) 算法小結

在這裏插入圖片描述


注:轉載請標明原文出處鏈接: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的任務就是使得間隔最大化,如下圖所示,間隔爲2dd,那麼如何使用做數學去描述這個間隔呢?
在這裏插入圖片描述
首先回顧一下高中學習過的點到直線的距離
給出點(x0,y0)\left( {{x_0},{y_0}} \right),直線爲Ax+By+C=0{\rm{A}}x + {\rm{B}}y{\rm{ + C}} = 0,則點到直線的距離rr爲:
(1)r=Ax0+By0+CA2+B2 r = {{\left| {{\rm{A}}{x_0} + {\rm{B}}{y_0}{\rm{ + C}}} \right|} \over {\sqrt {{{\rm{A}}^2} + {{\rm{B}}^2}} }}\tag{1} 同樣地,點(x0,y0,z0)\left( {{x_0},{y_0},{z_0}} \right) 到平面Ax+By+Cz+D=0{\rm{A}}x + {\rm{B}}y{\rm{ + C}}z{\rm{ + D}} = 0的距離rr爲:
(2)r=Ax0+By0+Cz0+DA2+B2+C2 r = {{\left| {{\rm{A}}{x_0} + {\rm{B}}{y_0}{\rm{ + C}}{z_0}{\rm{ + D}}} \right|} \over {\sqrt {{{\rm{A}}^2} + {{\rm{B}}^2} + {{\rm{C}}^2}} }}\tag{2} 同理也可以拓展nn維空間點x,在樣本空間中,超平面可通過線性方程描述爲:
(3)wTx+b=0 {{\bf{w}}^{\rm{T}}}{\bf{x}} + b = 0\tag{3} 其中,w=(w1;w2;;wd){\bf{w}} = ({w_1};{w_2}; \ldots ;{w_d})爲超平面的法向量,決定超平面的方向;bb爲位移項,決定超平面與nn維空間中的原點之間的距離。下面將超平面記爲(w,b)\left( {{\bf{w}},b} \right),因此nn維樣本空間中任一點x到超平面(w,b)\left( {{\bf{w}},b} \right)的距離爲:
(4)r=wTx+bw r = {{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}}\tag{4} 其中,w=w12+w22++wd2\left\| {\bf{w}} \right\| = \sqrt {w_1^2 + w_2^2 + \ldots + w_d^2} .
給定樣本數據集D={(x1,y1),(x2,y2),,(xm,ym)},yi{+1,1}D = \left\{ {({{\bf{x}}_1},{y_1}),({{\bf{x}}_2},{y_2}), \ldots ,({{\bf{x}}_m},{y_m})} \right\},{y_i} \in \left\{ { + 1, - 1} \right\}用於分類,假設超平面能將樣本空間的點正確分類,即對於任意的(xm,ym)D({{\bf{x}}_m},{y_m}) \in D,若yi=+1\forall {y_i} = + 1,則+1類別樣本中的點到超平面的距離要大於等於間隔d,即wTx+bwd{{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}} \ge d;若yi=1\forall {y_i} = - 1,則-1類別樣本中的點到超平面的距離要大於等於間隔dd,即wTx+bwd{{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}} \ge d,將絕對值去掉,化簡爲wTx+bwd{{{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \over {\left\| {\bf{w}} \right\|}} \le - d.


在這裏插入圖片描述
因此,合併起來:
(5){wTx+bwd,yi=+1wTx+bwd,yi=1 \left\{\begin{array}{l}{\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\|} \geq d, \quad \forall y_{i}=+1} \\ {\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\|} \leq-d, \quad \forall y_{i}=-1}\end{array}\right.\tag{5}
將上式化簡:
(6){wTx+bwd+1,yi=+1wTx+bwd1,yi=1 \left\{\begin{array}{l}{\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\| d} \geq+1, \quad \forall y_{i}=+1} \\ {\frac{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b}{\|\mathbf{w}\| d} \leq-1, \quad \forall y_{i}=-1}\end{array}\right.\tag{6} 而上式中wd\left\| {\bf{w}} \right\|d爲一個數,所以可以化簡爲:
(7){wdTx+bd+1,yi=+1wdTx+bd1,yi=1 \left\{\begin{array}{ll}{\mathbf{w}_{d}^{\mathrm{T}} \mathbf{x}+b_{d} \geq+1,} & {\forall y_{i}=+1} \\ {\mathbf{w}_{d}^{\mathrm{T}} \mathbf{x}+b_{d} \leq-1,} & {\forall y_{i}=-1}\end{array}\right.\tag{7} 其中,wdT=wTwd{\bf{w}}_d^{\rm{T}} = {{{{\bf{w}}^{\rm{T}}}} \over {\left\| {\bf{w}} \right\|d}}bd=bwd{b_d} = {b \over {\left\| {\bf{w}} \right\|d}}。這樣化簡的目的是方便後面的計算。

因此,化簡後的分類直線如下圖所示:
在這裏插入圖片描述
其中,最中間的直線方程同樣也可以化簡,如下圖所示:

在這裏插入圖片描述
這樣三條直線方程都統一起來,爲了後面表達方便,我們再次化簡,將公式(7)重新定義爲:
(8){wTx+b+1,yi=+1wTx+b1,yi=1 \left\{\begin{array}{ll}{\mathbf{w}^{\mathrm{T}} \mathbf{x}+b \geq+1,} & {\forall y_{i}=+1} \\ {\mathbf{w}^{\mathrm{T}} \mathbf{x}+b \leq-1,} & {\forall y_{i}=-1}\end{array}\right.\tag{8} 將兩邊同時乘上yi{y_i}
(9)yi(wTx+b)1 {y_i}\left( {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right) \ge 1\tag{9} 因此,要有正確分類,必須滿足公式(9)的表達式。即公式(9)作爲約束條件。

我們的任務就是最大化間隔,而間隔的大小爲2rr
(10)2r=2wTx+bw2w 2r = 2{{\left| {{{\bf{w}}^{\rm{T}}}{\bf{x}} + b} \right|} \over {\left\| {\bf{w}} \right\|}} \Rightarrow {2 \over {\left\| {\bf{w}} \right\|}}\tag{10} 則這個間隔(margin)定義爲:
(11)γ=2w \gamma = {2 \over {\left\| {\bf{w}} \right\|}}\tag{11}
在這裏插入圖片描述
如上圖所示,這是被重新定義的直線方程以及間隔。
若想找到最大間隔(maximum margin),即在公式(9)的約束條件下,找到間隔最大值即可,則:
(12)maxw,b2w s.t. yi(wTx+b)1,i=1,2,,m \begin{array}{l}{\max _{\mathbf{w}, b} \frac{2}{\|\mathbf{w}\|}} \\ {\text { s.t. } y_{i}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}+b\right) \geq 1, i=1,2, \ldots, m}\end{array}\tag{12} :這個最優化問題是有約束條件的,我們稱之爲有條件的最優化問題

顯然,爲了最大化間隔,僅需要最大化1w{1 \over {\left\| {\bf{w}} \right\|}} ,這個等價於最小化w2{\left\| {\bf{w}} \right\|^2} 。則公示最優化問題可轉化爲:
(13)minw,b12w2 s.t. yi(wTx+b)1,i=1,2,,m \begin{array}{l}{\min _{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^{2}} \\ {\text { s.t. } y_{i}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}+b\right) \geq 1, i=1,2, \ldots, m}\end{array}\tag{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] 機器學習(西瓜書). 公式推導解析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章