SVM學習筆記 線性支撐向量機

2021-09-07 14:07:17 字數 3586 閱讀 8356

對於pla演算法來說,最終得到哪一條線是不一定的,取決於演算法scan資料的過程。

從vc bound的角度來說,上述三條線的複雜度是一樣的

eout(w)≤ein0+ω(h)dvc=d+1

直觀來看,最右邊的線是比較好的hyperplane。

為什麼最右邊的分隔面最好?

對於測量誤差的容忍度是最好的。例如對於每張中左下角的樣本點,當未來要判定與該點非常接近的點(有可能它們的feature本來就是一樣的,只不過因為測量的誤差的存在,所以feature變得有點不同了)的label的時候,最右邊的hyperplane對這些誤差會有最大的容忍度。

tolerate more noise ⟶ more robust to overfitting

當對測量誤差有更大的容忍度的時候,就能更加避免過擬合的情況出現。

所以我們想要找的超平面就是能夠更大的容忍測量誤差的超平面。直觀上來說,就是找這樣的乙個超平面,離這個超平面最近的點的到這個超平面的距離也是很大的。

這裡寫描述

「胖」分割面

如下圖所以,我們想要找的是「最胖」的那條線。

這裡寫描述

最大間隔分類超平面

maxwsubject to fatness(w)w classifies every (xn,yn) correctlyfatness(w)=minn−1,⋯,n distance(xn,w)

即我們要找一條線w,首先這條線要正確的劃分每乙個例項(w classifies every (xn,yn) correctly)。其次這條線要是最」胖」的(maxw fatness(w))。線w的」胖」的衡量方法是:到所有的點中距離最近的點的長度作為該w的fatness(胖瘦程度)。一句話:找能正確劃分資料的最胖的線。

fatness: 正式的表達為margin

correctness: 要求yn=sign(wtxn)

上述的表達可以進一步數學化為:

maxwsubject to margin(w) every ynwtxn>0margin(w)=minn−1,⋯,n distance(xn,w)

goal: 找最大間隔(margin)的分類超平面

最大間隔問題

點到超平面的距離

上面提到了我們要找最「胖」的線,這裡涉及到了乙個距離的計算。那麼怎麼算乙個點x到平面wtx+b=0的距離。

這裡寫描述

考慮在平面上的兩個點x′,x′′, 那麼有

wtx′=−b, wtx′′=−b

兩式相減:

wt(x′′−x′)vector www.txfenfenc11.cn on hyperplane=0

所以可以得到w是該平面的法向量。(x′′−x′是該平面的任意向量,w和該平面的任意向量垂直)。

那麼x到平面的距離公式如下(投影):

distance(x,b,w)=|wt||w||(x−x′)|=1||w|||wtx+b|

其中,b,w代表平面。距離即是求x−x′在w上投影的長度。第二步化簡用到wtx′=−b。

到分隔超平面的距離

上一節中推導了點到平面的距離計算方法,

distance(x,b,w)=1||w|||wtx+b|

對於我們最終想要得到的分隔超平面,我們可以得到如下的結果:

yn(wtxn+b)>0

那麼任意乙個點到分隔超平面的距離可以變為:

distance(xn,b,w)=1||w||yn(wtxn+b)

即我們想要做的事情變為:

maxw.bsubject to margin(w,b) every yn(wtxn+b)>0margin(w,b)=minn=1,⋯,n 1||w||yn(wtxn+b)

我們最終想要找的是乙個hyperplane,也就是wtx+b=0(我們現在在選擇它的係數w和b)。情況是這樣的: wtx+b=0和3wtx+3b=0是沒有什麼差別的,只是進行了係數的放縮,其實是乙個超平面,在二維就表示一條直線。那麼在這裡我們考慮乙個很特別的放縮使得:

minn=1,⋯,n yn(wtxn+b)=1

這樣的放縮總是可以做到的。這樣的話:

margin(w,b)=1||w||

原來的問題變為:

maxw.bsubject to 1||w|| every yn(wtxn+b)>0minn=1,⋯,n yn(wtxn+b)=1

進一步可以變為:

maxw.bs.t. 1||w|| minn=1,⋯,n yn(wtxn+b)=1

條件minn=1,⋯,n yn(wtxn+b) www.wmyl11.com =1包括every www.zbcppt.com yn(wtxn+b)>0, 所以後者可以去掉。

最大間隔問題

我們進一步得到了描述比較簡單的間隔最大化問題的需求。

現在的目標是要把條件中的min操作去掉。我們將條件minn=1,⋯,n yn(wtxn+b)=1放寬至:for all n都有yn(wtxn+b)≥1。現在我們擔心的問題是:原來的條件要求最小的yn(wtxn+b)等於1, 而現在要求所有的yn(wtxn+b)大於等於1。那麼在新的條件下會不會正好存在這樣的w使得所有的yn(wtxn+b)都大於1了,這樣我們放寬條件就出了問題,因為求得的解不在滿足原來的條件了。

以下將證明,即使放寬了條件,最佳解依然滿足

反證法:

如果最佳解使得所有的都是大於1的, 例如, 那麼我們進行一下縮放可知也是放鬆後問題的解。但是此時顯然比會有更大的。 所以假設:最佳解使得所有的都是大於1, 是錯誤的。

現在問題的形式變為:

變為最小為問題:

支撐向量機

乙個特例

這裡寫描述

圖中的樣本點和資訊如下:

根據最優化問題的要求我們需要滿足一下4個條件:

根據以上的兩個式子可以得到:

所以我們可以令。這樣的話不僅僅滿足了條件,也使得target function取得了最小的值。其中b的值可以通過計算乙個範圍得到。這樣我們就得到了我們最想要的hyperplane:。這就是我們想要找的支撐向量機。

此時。這裡寫描述

我們可以看到有一些離hyperplane很近的點,也就是如圖用方框框起來的那些點。這些點就可以確定我們想要的hyperplane,我們把這些點叫做support vector。可以理解為這些支撐向量就可以確定我們想要的分割超平面,而不需要其他的點。

svm的一般解法

通過分析可知,我們想要最小化的問題是個的二次函式,該問題的條件是的線性一次式。我們把這樣的問題叫做二次規劃(quadratic programming)

所以我們的乙個解法是將我們的問題表示為二次規劃的標準形式,然後就可以呼叫二次規劃的包進行運算。

標準的二次規劃問題

所以我們要確定其中的係數

線性可分的硬間隔svm演算法

使用二次規劃解決svm

表示為規範的問題,

return as

note:

hard-margin:表明我們堅持要將正例和負例完全的分開。

linear:表明我們是在使用來訓練svm,我們得到的是在空間中的分割超平面。而沒有經過任何的特轉換

所以如果我們想要乙個非線性的hyperplane,可以使用

支撐向量機SVM

首先,回顧一下svm問題的定義,如下 線性約束很煩,不方便優化,是否有一種方法可以將線性約束放到優化問題本身,這樣就可以無拘無束的優化,而不用考慮線性約束了。其對應的拉格朗日對偶形式為 最終的優化結果保證離超平面遠的點的權重為0。經過上面的對偶變化,下面來一步一步的簡化我們的原始問題,首先對b求偏導...

SVM支撐向量機

參考 麥好,機器學習實踐指南 svm在解決小樣本 非線性及高維模式識別問題中具有許多優勢。1 演算法思想 svm首先將向量對映到乙個更高維的空間裡,在其中建立最大間隔超平面,將資料分開 然後,在超平面兩邊再設立兩個互相平行的超平面 最後分隔超平面,使兩個平行平面的距離最大化。svm假定平行超平面的距...

70 什麼是支撐向量機(SVM)

我們將開始學習一種新的機器學習演算法 支撐向量機 svm 那什麼是支撐向量機呢?它的英文是 support vector machine。其實我們使用支撐向量機的思想既可以解決分類問題,也可以解決回歸問題。我們首先會學習使用支撐向量機解決分類問題,之後會學習使用支撐向量機來解決回歸問題。我們先來看看...