1. 程式人生 > >SVM(二)從拉格朗日對偶問題到SVM

SVM(二)從拉格朗日對偶問題到SVM

2.1 拉格朗日對偶(Lagrange duality)

     先拋開上面的二次規劃問題,先來看看存在等式約束的極值問題求法,比如下面的最優化問題:

    clip_image001[9]    

    目標函式是f(w),下面是等式約束。通常解法是引入拉格朗日運算元,這裡使用clip_image003[14]來表示運算元,得到拉格朗日公式為

    clip_image004[6]    

    L是等式約束的個數。

    然後分別對w和clip_image003[15]求偏導,使得偏導數等於0,然後解出w和clip_image006[6]。至於為什麼引入拉格朗日運算元可以求出極值,原因是f(w)的dw變化方向受其他不等式的約束,dw的變化方向與f(w)的梯度垂直時才能獲得極值,而且在極值處,f(w)的梯度與其他等式梯度的線性組合平行,因此他們之間存線上性關係。

(參考《最優化與KKT條件》)

然後我們探討有不等式約束的極值問題求法,問題如下:

    clip_image007[6]    

    我們定義一般化的拉格朗日公式

clip_image008[6]

    這裡的clip_image010[50]clip_image012[14]都是拉格朗日運算元。如果按這個公式求解,會出現問題,因為我們求解的是最小值,而這裡的clip_image014[6]已經不是0了,若將clip_image010[51]調整成很大的正值,最後的函式結果是負無窮。因此我們需要排除這種情況,我們定義下面的函式:

    clip_image015[6]

    這裡的P代表primal。假設clip_image017[6]或者clip_image019[6],那麼我們總是可以調整clip_image010[52]clip_image012[15]來使得clip_image021[10]有最大值為正無窮。而只有g和h滿足約束時,clip_image021[11]為f(w)。這個函式的精妙之處在於clip_image023[6],而且求極大值。(只有ai=0,g(w)<0或者ai>0,g(w)=0值才會最大)

    因此我們可以寫作

    clip_image024[6]

這樣我們原來要求的min f(w)可以轉換成求clip_image026[10]了。

    clip_image027[6]

    我們使用clip_image029[6]來表示clip_image026[11]。如果直接求解,首先面對的是兩個引數,而clip_image010[53]也是不等式約束,然後再在w上求最小值。這個過程不容易做,那麼怎麼辦呢?

    我們先考慮另外一個問題clip_image030[6]

    D的意思是對偶,clip_image031[10]將問題轉化為先求拉格朗日關於w的最小值,將clip_image033[6]clip_image003[16]看作是固定值。之後在求clip_image031[11]最大值的話:

clip_image034[6]

這個問題是原問題的對偶問題,相對於原問題只是更換了min和max的順序,而一般更換順序的結果是Max Min(X) <= MinMax(X)。然而在這裡兩者相等。用clip_image036[6]來表示對偶問題如下:

    clip_image037[6]

下面解釋在什麼條件下兩者會等價

。假設f和g都是凸函式,h是仿射的(affine,clip_image038[6])。並且存在w使得對於所有的i,clip_image040[10]。在這種假設下,一定存在clip_image042[14]使得clip_image044[14]是原問題的解,clip_image046[6]是對偶問題的解。還有clip_image047[6]另外,clip_image042[15]滿足庫恩-塔克條件(Karush-Kuhn-Tucker, KKT condition),該條件如下:

    clip_image048[6]

所以如果clip_image042[16]滿足了庫恩-塔克條件,那麼他們就是原問題和對偶問題的解。讓我們再次審視公式(5),這個條件稱作是KKT dual complementarity條件。這個條件隱含了如果clip_image050[6],那麼clip_image052[10]。也就是說,clip_image052[11]時,w處於可行域的邊界上,這時才是起作用的約束。而其他位於可行域內部(clip_image054[6]的)點都是不起作用的約束,其clip_image056[6]。這個KKT雙重補足條件會用來解釋支援向量和SMO的收斂測試。

    這部分內容思路比較凌亂,還需要先研究下《非線性規劃》中的約束極值問題,再回頭看看。KKT的總體思想是將極值會在可行域邊界上取得,也就是不等式為0或等式約束裡取得,而最優下降方向一般是這些等式的線性組合,其中每個元素要麼是不等式為0的約束,要麼是等式約束。對於在可行域邊界內的點,對最優解不起作用,因此前面的係數為0。

2.2 線性可分

    重新回到SVM的優化問題:

    clip_image057[6]

    我們將約束條件改寫為:

    clip_image058[6]

    從KKT條件得知只有函式間隔是1(離超平面最近的點),對於在線上的點(clip_image062[6]),前面的係數clip_image060[14],對於其他的不在線上的點(clip_image064[6]),極值不會在他們所在的範圍內取得,因此前面的係數clip_image066[14],注意每一個約束式實際對應一個訓練樣本。

    看下面的圖:

clip_image067[6]

    實線是最大間隔超平面,假設×號的是正例,圓圈的是負例。在虛線上的點就是函式間隔是1的點,那麼他們前面的係數clip_image060[15],其他點都是clip_image066[15]。這三個點稱作支援向量。構造拉格朗日函式如下:    

    clip_image068[6]

    注意到這裡只有clip_image010[54]沒有clip_image012[16]是因為原問題中沒有等式約束,只有不等式約束。

    下面我們按照對偶問題的求解步驟來一步步進行,

    clip_image069[10]

首先求解clip_image070[10]的最小值,對於固定的clip_image010[55]clip_image070[11]的最小值只與w和b有關。對w和b分別求偏導數。

    clip_image071[6]

    clip_image072[6]

    並得到

    clip_image073[6]

    將上式帶回到拉格朗日函式中得到,此時得到的是該函式的最小值(目標函式是凸函式)

    代入後,化簡過程如下:

     

  最後得到

clip_image074[6]

     由於最後一項是0,因此簡化為

    clip_image075[6]

    這裡我們將向量內積clip_image076[6]表示為clip_image077[6]

此時的拉格朗日函式只包含了變數clip_image010[56]。然而我們求出了clip_image010[57]才能得到w和b。

    接著是極大化的過程clip_image069[11]

clip_image078[6]

    前面提到過對偶問題和原問題滿足的幾個條件,首先由於目標函式和線性約束都是凸函式,而且這裡不存在等式約束h。存在w使得對於所有的i,clip_image040[11]。因此,一定存在clip_image080[6]使得clip_image044[15]是原問題的解,clip_image082[10]是對偶問題的解。在這裡,clip_image010[58]就是求clip_image082[11]

    如果求出了clip_image010[59],根據clip_image083[6]即可求出w(也是clip_image044[16],原問題的解)。然後

    clip_image084[6]

即可求出b。即離超平面最近的正的函式間隔要等於離超平面最近的負的函式間隔

    關於上面的對偶問題如何求解,將在SMO演算法一章中來闡明。

    這裡考慮另外一個問題,由於前面求解中得到

    clip_image086[6]

    我們通篇考慮問題的出發點是clip_image088[6],根據求解得到的clip_image010[60],我們代入前式得到

    clip_image089[6]

    也就是說,以前新來的要分類的樣本首先根據w和b做一次線性運算,然後看求的結果是大於0還是小於0,來判斷正例還是負例。現在有了clip_image010[61],我們不需要求出w,只需將新來的樣本和訓練資料中的所有樣本做內積和即可。那有人會說,與前面所有的樣本都做運算是不是太耗時了?其實不然,我們從KKT條件中得到,只有支援向量的clip_image060[16],其他情況clip_image066[16]。因此,我們只需求新來的樣本和支援向量的內積,然後運算即可。

2.3 線性不可分

我們之前討論的情況都是建立在樣例線性可分的假設上,當樣例線性不可分時,我們可以嘗試使用核函式來將特徵對映到高維,這樣很可能就可分了。然而,對映後我們也不能100%保證可分。那怎麼辦呢,我們需要將模型進行調整,以保證在不可分的情況下,也能夠儘可能地找出分隔超平面。

看下面兩張圖:

clip_image001

可以看到一個離群點(可能是噪聲)可以造成超平面的移動,間隔縮小,可見以前的模型對噪聲非常敏感。再有甚者,如果離群點在另外一個類中,那麼這時候就是線性不可分了。

這時候我們應該允許一些點遊離並在在模型中違背限制條件函式間隔小於1)。我們設計得到新的模型如下(也稱軟間隔):

clip_image002

引入非負引數clip_image004後(稱為鬆弛變數),就允許(1)某些樣本點的函式間隔小於1,即在最大間隔區間裡面(2)函式間隔是負數,即樣本點在對方的區域中。而放鬆限制條件後,我們需要重新調整目標函式,以對離群點進行處罰,目標函式後面加上的clip_image006就表示離群點越多,目標函式值越大,而我們要求的是儘可能小的目標函式值。這裡的C是離群點的權重,C越大表明離群點對目標函式影響越大,也就是越不希望看到離群點。我們看到,目標函式控制了離群點的數目和程度,使大部分樣本點仍然遵守限制條件。

模型修改後,拉格朗日公式也要修改如下:

clip_image008

這裡的clip_image010clip_image012都是拉格朗日乘子,回想我們在拉格朗日對偶中提到的求法,先寫出拉格朗日公式(如上),然後將其看作是變數w和b的函式,分別對其求偏導,得到w和b的表示式。然後代入公式中,求帶入後公式的極大值。整個推導過程類似以前的模型,這裡只寫出最後結果如下:

clip_image013

此時,我們發現沒有了引數clip_image004[1],與之前模型唯一不同在於clip_image010[1]又多了clip_image015的限制條件。需要提醒的是,b的求值公式也發生了改變,改變結果在SMO演算法裡面介紹。先看看KKT條件的變化:

clip_image016

上面式子分別表明在兩條間隔線外的樣本點前面的係數為0,離群樣本點前面的係數為C,而支援向量(也就是在超平面兩邊的最大間隔線上)的樣本點前面係數在(0,C)上通過KKT條件可知,某些在最大間隔線上的樣本點也不是支援向量,相反也可能是離群點。

相關推薦

SVM(對偶問題到SVM

2.1 拉格朗日對偶(Lagrange duality)      先拋開上面的二次規劃問題,先來看看存在等式約束的極值問題求法,比如下面的最優化問題:              目標函式是f(w),下面是等式約束。通常解法是引入拉格朗日運算元,這裡使用來表示運算元

詳解SVM系列(對偶

拉格朗日函式有什麼用? 在約束最優化問題中,常常利用拉格朗日對偶性將原始問題轉換為對偶問題,通過解對偶問題而得到原始問題的解。 原始問題: 假設 f (

SVM支援向量機-乘子與對偶問題(1

對於支援向量機,我們首先要關注的幾個點就是間隔,超平面,支援向量,再深入的話就是對偶問題,拉格朗日對偶問題,凸優化,和 KKT條件,我們先從基本的間隔,超平面,支援向量說起。1.SVM基礎模型給定訓練集

對偶性(KKT

sum 問題 clas 4.4 我們 line 約束 分別是 lin 1. 前言 在約束最優化問題中,常常利用拉格朗日對偶性將原始問題轉化為對偶問題,通過求解對偶問題獲得原始問題的解。該方法應用在許多統計學方法中,如最大熵模型、支持向量機。 2. 原始問題 假設\(f(x)

機器學習數學原理(5——廣泛乘子法

機器學習數學原理(5)——廣泛拉格朗日乘子法 這一篇部落格針對的是有約束的凸優化問題,主要是為後面的最優間隔分類器以及其演化的SVM(支援向量機,Support Vector Machine)演算法作鋪墊。Andrew Ng在講解最優間隔分類器時運用了廣泛拉格朗日乘子法但並沒有講的十

SVM支援向量機-對偶演算法的初解

許多地方得SVM講得都很晦澀,不容易理解,最近看到一篇不錯的博文寫得很好,同時加上自己的理解,重新梳理一下知識要點 http://blog.csdn.net/zouxy09/article/details/17291543 一、引入 SVM是個分類器。我們知道,分類的目的

對偶問題(李航《統計學習方法》

思路 具體的公式就不黏貼了,只把大體思路記錄下來,方便本人及有需要的人查閱。具體講解可以去看李航的《統計學習方法》。 首先給出一個原始問題,原始問題一般都是帶約束條件的,第一步就是利用拉格朗日乘子將原始問題轉化為無約束最優化問題。 將x視作常量,α,β

實驗:Lagrange插值法之C語言程式碼

拉格朗日插值多項式的演算法就比前面的簡單些,30行程式碼左右可以搞定,不過為了通俗易懂,這裡我寫了比較多的註釋.題目:已知下列函式表: x | 0.56160 | 0.56280 | 0.56401 | 0.56521 | y

對偶

class 機器 引入 nbsp beta blog pos max 必要條件 整理自統計機器學習附錄C。 目錄: 原始問題 對偶問題 原始問題與對偶問題的關系 1、原始問題 $\underset{x \in R^n} {min} \quad f(x)$ $s.

對偶

向量 拉格朗日乘數法 9.png 最優解 不等式 問題: 其中 bubuko 應用 拉格朗日對偶 對偶是最優化方法裏的一種方法,它將一個最優化問題轉換成另外一個問題,二者是等價的。拉格朗日對偶是其中的典型例子。對於如下帶等式約束和不等式約束的優化問題:

為什麼支援向量機要用對偶演算法來解最大化間隔問題

這樣: 就可以由求特徵向量w轉化為求比例係數a, 就可以匯出含有內積形式的目標函式, 就可以實現對內積後的gram矩陣使用核函式,以達到非線性分類的目的。 簡而言之,就是以上。 有人回覆:嗯,這是為了方便引入核函式。如果是線性可分問題,那麼直接用一般解QP問題的方法是否更好? 個人意見:支援向量機實現非線性的

ML—對偶和KKT條件

Andrew Zhang Tianjin Key Laboratory of Cognitive Computing and Application Tianjin University Oct

《統計學習方法》附錄C對偶性學習筆記

最優化問題有三種形式:(1)無約束優化問題;(2)有等式約束的優化問題;(3)有不等式約束的優化問題。這部分是解決第三種最優化問題,即有不等式約束的優化問題。 一、原始問題:極小極大問題 假設f(x),ci(x),hj(x)是定義在Rn上的連續可微函式,

解密SVM系列(一:關於乘子法和KKT條件

寫在之前 支援向量機(SVM),一個神祕而眾知的名字,在其出來就受到了莫大的追捧,號稱最優秀的分類演算法之一,以其簡單的理論構造了複雜的演算法,又以其簡單的用法實現了複雜的問題,不得不說確實完美。 本系列旨在以基礎化的過程,例項化的形式一探S

SVM演算法(深入理解乘子法與KKT條件的證明

SVM應該是一個應用到數學知識很多的AI演算法,關於KKT的證明花了很長時間,裡面涉及到大量線性代數的知識。 對偶關係、方向導數與梯度的關係、梯度方向與構造的可取區域的關係、拉格朗日乘子引入的真實含義等等。 (一)間隔與支援向量 SVM(support vector

bzoj2876 [NOI2012]騎行川藏(乘數法

輸入輸出格式 int 至少 lin 答案 就是 math spa space 題目描述 蛋蛋非常熱衷於挑戰自我,今年暑假他準備沿川藏線騎著自行車從成都前往拉薩。川藏線的沿途有著非常美麗的風景,但在這一路上也有著很多的艱難險阻,路況變化多端,而蛋蛋的體力十分有限,因此在每天的

尋找“最好”(3——函數和泛函的乘數法

big 我們 -a 都是 使用 col 可能 條件 解釋 拉格朗日乘數法   大多數的優化問題都會加入特定的約束,而不僅僅是指定起點和終點,此時需要更好的辦法去解決優化問題,拉格朗日乘數法正是一種求約束條件下極值的方法。   簡單地說,拉格朗日乘數法(又稱為拉格朗日乘數法)

CodeForces - 813C The Tag Game(乘數法,限制條件求最值

The int main fixed 方法 情況 upper typedef 題目 【傳送門】http://codeforces.com/problemset/problem/813/C 【題意】給定整數a,b,c,s,求使得 xa yb zc值最大的實數 x,y,z

次插值法C語言版

數值表是這樣的 X:0.46,0.47,0.48,,,,,,, Y:0.4846555,0.4937452,0.5027498,,,,,, 由於是二次插值法,只需要三組XY資料 程式碼如下: #include "stdafx.h" #include "iostre

2018牛客網暑期ACM多校訓練營(第一場F.Sum of Maximum(組合數學+插值)

題目連結:https://www.nowcoder.com/acm/contest/139#question 轉載出處:http://tokitsukaze.live/2018/07/19/2018niuke1.F/   程式碼: #include <bits/