SVM 簡要推導過程

 

SVM 是一塊很大的內容,網上有寫得很是精彩的博客。這篇博客目的不是詳細闡述每個理論和細節,而在於在不丟失重要推導步驟的條件下從宏觀上把握 SVM 的思路。函數

 

1. 問題由來

SVM (支持向量機) 的主要思想是找到幾何間隔最大的超平面對數據進行正確劃分,與通常的線性分類器相比,這樣的超平面理論上對未知的新實例具備更好的分類能力。公式表示以下:學習

 : 全部點中最小的幾何間隔, 實際上就是支持向量上的點的幾何間隔優化

 : 訓練樣本及對應標籤, , 做用是將第 i 個樣本點的幾何間隔轉化爲正數spa

公式的意思是假設每一個訓練樣本點的幾何間隔至少是 , 求  的最大值。blog

因爲幾何間隔(沒帽子)和函數間隔(有帽子)的關係是:get

最大化  能夠固定  ,求 ||w|| 的最小值或者固定 ||w||, 求  的最大值,通常選擇前者: 固定函數間隔爲 1, 將 \gamma = 1/||w|| 帶入上式,同時爲了計算方便, 目標函數等價於最小化 ||w||^2 ,約束優化問題轉化爲:博客

這是一個 QP 優化問題。it

 

2. 對偶問題

利用拉格朗日乘子法將約束條件融入到目標函數:io

SVM 的原始問題其實是一個極小極大問題:學習方法

這個表達式有幾個變量,先從哪個着手?答案是  , 至於爲何,其實是根據下面這個優化函數將原始問題的約束條件——函數間隔必須不小於 1 轉化到拉格朗日乘子  向量上去的,先看函數的後面一部分:

很容易能夠看出,若是樣本點 xi 知足約束條件,即有 , 上式求最大,一定有 ,  alpha 與後面括號裏面的式子必有一個爲 0 (VI) 全部的樣本點都知足約束條件,極小極大問題就轉化爲  , 若是有一個樣本點不知足約束條件,alpha 值取無窮大,上式將取無窮大,顯然是沒有意義的。實際上,這段論述就說明了原始問題具備 KKT 強對偶條件,對於原始問題來講須要知足的 KKT 條件有哪些呢?

倒數兩個條件是原始問題的條件,確定成立。第一個條件是上面討論過的條件:

  • 當樣本不在支持向量上,alpha 必定等於 0, w 在不等式2的內部,這是一個鬆的約束,L 函數就等於 1/2||w||^2 , 取它的偏導爲0就能夠了。
  • 當樣本點在支持向量上時, w 在不等式2的邊界上,這是一個等式約束,這就和普通的拉格朗日等式約束相同,在最優勢目標函數和約束條件函數的導數平行。用 wiki 的一張圖來表示:

原始問題知足 KKT 條件,能夠轉化成一個最優解等價的對偶極大極小問題,先對極小部分求偏導:

獲得對偶最優化問題:

對於一個新來的樣本,將上面 w 的值帶入 f(x) = w^T·x + b, 能夠知道要判斷新來的點,咱們只須要計算它與訓練點的內積便可,這是 kernel trick 的關鍵:

 

3. 軟間隔

軟間隔問題是應對 outliers 的一種方法。軟間隔問題能夠創建目標函數:

與硬間隔的優化方法類似,獲得的解是:

 

4. Kernel Method

 核方法是一種很巧妙的方法,既能夠將特徵映射到較高的維度,又能夠地利用了 SVM 的內積運算避免了維度計算量的爆炸。最後的最優化問題與硬間隔優化問題類似,只要將兩個樣本的內積改成兩個樣本的核函數便可 (kernel substitution) :

固然,你也能夠將兩個樣本的內積看作最簡單的核函數。Kernel method 不只能夠用在 SVM 上,還能夠用在 PCA、線性分類器上等,之後再專門寫一篇 kernel method 的博客。

 

參考資料:

[1] pluskid 的博客

[2] 統計學習方法, 李航 著

相關文章
相關標籤/搜索