支持向量机SVM 简要推导过程
SVM 是一塊很大的內容,網上有寫得非常精彩的博客。這篇博客目的不是詳細闡述每一個理論和細節,而在于在不丟失重要推導步驟的條件下從宏觀上把握 SVM 的思路。
?
1. 問題由來
SVM (支持向量機) 的主要思想是找到幾何間隔最大的超平面對數據進行正確劃分,與一般的線性分類器相比,這樣的超平面理論上對未知的新實例具有更好的分類能力。公式表示如下:
?: 所有點中最小的幾何間隔, 實際上就是支持向量上的點的幾何間隔
?: 訓練樣本及對應標簽,?, 作用是將第 i 個樣本點的幾何間隔轉化為正數
公式的意思是假設每個訓練樣本點的幾何間隔至少是?, 求??的最大值。
由于幾何間隔(沒帽子)和函數間隔(有帽子)的關系是:
最大化??可以固定??,求 ||w|| 的最小值或者固定 ||w||, 求??的最大值,一般選擇前者: 固定函數間隔為 1, 將 \gamma = 1/||w|| 帶入上式,同時為了計算方便, 目標函數等價于最小化 ||w||^2 ,約束優化問題轉化為:
這是一個 QP 優化問題。
?
2. 對偶問題
利用拉格朗日乘子法將約束條件融入到目標函數:
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] 統計學習方法, 李航 著
?
from:http://www.cnblogs.com/daniel-D/總結
以上是生活随笔為你收集整理的支持向量机SVM 简要推导过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scala 中的函数式编程基础
- 下一篇: MLP 之手写数字识别