1. 程式人生 > >支援向量機的理論推導

支援向量機的理論推導

原文出處

轉載自:https://blog.csdn.net/sinat_20177327/article/details/79729551

一、簡介

支援向量機(support vector machines)是一種二分類模型,它的目的是尋找一個超平面來對樣本進行分割,分割的原則是間隔最大化,最終轉化為一個凸二次規劃問題來求解。由簡至繁的模型包括:

  • 當訓練樣本線性可分時,通過硬間隔最大化,學習一個線性可分支援向量機;
  • 當訓練樣本近似線性可分時,通過軟間隔最大化,學習一個線性支援向量機;
  • 當訓練樣本線性不可分時,通過核技巧和軟間隔最大化,學習一個非線性支援向量機;

二、線性可分支援向量機

1、間隔最大化和支援向量

如果一個線性函式能夠將樣本分開,稱這些資料樣本是線性可分的。那麼什麼是線性函式呢?其實很簡單,在二維空間中就是一條直線,在三維空間中就是一個平面,以此類推,如果不考慮空間維數,這樣的線性函式統稱為超平面。我們看一個簡單的二維空間的例子,O代表正類,X代表負類,樣本是線性可分的,但是很顯然不只有這一條直線可以將樣本分開,而是有無數條,我們所說的線性可分支援向量機就對應著能將資料正確劃分並且間隔最大的直線。


這裡寫圖片描述

那麼我們考慮第一個問題,為什麼要間隔最大呢?一般來說,一個點距離分離超平面的遠近可以表示分類預測的確信度,如圖中的A B兩個樣本點,B點被預測為正類的確信度要大於A點,所以SVM的目標是尋找一個超平面,使得離超平面較近的異類點之間能有更大的間隔,即不必考慮所有樣本點,只需讓求得的超平面使得離它近的點間隔最大。
接下來考慮第二個問題,怎麼計算間隔?

只有計算出了間隔,才能使得間隔最大化。在樣本空間中,劃分超平面可通過如下線性方程來描述:
這裡寫圖片描述
其中w為法向量,決定了超平面的方向,b為位移量,決定了超平面與原點的距離。假設超平面能將訓練樣本正確地分類,即對於訓練樣本(xi,yi)(xi,yi) 相當於最小化 ||w||,為了計算方便,將公式(6)轉化成如下:
這裡寫圖片描述
公式(7)即為支援向量機的基本型。

2、對偶問題

公式(7)本身是一個凸二次規劃問題,可以使用現有的優化計算包來計算,但我們選擇更為高效的方法。對公式(7)使用拉格朗日乘子法得到其對偶問題,該問題的拉格朗日函式可以寫為:
這裡寫圖片描述
公式(8)分別對 w 和 b求偏導:
這裡寫圖片描述
令其分別為0,可以得到:
這裡寫圖片描述


將公式(9)(10)代入公式(8),可得:
這裡寫圖片描述
此時,原問題就轉化為以下僅關於 αα

  • αi=0αi=0,即該樣本一定在邊界上,是一個支援向量。

這裡顯示出了支援向量機的重要特徵:當訓練完成後,大部分樣本都不需要保留,最終模型只與支援向量有關。

三、非線性支援向量機和核函式

對於非線性問題,線性可分支援向量機並不能有效解決,要使用非線性模型才能很好地分類。先看一個例子,如下圖,很顯然使用直線並不能將兩類樣本分開,但是可以使用一條橢圓曲線(非線性模型)將它們分開。非線性問題往往不好求解,所以希望能用解線性分類問題的方法求解,因此可以採用非線性變換,將非線性問題變換成線性問題。
這裡寫圖片描述
對於這樣的問題,可以將訓練樣本從原始空間對映到一個更高維的空間,使得樣本在這個空間中線性可分,如果原始空間維數是有限的,即屬性是有限的,那麼一定存在一個高維特徵空間是樣本可分。令ϕ(x)ϕ(x)表示將 x 對映後的特徵向量,於是在特徵空間中,劃分超平面所對應的的模型可表示為:

f(x)=wTϕ(x)+bf(x)=wTϕ(x)+b          (14)

於是有最小化函式:
這裡寫圖片描述
其對偶問題為:
這裡寫圖片描述
若要對公式(16)求解,會涉及到計算 ϕ(xi)Tϕ(xj)ϕ(xi)Tϕ(xj) 就是核函式,在實際應用中,通常人們會從一些常用的核函式裡選擇(根據樣本資料的不同,選擇不同的引數,實際上就得到了不同的核函式),下面給出常用的核函式:

  • 線性核:
    這裡寫圖片描述

  • 多項式核(d是多項式的次數,d=1是退化為線性核):
    這裡寫圖片描述

  • 高斯核(σ>0σ>0):
    這裡寫圖片描述
    此外,核函式也可以通過組合得到,在此不再贅述。

四、線性支援向量機(軟間隔支援向量機)與鬆弛變數

1、線性支援向量機

在前面的討論中,我們假設訓練樣本在樣本空間或者特徵空間中是線性可分的,但在現實任務中往往很難確定合適的核函式使訓練集在特徵空間中線性可分,退一步說,即使瞧好找到了這樣的核函式使得樣本在特徵空間中線性可分,也很難判斷是不是由於過擬合造成。

線性不可分意味著某些樣本點 (xi,yi)(xi,yi) 儘量小即間隔儘量大,同時使誤分類點的個數儘量小,C是調和兩者的係數。
有了公式(21),可以和線性可分支援向量機一樣考慮線性支援向量機的學習過程,此時,線性支援向量機的學習問題變成如下凸二次規劃問題的求解(原始問題):
這裡寫圖片描述

2、對偶問題

與線性可分支援向量機的對偶問題解法一致,公式(22)的拉格朗日函式為:
這裡寫圖片描述
其中 αi0,μi0αi≥0,μi≥0 是拉格朗日乘子。

L(w,b,α,ξ,μ)L(w,b,α,ξ,μ)

  • αi=0αi=0 ,此時該樣本為支援向量。

由於 C=αi+μiC=αi+μi (公式26)

  • αi<Cαi<C 則樣本分類錯誤。

五、總結

至此,關於SVM的三類問題:線性可分支援向量機與硬間隔最大化,非線性支援向量機與核函式,線性支援向量機與軟間隔最大化一一介紹完畢,最後附上博主 Duanxx 對SVM使用範圍的一段總結:

我們所面對的所有的機器學演算法,都是有適用範圍的,或者說,我們所有的機器學習演算法都是有約束的優化問題。而這些約束,就是我們在推導演算法之前所做的假設。

比如:Logistics Regression,在Logistics Regression中,假設後驗概率為Logistics 分佈;再比如:LDA假設fk(x)fk(x)是均值不同,方差相同的高斯分佈;這些都是我們在推導演算法之前所做的假設,也就是演算法對資料分佈的要求。

而對於SVM而言,它並沒有對原始資料的分佈做任何的假設,這就是SVM和LDA、Logistics Regression區別最大的地方。這表明SVM模型對資料分佈的要求低,那麼其適用性自然就會更廣一些。如果我們事先對資料的分佈沒有任何的先驗資訊,即,不知道是什麼分佈,那麼SVM無疑是比較好的選擇。

但是,如果我們已經知道資料滿足或者近似滿足高斯分佈,那麼選擇LDA得到的結果就會更準確。如果我們已經知道資料滿足或者近似滿足Logistics 分佈,那麼選擇Logistics Regression就會有更好的效果。

轉載自:https://blog.csdn.net/sinat_20177327/article/details/79729551