1. 程式人生 > >SVM演算法原理分析

SVM演算法原理分析

SVM演算法:
演算法背景:支援向量機方法是建立在統計學習理論的VC 維理論和結構風險最小原理基礎上的,根據有限的樣本資訊在模型的複雜性(即對特定訓練樣本的學習精度,Accuracy)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折衷,以期獲得最好的推廣能力(或稱泛化能力)。
兩個基本概念:經驗風險,置信風險
經驗風險:代表了分類類在給定樣本上的誤差,真實可以估計!
置信風險:代表了我們有多大程度上可以信任分類器在未知文字上分類的結果(泛化誤差界)抽象無法估計!

泛化誤差界的公式:
R(w)<=Remp(w)+O(n/h)
真實風險<=經驗風險+置信風險
SVM演算法要實現的目標就是上式!

統計學習的目標:從經驗風險最小化變為了尋求經驗風險與置信風險的和最小,即結構風險最小
SVM正是這樣一種努力最小化結構風險的演算法。

以下為演算法的原理分析:
首先SVM演算法是用來分類的,所以首先定義分類函式:
定義線性分類函式:g(x)=wx+b
其次,分類函式好壞的判斷需要一個評判指標,即用分類間隔來衡量。
定義一個樣本點到某個超平面的間隔:δi=yi(wxi+b)
對上式進行歸一化處理:
現在把w和b進行一下歸一化,即用w/||w||和b/||w||分別代替原來的w和b,那麼間隔就可以寫成
這裡寫圖片描述
又由於:
這裡寫圖片描述
分類的標準當然是使得誤分次數最少,即最小化誤分次數,相當於最小化||w||

另一種幾何解釋:
間隔:δ=y(wx+b)=|g(x)|
幾何間隔:這裡寫圖片描述

可以看出δ=||w||δ幾何
所以,最大化幾何間隔與最小化||w||完全一回事。

然而我們常用的方法並不是固定||w||的大小而尋求最大幾何間隔,而是固定間隔(例如固定為1),尋找最小的||w||。
尋找最小的||w||這件事,就可以用下面的式子表示:
這裡寫圖片描述
但實際上對於這個目標,我們常常使用另一個完全等價的目標函式來代替,那就是:
這裡寫圖片描述
加約束:
這裡寫圖片描述
我們前文提到過把間隔固定為1,這是指把所有樣本點中間隔最小的那一點的間隔定為1(這也是集合的間隔的定義,有點繞嘴),也就意味著集合中的其他點間隔都不會小於1,按照間隔的定義,滿足這些條件就相當於讓下面的式子總是成立:
yi[(w·xi)+b]≥1 (i=1,2,…,l) (l是總的樣本數)
但我們常常習慣讓式子的值和0比較,因而經常用變換過的形式:
yi[(w·xi)+b]-1≥0 (i=1,2,…,l) (l是總的樣本數)
因此我們的兩類分類問題也被我們轉化成了它的數學形式,一個帶約束的最小值的問題:
這裡寫圖片描述


從最一般的定義上說,一個求最小值的問題就是一個優化問題(也叫尋優問題,更文縐縐的叫法是規劃——Programming),它同樣由兩部分組成,目標函式和約束條件,可以用下面的式子表示:
這裡寫圖片描述
一共帶有p+q個約束條件,其中p個是不等式約束,q個是等式約束。
以上分析都是針對線性可分的情況!對於線性不可分的情況,又兩種不同的解決方案,來處理不同的分類問題,第一種方法利用核函式來進行函式的對映分析。第二種引入鬆弛變數和懲罰因子來構建軟間隔分類器!