1. 程式人生 > >支援向量機(SVM)從入門到放棄再到掌握

支援向量機(SVM)從入門到放棄再到掌握

前言

朋友,你通過各種不同的途經初次接觸支援向量機(SVM)的時候,是不是會覺得這個東西耳熟能詳,感覺大家都會,卻唯獨自己很難理解?
每一次你的老闆或者同仁讓你講解SVM的時候,你覺得你看過這麼多資料,使用過這麼多次,講解應該沒有問題,但偏偏在分享的時候結結巴巴,漏洞百出?
每一次機器學習相關的面試在問到支援向量機(SVM)的時候,儘管你覺得你都準備好了,可是一次又一次敗下陣來,以至於覺得問那些問題的人(是不是腦子有…)是那麼的厲害,每一次都能精準發覺到你的不足和漏洞,讓你懷疑你掌握的是假的SVM,然後讓你懷疑人生?
那還等什麼,快來看看這篇文章吧,原價998,現在只要。。。(不好意思,扯偏了。)

以上可能真的只是我的個人經歷(在這裡,學渣給各位大佬鞠躬了!),但不管怎麼樣,我還是要自己寫一篇從頭到尾的SVM的理解,然後呈現給各位大佬審閱,歡迎您批評指正!

按照以下問題成文:

  • 由線性分類任務開始
  • 為何需要最大化間隔
  • 怎麼解決凸二次規劃問題
  • 對偶問題的求解
  • SMO演算法
  • 核函式的由來和使用

SVM由線性分類開始

在這之前,假設讀者們對線性分類模型和向量矩陣求導有大概的瞭解。

給定訓練樣本集

D = ( x 1 , y 1
) , ( x 2 , y 2 ) , . . . , ( x m , y m ) ) ) , y i { 1 , 1 }
, 線性分類器基於訓練樣本D 在二維空間中找到一個超平面來分開二類樣本。當然,這樣的超平面有很多。

這裡寫圖片描述

但我們可以直觀感受到,這根紅色線代表的超平面抗“擾動”性最好。這個超平面離直線兩邊的資料的間隔最大,對訓練集的資料的侷限性或噪聲有最大的“容忍”能力。

在這裡,這個超平面可以用函式 f ( x ) = w T x + b 表示。 當 f ( x ) 等於0的時候,x便是位於超平面
上的點,而 f ( x ) 大於0的點對應 y=1 的資料點, f ( x ) 小於0的點對應y=-1的點。

為什麼是 y i { 1 , 1 } ,換句話說, y 只能是-1,和1嗎?不能是 y =-100 表示反例, y =2000表示正例,或 y =0表示反例, y =300表示正例,或 y =5表示反例 y =-7 表示正例嗎?當然可以。y 只是一個label ,標註為{-1,+1}不過為了描述方便

y =0表示反例, y =300表示正例,只不過分正類的標準變為 y 150 f x ) > 0

不妨令:

{ w T x i + b + 1 , y i = + 1 ; w T x i + b 1 , y i = 1

為什麼可以這麼令呢?我們知道,所謂的支援向量,就是使得上式等號成立,即最靠近兩條虛邊界線的向量。那麼,不難理解當 w T x + b 的值大於+1,或小於-1的時候,就更加支援“樣本的分類”了。為什麼要這麼令呢?還是為了計算方便。接著往下看,你一定能悟到這麼令的原因。

我們可以計算得到空間中任意樣本點 x 到超平面的距離為: r = | w T x + b | w 。為什麼呢?
這裡寫圖片描述
如圖所示,有: x = x 0 + r w w (簡單平面幾何)
又有: w T x 0 + b = 0 ,代入上式,求得: r = | w T x + b | w

因為 y i { 1 , 1 } ,,兩個異類支援向量到超平面的距離之和(也稱為“間隔”)可表示為: r = 2 w

很顯然,我們要找到符合這樣一個條件的超平面來分開兩類資料
這個超平面離兩類樣本都足夠遠,也就是使得“間隔”最大。即最終確定的引數 w b ,使得 r 最大。即要: