有些學習方法(如感知機)只須要找到任一線性分界面便可,而另外一些方法(如NB)則須要按照某個準則找到最優的線性分界面。對於SVM而言,它定義的準則是尋找一個離數據點最遠的決策面。
html
SVM算法的數學原理相對比較複雜,可是思想比較簡單,就是經過某種核函數,將數據在高維空間裏尋找一個最優超平面,可以將兩類數據分開。算法
從決策面到最近數據點的距離決定了分類器的間隔,這種構建方法意味着SVM的決策函數徹底由部分的數據子集所肯定,而且這些子集定義了分界面的位置。這些子集被稱爲支持向量(support vector)。
函數
例子:學習
要用一條直線,將下圖中黑色的點和白色的點分開,很顯然,圖上的這條直線就是咱們要求的直線之一(能夠有無數條這樣的直線)。優化
令黑色的點 類= -1, 白色的點 類 = +1spa
sgn表示符號函數,當f(x) > 0的時候,sgn(f(x)) = +1, 當f(x) < 0的時候sgn(f(x)) = –1。htm
Classifier Boundary就是f(x),紅色和藍色的線(plus plane與minus plane)就是support vector所在的面,紅色、藍色線之間的間隙就是咱們要最大化的分類間的間隙。blog
當支持向量肯定下來的時候,分割函數就肯定下來了,兩個問題是等價的。獲得支持向量,還有一個做用是,讓支持向量後方那些點就不用參與計算了。get
給出咱們要優化求解的表達式:博客
min ||w||^2,這個式子可讓函數更平滑,之因此說更加平滑了,我認爲是由於平方的做用使得w表示的特徵更加明顯從而更易區分,因此SVM是一種不太容易over-fitting的方法。
原問題,加上一些限制條件:
後面的s.t. 限制條件有多個,對應着樣本的個數。
在求解上式最優解前,先來看看拉格朗日乘子法。
探討不等式約束的極值問題求法,問題以下:
定義1:通常化的拉格朗日公式:
這裏的α和β都是拉格朗日乘子,要求上式的最小值,先看看定義2.
定義2:
p表明primal原始的。
假設gi(w)>0或者hi(w)≠0,所以能夠經過調整α和β來使得Θp(w)有最大值爲無窮;而只有當知足約束gi(w)≤0 and hi(w)=0時,Θp(w)能夠f(w)。以下圖:
所以,咱們要求的min_w f(w) 能夠轉換爲 min_w Θp(w) 。
要求解min_w Θp(w),首先是有2個參數w和α,其次先求關於α的最大值,考慮到α也是不等式約束,而後再在w上求最小值,難度比較大。那先看看定義3。
定義3:
D表明dual對偶,ΘD(w)將問題從原先的先求關於α的最大值再求關於w的最小值,轉變爲先求關於w的最小值再求關於α的最大值,
這個問題是原問題的對偶問題,相對於原問題只是更換了min和max的順序,並且通常更換順序的結果是
上式的相關證實,請參考:http://www.cnblogs.com/zhengyuhong/p/3590635.html 對該關係解釋的很詳細很清楚。
下面解釋下二者在什麼狀況下是等價的,也就是知足KKT(Karush-Kuhn-Tucker, KKT condition)條件。
該條件以下:
因此,若是w, α, β知足上述的幾個條件,那麼他們就是原問題和對偶問題的解。
其中,公式(5)這個條件能夠理解爲若是α>0,那麼gi(w)=0,也就是說w處於可行域(gi(w)≤0)的邊界上,也就是所說的支持向量;若是α=0,那麼gi(w)<0,也就是位於可行域的內部,也就不是所說的支持向量。
講了這麼多定義,回到SVM目標函數求最優解的問題上來。
原問題:
利用拉格朗日乘子法,轉換爲拉格朗日函數:
下面按照對偶問題的求解步驟進行:
對上式,沒有β緣由是沒有等式約束條件,首先求解L(w, b, α)最小值,只和w、b有關係,所以對w和b分別求偏導,獲得:
第一個式子變換下獲得:
將其代回到拉格朗日函數,並將其化簡:
最後獲得:
因爲最後一項爲0,簡化爲:
拉格朗日函數如今只包含α變量,而咱們求出了α也就獲得了w和b。
接着,是極大化過程:
對於這個問題的求解,須要藉助SMO(序列最小優化算法)等算法。
本文參考的博客:
http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
理解SVM的三層境界:
http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495537.html
http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495689.html 幫助挺大的,講的易懂
http://www.cnblogs.com/liqizhou/archive/2012/05/11/2495788.html
拉格朗日乘子和KKT條件: