SVM 是一塊很大的內容,網上有寫得很是精彩的博客。這篇博客目的不是詳細闡述每個理論和細節,而在於在不丟失重要推導步驟的條件下從宏觀上把握 SVM 的思路。函數
SVM (支持向量機) 的主要思想是找到幾何間隔最大的超平面對數據進行正確劃分,與通常的線性分類器相比,這樣的超平面理論上對未知的新實例具備更好的分類能力。公式表示以下:學習
: 全部點中最小的幾何間隔, 實際上就是支持向量上的點的幾何間隔優化
: 訓練樣本及對應標籤, , 做用是將第 i 個樣本點的幾何間隔轉化爲正數spa
公式的意思是假設每一個訓練樣本點的幾何間隔至少是 , 求 的最大值。blog
因爲幾何間隔(沒帽子)和函數間隔(有帽子)的關係是:get
最大化 能夠固定 ,求 ||w|| 的最小值或者固定 ||w||, 求 的最大值,通常選擇前者: 固定函數間隔爲 1, 將 \gamma = 1/||w|| 帶入上式,同時爲了計算方便, 目標函數等價於最小化 ||w||^2 ,約束優化問題轉化爲:博客
這是一個 QP 優化問題。it
利用拉格朗日乘子法將約束條件融入到目標函數:io
SVM 的原始問題其實是一個極小極大問題:學習方法
這個表達式有幾個變量,先從哪個着手?答案是 , 至於爲何,其實是根據下面這個優化函數將原始問題的約束條件——函數間隔必須不小於 1 轉化到拉格朗日乘子 向量上去的,先看函數的後面一部分:
很容易能夠看出,若是樣本點 xi 知足約束條件,即有 , 上式求最大,一定有 , alpha 與後面括號裏面的式子必有一個爲 0 (VI) 全部的樣本點都知足約束條件,極小極大問題就轉化爲 , 若是有一個樣本點不知足約束條件,alpha 值取無窮大,上式將取無窮大,顯然是沒有意義的。實際上,這段論述就說明了原始問題具備 KKT 強對偶條件,對於原始問題來講須要知足的 KKT 條件有哪些呢?
倒數兩個條件是原始問題的條件,確定成立。第一個條件是上面討論過的條件:
原始問題知足 KKT 條件,能夠轉化成一個最優解等價的對偶極大極小問題,先對極小部分求偏導:
獲得對偶最優化問題:
對於一個新來的樣本,將上面 w 的值帶入 f(x) = w^T·x + b, 能夠知道要判斷新來的點,咱們只須要計算它與訓練點的內積便可,這是 kernel trick 的關鍵:
軟間隔問題是應對 outliers 的一種方法。軟間隔問題能夠創建目標函數:
與硬間隔的優化方法類似,獲得的解是:
核方法是一種很巧妙的方法,既能夠將特徵映射到較高的維度,又能夠地利用了 SVM 的內積運算避免了維度計算量的爆炸。最後的最優化問題與硬間隔優化問題類似,只要將兩個樣本的內積改成兩個樣本的核函數便可 (kernel substitution) :
固然,你也能夠將兩個樣本的內積看作最簡單的核函數。Kernel method 不只能夠用在 SVM 上,還能夠用在 PCA、線性分類器上等,之後再專門寫一篇 kernel method 的博客。
參考資料:
[1] pluskid 的博客
[2] 統計學習方法, 李航 著