SVM面試知識點總結

1. SVM 原理

SVM 是一種二類分類模型。它的基本思想是在特徵空間中尋找間隔最大的分離超平面使數據獲得高效的二分類,具體來說,有三種狀況(不加核函數的話就是個線性模型,加了以後纔會升級爲一個非線性模型):算法

  • 當訓練樣本線性可分時,經過硬間隔最大化,學習一個線性分類器,即線性可分支持向量機;
  • 當訓練數據近似線性可分時,引入鬆弛變量,經過軟間隔最大化,學習一個線性分類器,即線性支持向量機;
  • 當訓練數據線性不可分時,經過使用核技巧及軟間隔最大化,學習非線性支持向量機。

2. SVM 爲何採用間隔最大化(與感知機的區別):

當訓練數據線性可分時,存在無窮個分離超平面能夠將兩類數據正確分開。感知機利用誤分類最小策略,求得分離超平面,不過此時的解有無窮多個。線性可分支持向量機利用間隔最大化求得最優分離超平面,這時,解是惟一的。另外一方面,此時的分隔超平面所產生的分類結果是最魯棒的,對未知實例的泛化能力最強。網絡

3. 爲何要將求解 SVM 的原始問題轉換爲其對偶問題

  • 一是對偶問題每每更易求解,當咱們尋找約束存在時的最優勢的時候,約束的存在雖然減少了須要搜尋的範圍,可是卻使問題變得更加複雜。爲了使問題變得易於處理,咱們的方法是把目標函數和約束所有融入一個新的函數,即拉格朗日函數,再經過這個函數來尋找最優勢。
  • 二是能夠天然引入核函數,進而推廣到非線性分類問題。

4. 爲何 SVM 要引入核函數

當樣本在原始空間線性不可分時,可將樣本從原始空間映射到一個更高維的特徵空間,使得樣本在這個特徵空間內線性可分。而引入這樣的映射後,所要求解的對偶問題的求解中,無需求解真正的映射函數,而只須要知道其核函數。核函數的定義:K(x,y)=<ϕ(x),ϕ(y)>,即在特徵空間的內積等於它們在原始樣本空間中經過核函數 K 計算的結果。一方面數據變成了高維空間中線性可分的數據,另外一方面不須要求解具體的映射函數,只須要給定具體的核函數便可,這樣使得求解的難度大大下降。函數

用本身的話說就是,在SVM不管是硬間隔仍是軟間隔在計算過程當中,都有X轉置點積X,若X的維度低一點還好算,但當咱們想把X從低維映射到高維的時候(讓數據變得線性可分時),這一步計算很困難,等於說在計算時,須要先計算把X映射到高維的的ϕ(x),再計算ϕ(x1)和ϕ(x2)的點積,這一步計算起來開銷很大,難度也很大,此時引入核函數,這兩步的計算便成了一步計算,即只需把兩個x帶入核函數,計算核函數,舉個列子一目瞭然:性能

我的對核函數的理解:核函數就是一個函數,接收兩個變量,這兩個變量是在低維空間中的變量,而核函數求的值等於將兩個低維空間中的向量映射到高維空間後的內積。學習

 5. 爲何SVM對缺失數據敏感

這裏說的缺失數據是指缺失某些特徵數據,向量數據不完整。SVM 沒有處理缺失值的策略。而 SVM 但願樣本在特徵空間中線性可分,因此特徵空間的好壞對SVM的性能很重要。缺失特徵數據將影響訓練結果的好壞。大數據

6. 如何選擇核函數:

  • 當特徵維數 d 超過樣本數 m 時 (文本分類問題一般是這種狀況), 使用線性核;
  • 當特徵維數 d 比較小. 樣本數 m 中等時, 使用RBF核;
  • 當特徵維數 d 比較小. 樣本數 m 特別大時, 支持向量機性能一般不如深度神經網絡

 7. SVM的目標(硬間隔):

有兩個目標:第一個是使間隔最大化,第二個是使樣本正確分類,由此推出目標函數:優化

[公式]

[公式]

稍微解釋一下,w是超平面參數,目標一是從點到面的距離公式化簡來的,具體不展開,目標二就至關於感知機,只是把大於等於0進行縮放變成了大於等於1,爲了後面的推導方便。有了兩個目標,寫在一塊兒,就變成了svm的終極目標:spa

[公式]

8. 求解目標(硬間隔):

從上面的公式看出,這是一個有約束條件的最優化問題,用拉格朗日函數來解決。orm

上式的拉格朗日函數爲:blog

[公式]

在知足Slater定理的時候,且過程知足KKT條件的時候,原問題轉換成對偶問題:

[公式]

先求內部最小值,對 [公式] 和 [公式] 求偏導並令其等於 [公式] 可得:

[公式]

將其代入到上式中去可獲得

[公式]

此時須要求解 [公式] ,利用SMO(序列最小優化)算法:

SMO算法的基本思路是每次選擇兩個變量[公式][公式],選取的兩個變量所對應的樣本之間間隔要儘量大,由於這樣更新會帶給目標函數值更大的變化。SMO算法之因此高效,是由於僅優化兩個參數的過程實際上僅有一個約束條件,其中一個可由另外一個表示,這樣的二次規劃問題具備閉式解。

 9. 軟間隔:

無論直接在原特徵空間,仍是在映射的高維空間,咱們都假設樣本是線性可分的。雖然理論上咱們總能找到一個高維映射使數據線性可分,但在實際任務中,尋找一個合適的核函數核很困難。此外,因爲數據一般有噪聲存在,一味追求數據線性可分可能會使模型陷入過擬合,所以,咱們放寬對樣本的要求,容許少許樣本分類錯誤。這樣的想法就意味着對目標函數的改變,以前推導的目標函數裏不容許任何錯誤,而且讓間隔最大,如今給以前的目標函數加上一個偏差,就至關於容許原先的目標出錯,引入鬆弛變量 [公式] ,公式變爲:

[公式]

那麼這個鬆弛變量怎麼計算呢,最開始試圖用0,1損失去計算,但0,1損失函數並不連續,求最值時求導的時候很差求,因此引入合頁損失(hinge loss):

[公式]

函數圖長這樣:

理解起來就是,原先制約條件是保證全部樣本分類正確, [公式] ,如今出現錯誤的時候,必定是這個式子不被知足了,即 [公式] ,衡量一下錯了多少呢?由於左邊必定小於1,那就跟1比較,由於1是邊界,因此用1減去 [公式] 來衡量錯誤了多少,因此目標變爲(正確分類的話損失爲0,錯誤的話付出代價):

[公式]

但這個代價須要一個控制的因子,引入C>0,懲罰參數,即:

[公式]

能夠想象,C越大說明把錯誤放的越大,說明對錯誤的容忍度就小,反之亦然。當C無窮大時,就變成一點錯誤都不能容忍,即變成硬間隔。實際應用時咱們要合理選取C,C越小越容易欠擬合,C越大越容易過擬合。

因此軟間隔的目標函數爲:

[公式]

其中:

[公式]

10. 軟間隔求解:

與硬間隔相似:

上式的拉格朗日函數爲:

[公式]

在知足Slater定理的時候,且過程知足KKT條件的時候,原問題轉換成對偶問題:

[公式]

先求內部最小值,對 [公式] , [公式] 和 [公式] 求偏導並令其等於 [公式] 可得:

[公式]

將其代入到上式中去可獲得,注意 [公式] 被消掉了:

[公式]

此時須要求解 [公式] ,一樣利用SMO(序列最小優化)算法。

 11. 關於支持向量的問題:

1.先說硬間隔:

先看KKT條件

支持向量,對偶變量 αi > 0 對應的樣本;

  • 線性支持向量機中, 支持向量是距離劃分超平面最近的樣本, 落在最大間隔邊界上。

  • 支持向量機的參數 (w; b) 僅由支持向量決定, 與其餘樣本無關。

2. 再說軟間隔:

先看kkt條件:

通過SMO後,求得 [公式] ,[公式] 。

對於任意樣本[公式]

[公式],此樣本點不是支持向量,該樣本對模型沒有任何的做用
[公式],此樣本是一個支持向量(同硬間隔)

若知足[公式],進一步地,

  • [公式], 則[公式],即恰好[公式],樣本剛好在最大間隔邊界上
  • [公式],有[公式],此時若[公式]則該樣本落在最大間隔內部
  • [公式]則該樣本落在最大間隔內部(不屬於本身的另外一部分)即被錯誤分類

如圖:

 

 12. 談談SVM的損失函數:

此處說的是軟間隔:

先看軟間隔的基本型形式:

[公式]

稍微作一點變化:

[公式]

這樣寫是爲了符合標準的損失函數+正則化的樣子,其中, 第一項稱爲經驗風險, 度量了模型對訓練數據的擬合程度; 第二項稱爲結構風險, 也稱爲正則化項, 度量 了模型自身的複雜度. 正則化項削減了假設空間, 從而 下降過擬合風險. λ 是個可調節的超參數, 用於權衡經驗風險和結構風險.

其中:

[公式]

[公式]

這樣的話給上式乘以mc,就會變成上上式了。

13. SVM的優缺點:

優勢:

  1. 因爲SVM是一個凸優化問題,因此求得的解必定是全局最優而不是局部最優。
  2. 不只適用於線性線性問題還適用於非線性問題(用核技巧)。
  3. 擁有高維樣本空間的數據也能用SVM,這是由於數據集的複雜度只取決於支持向量而不是數據集的維度,這在某種意義上避免了「維數災難」。
  4. 理論基礎比較完善(例如神經網絡就更像一個黑盒子)。

缺點:

  1. 二次規劃問題求解將涉及m階矩陣的計算(m爲樣本的個數), 所以SVM不適用於超大數據集。(SMO算法能夠緩解這個問題)
  2. 只適用於二分類問題。(SVM的推廣SVR也適用於迴歸問題;能夠經過多個SVM的組合來解決多分類問題)

 


 

 參考文獻:https://zhuanlan.zhihu.com/p/76946313

相關文章
相關標籤/搜索