1. 程式人生 > >SVM學習筆記-線性支撐向量機

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

操作 mar 向量 直觀 法向量 衡量 最優 目標 vector

  對於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, 所以後者可以去掉。
  
  最大間隔問題
  
  我們進一步得到了描述比較簡單的間隔最大化問題的需求。
  
  maxw.bs.t. 1||w|| www.caihonyule.com/ minn=1,?,N www.chushiyl.cn/ yn(wTxn+b)=1
  
  現在的目標是要把條件中的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學習筆記-線性支撐向量機