在上篇文章《Support Vector Machine(1):線性可分集的決策邊界》中,咱們最後獲得,求SVM最佳Margin的問題,轉化爲了以下形式:html
到這一步後,我我的又花了很長的時間去查閱資料,由於數學較差的緣由,理解起來至關慢,不過探索的樂趣也就在於不斷的打破瓶頸向前,OK繼續。上述的問題等價於:算法
然後咱們引入廣義拉格朗日函數,利用拉格朗日對偶性來求解此問題。首先明確一下,咱們作這些工做的目的是,消去約束條件,爲了好求解問題。廣義拉格朗日函數爲:函數
上式分爲兩部分,拉格朗日前輩的思路是,讓後一項達到最大值,而後固定住,則問題等價於求前一項的最小值。既然咱們想要消去條件(第二項),那麼就要證實條件是沒用的。也就是說,不管給不給出,這個條件都會成立,那必然就能夠捨棄!因此說來,咱們考慮,這個世界上只存在兩種可能:學習
首先,咱們考慮<1的狀況,即不知足原問題的條件,則廣義拉格朗日函數的第二項,其最大值會趨於無窮,那麼咱們無法求該式子的最小值,這個條件也就會被放棄!而在大於等於一的狀況下,函數的第二項會趨向於0,也就是說,當咱們求整個公式的最小值時,會自然的選擇知足條件的一側,從而將原問題轉化爲:url
而後咱們考慮下一個問題,對偶。剛纔,咱們先把着眼點放在第二項上,將其最大化,而後再將第一項最小化從而轉化了原問題。那麼,若是咱們再看一下這個公式:若是將alpha視爲常量(取爲alpha'),而後將w和b做爲變量來最小化這個函數,可知第二項小於等於第一次咱們推導的公式。爲何,由於剛纔咱們把第二項作了max,而如今倒是取爲alpha',max>=any。也即:spa
如今肯定了w和b,咱們再將alpha'來作變換,取最大值,可知:.net
由此獲得拉格朗日對偶問題(Lagrange Dual Problem)。orm
在通常條件下,≤
,但在某些特殊狀況下,兩者倒是等價的,這種狀況叫作強對偶。而咱們求解SVM的最佳邊界,就要用強對偶下的KKT(Karush–Kuhn–Tucker conditions)條件來完成。KKT條件以下:htm
在第三個條件中,咱們若是回想,g(w)是什麼?能夠依稀記得:blog
也就是說,此處令alpha>0即g(w)=0的解,是在咱們的margin(s)上的,即它們就是support vectors
求解步驟:
一、固定住alpha,對w和b分別求偏導數,讓其等於0:
帶回以前的L,獲得:
推導過程以下:
必定要注意x是轉置的。爲何a和y不轉置?由於a是常數呀,y呢?y是分類呀,-1或者1,因此無需轉置。則問題轉化爲:
利用SMO繼續求解的過程,請見:SMO算法
---------------------------------------------------------------------------------------------------------------------------------------
聲明幾點:
一、要特別感謝這篇文章:簡易解說拉格朗日對偶(Lagrange duality),特別喜歡這種平易近人的數學講解。
二、支持向量機通俗導論寫的至關詳盡,我的拜讀了不下20遍,依然在繼續學習中。
三、李航老師的《統計學習方法》中,也講的很透徹。
我是個看到相似‘拉格朗日’這種字眼就懼怕的人,拜謝前人的智慧和分享精神。