SVM支援向量機-拉格朗日乘子與對偶問題(1)
對於支援向量機,我們首先要關注的幾個點就是間隔,超平面,支援向量,再深入的話就是對偶問題,拉格朗日對偶問題,凸優化,和 KKT條件,我們先從基本的間隔,超平面,支援向量說起。
1.SVM基礎模型
給定訓練集D={(x1,y1),(x2,y2)...(xn,yn)},yi∈{-1,1},例如下面圖中的點,藍線左上方的6個點對應1類,右下方的6個點對應-1類,基於資料分類的思想,如果我們想把兩類資料分開,顯然藍線不是唯一的選擇,我們有無數條直線可以選擇將兩類資料點分開,這些劃分資料的直線我們統稱為劃分超平面,但是這麼多劃分超平面,我們的目標是要尋找最優的劃分超平面。
直觀上看,我們應該找兩類樣本間最“正”的劃分超平面,就像圖中藍線所示,因為該超平面對訓練樣本的區域性擾動“抗干擾性”最好,也就是說,這個劃分超平面所產生的分類效果是最好的,對未見的例子的泛化能力也最強。
在樣本空間中,超平面可以通過線性方程來描述:
其中w=(w1,w2,w3...,wd)為法向量,決定了超平面的方向,b為位移項(截距項),決定了超平面與原點之間的距離,顯然,劃分超平面可被法向量w和位移b決定,下面將該平面記為(w,b),則樣本中任意x到超平面(w,b)的距離為:
假設超平面能將樣本正確分類,即對於(xi,yi)∈ D,若yi=+1,則,
若yi=-1,則.
這裡我們令:
(式1.1)
即距離超平面正向距離大於1判定為1類別,距離超平面負向距離大於1的判定為-1類別。如上圖所示,標記紅圈的四個點使等式成立,他們也被稱為“支撐向量”(support vector),兩個異類支援向量到超平面的距離之和:
稱為“間隔”.
支援向量機的目標就是找到具有“最大間隔”的劃分超平面,也就是要找滿足(式1.1)中的w和b,使得距離γ最大,即:
s.t.
為了最大化間隔,僅需最大化,等價於最小化,所以上式可改寫為:
s.t. (式1.2)
這就是SVM最基礎的模型。
2.拉格朗日乘子法與對偶問題
我們希望求解式(式1.2)得到最大間隔劃分超平面對應的模型:
其中w,b是模型引數,這裡我們使用拉格朗日乘子法得到其對偶問題,從而高效的求出結果,下面就看一下什麼是拉格朗日乘子法和對偶問題。
1)lagrange乘子法
拉格朗日乘子法是一種尋找多元函式在一組約束下的極值的方法,通過引入拉格朗日乘子,可將有d個變數與k個約束條件的優化問題轉換為具有d+k個變數的無約束優化問題。
考慮一個優化問題,假設x為d維,欲尋找x的某個取值,是目標函式f(x)最小且滿足g(x)=0的約束,從幾何角度看,該問題的目標是在由方程g(x)=0,確定的d-1維曲面上(因為g(x)=0的約束,在d-1個數據確定後,可以通過函式得到最後一個數據,所以是d-1維,類似於概率統計裡的自由度)尋找使目標函式f(x)最小化的點,此時不難得出結論:
·對於約束曲面上的任意點x,該點的梯度正交於約束曲面
·對於最優點,目標函式在該點的梯度正交於約束曲面
由此可知,在最優點,梯度,的方向必相同或相反,即存在λ≠0使得:
(式2.1)
λ稱為拉格朗日乘子,定義拉格朗日函式:
(式2.2)
對(式2.2)函式求導即得到(式2.1),於是原約束問題可轉化為對拉格朗日函式L(x,λ)的無約束問題。
2)KKT條件
拉格朗日乘子法的幾何意義即在等式g(x)=0或在不等式約束g(x)≤0下最小化目標函式f(x),紅色曲線表示g(x)=0構成的曲面,陰影部分的紫色即為g(x)<0的部分.
情況1 g(x)<0 :
g(x)<0時,對f(x)求極值相當於閉區間求極值,最值點即為極值點,令λ=0,直接對f求梯度即可得到極值。
情況2 g(x) = 0 :
g(x) = 0時,說明極值點在邊界取到,即g(x)<0內的點值都大於邊界,梯度的定義是向函式值增加最快的方向,所以f的梯度與g的梯度相反,從而存在常數λ>0,使得:
綜合情況1和情況2,我們得到KKT條件:
通俗意義理解KKT條件的話就是目標函式在約束條件下取得極值的充要條件,也就是目標函式在約束條件下取得極值時對應的x,λ必須滿足KKT條件,反之亦然。
3)多約束問題推廣
將上述做法推廣到m個等式約束和n個不等式約束,且可行域非空的優化問題。
s.t.
引入拉格朗日乘子λ=(λ1,λ2,...,λm).T , u=(u1,u2,...,un).T, 相應的拉格讓日函式為:
由不等式約束引入KKT條件(j=1,2,...,n):
一個優化問題可以從兩個角度考察,即主問題和對偶問題,對於優化問題而言,常通過將拉格朗日乘子L(x,λ,u)求導並令為0,來獲得對偶函式的表達形式。下面就看一下支援向量機如何通過拉格朗日乘子法轉化為對偶問題,從而求解最優超平面。
3.支援向量機的對偶問題解決
先看一下支援向量機的目標函式與約束函式:
s.t.
對每條約束新增拉格朗日乘子αi≥0,則該問題的拉格朗日函式可寫為:
其中α=(α1,α2,...,αm),令L(w,b,α)對w和b求偏導為0可得(此處涉及到矩陣求導):
將上式帶入拉格讓日函式中w和b消去:
從而得到對偶問題:
s.t .
解出α後,通過
即可得到w,b的求解通過任一支援向量即可求出,因為在支援向量處,滿足,現在我們已經求出w,xi,yi也已知,所以也可以順利求出b,這樣引數w,b全部求出,我們的最優超平面也就被w和b所限定。根據 上文多約束推廣的KKT條件,推出支援向量機優化問題的KKT條件:
總結:
通俗來講,對偶問題就是使求解更加高效且目標函式值不變,通過先消去w,b,得到關於α的函式,然後單獨計算 α,通過得到的α反求w,b,最後獲得超平面的引數,相比於先對α的不等式約束進行計算,對偶的方式使得計算更加便捷。另外KKT條件就是在約束下求得目標函式極值時αi滿足的條件,只有滿足了kkt條件,才算是滿足了目標函式和約束函式,因此之後介紹的計算迭代演算法也是基於KKT條件,通過不斷修改不滿足KKT條件的α,使其滿足KKT條件,從而求出目標函式的最優值。下篇文章將主要推導一種計算w和b的高效演算法-SMO演算法,看看實際中如何通過對偶問題公式推出α,從而由α推出w和b.本文主要參考西瓜書,有問題歡迎大家交流~