最近看了下SVM的原理推導,寫些我自己的理解。
SVM(Support Vector Machine)指的是支持向量機,是常見的一種判別方法。在機器學習領域,是一個有監督的學習模型,通常用來進行模式識別、分類以及迴歸分析。
先看一張圖片
分類學習的最基本的思想就是基於訓練集D在樣本空間中找到一個劃分超平面,將不同類別的樣本分開. 但能將訓練樣本分開的超平面可能有很多,如上圖,最好是紅色的那個,因爲該劃分超平面對樣本局部擾動的“容忍”性最好。
優化目標
通俗講,就是找到一個超平面或線,使得離該面或線最近的點能夠最遠。(這就是優化的核心,反覆琢磨這句話)
數據集
D = {(x1,y1),(x2,y2),(x3,y3),…,(xm,ym)}, yi ∈ {-1,+1}
決策方程:
其中W={w1;w2;…wd}是法向量,決定了超平面的方向,b爲位移項,決定了超平面與原點之間的距離。
距離方程:
決策方程滿足:
樣本中任意點x到超平面的距離可寫成:
目標函數:
放縮變換
對於決策方程(w,b)通過放縮使其結果值Y>=1
目標函數通過放縮變換簡化爲:
當前目標:
極大值問題轉換爲極小值問題
拉格朗日乘子法求解
分別對w和b求偏導,分別得到兩個條件(由於對偶性質)
結果帶入原式得到
然後對 α 求極大值,滿足以下條件:
極大值轉換爲極小值
同理求 α 的最小值帶入w偏導式便求得w,然後把w帶入決策方程得到b
綜上便求得平面方程啦
soft-margin
軟間隔:有時候數據中有一些噪音點,如果考慮它們,得到的超平面就不好了
如圖,如果按照以上推理,我們得到的如實線所示,但實際中虛線的效果會更好。爲了解決這個問題,引入鬆弛因子
新的目標函數:
其中,C是我們需要指定的一個超參數,當C趨近於很大時:意味着分類嚴格不能有錯誤,當C趨近於很小時:意味着可以有更大的錯誤容忍。
同理,用拉格朗日乘子法
然後對w,b,C求偏導再帶回上式
是不是很熟悉的式子,沒錯,和之前的式子一樣,只是對 α的約束條件更加嚴格
後面的求解過程又回到之前的推導過程啦,這裏不再重複闡述。
核變換
之前所闡述的所有推導都建立在線性可分的基礎上,如果遇到低維不可分的問題時,那麼就會用到支持向量機高大上的一部分,即核變換。
核變換:既然低維不可分,那就映射到高維
核變換主要體現在樣本特徵空間計算內積的時候
這裏需要核函數把低維映射到高維,通常使用的核函數是高斯核函數
這裏使用一個可視化數據舉例,左圖使用線性核函數的結果,右圖使用的高斯核函數做個高維空間映射後的結果。