1、介紹
它是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,即支持向量機的學習策略便是間隔最大化,最終可轉化為一個凸二次規划問題的求解。
2、求解過程
1、數據分類—SVM引入
假設在一個二維平面中有若干數據點(x,y),其被分為2組,假設這些數據線性可分,則需要找到一條直線將這兩組數據分開。這個將兩種數據分割開的直線被稱作分隔超平面(separating hyperplane),當其在更加高維的空間中為超平面,在當前的二維平面為一條直線。
這樣的直線可能存在很多條,則我們需要找到一條最優的直線。怎么定義這個最優直線呢?如果依此構建的分類器能夠在測試結果將測試數據分開,且數據點離這一決策邊界越遠,其結果將更可信。那么在該二維平面中,需要使得離分割超平面最近的點,其離分割面盡可能遠。
設這些點到分割面的距離用間隔(margin)表示,則我們需要最大化這些間隔,從而使得最后得到的分類器在測試數據上表現地更加健壯。
那么,什么是支持向量(support vector)呢?就是離分割超平面最近的那些點。在超平面兩側最近的點形成了間隔邊界,而超平面則處於這兩個間隔邊界的中心。
2、找到最大間隔
以二維平面為例。
在二維平面中的分割超平面為一條直線,我們將其表示為:
其也可以表示為:
我們可以把x,y看成在這二維平面上的某個數據點的兩個特征,那么這個二維平面也就是特征空間。這樣,重新定義其特征為x1,x2 ,對應系數為w1,w2,對於更高維次,則有xn,wn,於是我們可以把特征及其系數表示為WTX,其中W、X都是n維列向量。此時該超平面可表示為:
那么如何刻畫兩個不同的分類呢?我們設:
上式表示刻畫n維特征的數據的分類函數。顯然,如果g(X)=0,則在超平面上;其余數據將被該超平面分為2部分,不妨設使得g(X)>0的數據類別為1,g(X)<0的數據類別為-1.
函數間隔(函數距離)
我們定義函數間隔如下:
在超平面WTX+b=0確定的情況下,|WTX+b|可以能夠相對的表示數據X距離超平面的遠近。而WTX+b的符號與類標記y的符號是否一致表示分類是否正確。所以,γ的值越大,表示分類正確且距離超平面越遠,該模型越可信。(當γ的值>0時,即可表示對應的數據點分類正確)
因此,我們需要最大化最小間隔,設m為數據點個數:
但是,這里存在一個問題,即當W和b成比例的縮放時,超平面並沒有改變,但是函數間隔γ的取值也擴大2倍,意指通過最大化函數間隔沒有意義,因為任何成功划分訓練實例的超平面都可以使函數間隔無限大。
接下來我們將引入幾何間隔。
幾何間隔
定義幾何間隔如下:
此處y·(WTX+b)其實就相當於|y·(WTX+b)|(當該數據點被正確分類時)。其中||W||為L2范數:
其實,幾何間隔所描述的其實就是點到超平面的垂直距離。比如對於二維平面中ax+by+c=0這一直線,直線外一點(x1,y1)到該直線的距離為:
而7式只是將其擴展至高維平面。由此定義的需要的求解目標為:
也可以設最小幾何間隔為δ,變為以下形式:
其中2式和3式表達的意思相同。上式中的第三個式子等號成立的原因在於:
表示在m個數據點中找幾何間隔最小的,此時與
無關,可將其提出表達式。
因為幾何間隔與函數間隔差一個||W||的系數,可以設,Γ為最小函數間隔,即:
上式能夠保證找到的超平面距離兩個分類的數據點的集合的最小集合間隔相同。當W固定時,這時一個正樣本到這個平面的距離和一個負樣本到這個平面的距離之和的最小值也固定。對於相同的W、不同的b的超平面,其是互相平行的。不同的b會導致平面保持相同的“斜率”平移。假設這個平面從正負樣本的正中間往正樣本方向偏離一小段距離,那么可能是到正樣本的最小距離變小,到負樣本的最小距離變大,注意到是將最小間隔最大化,所以這個最小值還存在優化空間,並不是我們最后的最優的結果,所以從這個角度看,直線位於正中間是最優的。
3、目標化簡
為了簡化式11,我們可以令Γ=1,即將最小函數間隔設為1。設z為實際的函數最小間隔值,兩邊同除以z值,則,則相當於對WT、b進行了縮放,但對超平面的確定並沒有影響。該操作的實際意義是同時縮放WT、b讓距離超平面最近的那些樣本點的函數間隔為1(即支持向量),這樣調整后,不僅對原來的優化問題沒有影響,而且還能簡化計算。
因此優化問題變為:
既然距離超平面最近的那些數據點到超平面的距離為1,那么其他遠離超平面的點到超平面的函數間隔>1。
我們還可以將轉換為求解
,兩者等價,且便於之后的推導。因此,我們得到SVM的目標函數的基本公式:
此時問題轉換為凸優化問題(目標函數是二次的,約束條件是線性的,所以它是一個凸二次規划問題<QP問題>)。
4、拉格朗日乘子法
優化問題
在優化式11之前,需要先對優化問題做梳理。
1、無約束優化問題
該問題如下:
通過求導,使得導數為0的即為局部最小值。
2、等式約束優化問題
引入拉格朗日乘子:
拉格朗日條件如下:
即通過對L(x,λi)分別對x,λi求偏導,並使得偏導數為0。
3、不等式約束優化問題
引入KKT乘子μi:
其解需要滿足KKT條件:
若為最大化,則條件2變為:
4、最一般的優化問題
首先要介紹一般的最優化問題,即既有等式約束、又有不等式約束。
考慮以下問題:
引入拉格朗日乘子(針對等式約束)λi和KKT乘子(針對不等式約束)μj,得到廣義拉格朗日函數:
其中:
該函數的約束條件如下:
1、 Stationarity——梯度要求
若為最大化,則條件變為:
2、 Primal feasibility——原始約束條件
3、 Dual feasibility
4、 Complementary slackness(互補松弛條件)
SVM目標函數轉化
對於式11,我們先對不等式進行轉換:
引入KKT乘子αi,得到拉格朗日函數:
其需要滿足的KKT條件為:
1、梯度條件
分別對W,b求偏導:
2、KKT乘子需滿足條件:
3、松弛互補條件:
從上述條件可知:
即對應KKT乘子為0的數據點肯定為支持向量。
5、轉化對偶形式
原問題和對偶問題
介紹
假設原問題如式20中一般的優化問題所示,定義:
現在再定義:
則上式與式20等價。於是我們就把原始的約束問題表示為廣義拉格朗日函數的極小極大問題。其中p為最優值。
然后我們介紹其對偶問題(顛倒求極小和極大的順序),定義:
d為其最優值。現在的問題是d與p之間存在什么關系?
弱對偶定理
顯然,對任意的x,λ,μ:
對偶問題與原問題的最優解相等的充要條件
對於原始問題和對偶問題,假設函數f(x)和gj(x)是凸函數, hi(x)是仿射函數(最高次數為1的多項式函數。常數項為零的仿射函數稱為線性函數,可理解為形如y=ax+b的函數),且不等式約束gj(x)是嚴格可行的(嚴格可行即存在x,對於所有的i,都有gj(x)≤0),那么,x,λ,μ既是原始問題的最優解也是對偶問題的最優解的充要條件是:x,λ,μ滿足KKT條件。
SVM目標函數轉對偶
原SVM問題轉化為極小極大形式(等效形式):
其對偶形式為:
因為其滿足KKT條件,故:
因此我們先求解:
要使得上式最小,通過對W,b求偏導,令偏導數最小,得到和
。再將其代入上式得:
注意:
因此最后的優化目標函數為:
約束條件為:
當訓練得到α之后,由於:
由上式可以計算得到W,之后通過下式計算b:
或者通過支持向量來計算:
6、異常值outlier處理
當數據線性不可分時,或存在異常值outlier(原本為負樣例的數據點跑到正樣例中),此時若仍要尋找一個超平面把兩類的數據點完全分開,可能會使超平面傾斜、最小間隔變小,甚至找不到這樣一個超平面。而這些異常值可能本就屬於錯誤數據或噪聲,沒有必要使其一定划分到正確的邊界兩側(采取硬間隔分類)。
折中的方案是允許部分數據點在一定程度上位於間隔邊界內部,即其函數間隔小於1.
於是我們引入松弛因子ξi,表示允許樣本點在超平面的相對平移量:
因為松弛因子是非負的,因此最終的結果是要求間隔可以比1小。但是當某些點出現這種間隔比1小的情況時(這些點也叫離群點),意味着我們放棄了對這些點的精確分類,而這對我們的分類器來說是種損失。但是放棄這些點也帶來了好處,那就是使分類面不必向這些點的方向移動,因而可以得到更大的幾何間隔(在低維空間看來,分類邊界也更平滑)。
但是放棄我們需要平衡損失。原始的目標函數為:
而由忽略異常值造成的損失會使增大,我們需要加上損失量:
選擇第一種的稱為一階軟間隔分類器,第二種為二階軟間隔分類器,兩者沒有太大的區別。
再把損失加入目標函數中,需要一個懲罰因子C,表示離群點的權重,C越大表明離群點對目標函數影響越大,也就是越不希望看到離群點。這時候,間隔也會很小。我們采用第一種分類器:
最后原模型變為:
這樣,經過同樣的引入KKT乘子αi和βi:
轉化對偶形式:
因為:
我們可以得到αi新的約束條件,並約去βi:
因此,最后的優化目標為:
從上述條件結合其KKT條件可知:
所以離群點的KKT乘子為C,位於間隔邊界外的點的KKT乘子為0,屬於支持向量的點的KKT乘子范圍在(0,C)之間。但是在邊界上的點其可能是支持向量、離群點或其他點。
7、通過SMO算法優化α
簡介
根據我們最后的優化目標:
我們需要求出m個符合條件的最優的αi。
為了求解m個參數,如果不存在約束條件,可以通過坐標上升法,即固定其中其他參數,優化目標轉變為關於一個變量的極值問題,可通過求導計算得到當前最優值(極大或極小)下該選定參數的取值。之后通過迭代多次以達到優化目的。
然而,在該問題中,存在這一約束,如果選取一個αi且固定其他α,則當前選取的αi在該約束條件下已經是固定值。因此我們可以選取2個變量,固定其余m-2個變量,轉化為一個二元函數求解。
而SMO算法的核心在於將一個大的優化問題轉化為多個小優化問題來求解。即每次尋找2個αi,我們記做α1和α2,對這兩個αi進行優化。
具體步驟為:
1、通過啟發式方法尋找一對α1、α2。(有的提出簡化版SMO算法,即通過兩層遍歷全部數據集並限制最大迭代次數來確定α1、α2)。
2、固定除了α1、α2 之外的其他參數,確定目標函數取極值下的α1,α2 可通過由α1表示得到。
推導過程
轉為二元函數
為推導方便,設:
Ki,j表示列向量X(i) 和X(j)的點積(數量積).
假設已經有選好的2個變量,記為α1、α2 ,並把優化目標函數記為W(α1,α2 ),那么(注意 ):
我們對上式取負,則優化最大值問題變為優化最小值問題:
現在,我們的優化目標轉變為一個二元函數。
由於等式約束,我們得到下式:
其中ζ為常量(因為此時我們已固定除α1,α2之外的參數)。
兩邊同乘以y(1):
對α2求導
把代入得到的二元函數中:
其中這最后兩項為常數項,記為 yc:
W(α2)對α2求導,並令導函數為0,得:
α1,α2迭代關系式
假設上一次迭代的α1,α2記做α1*,α2*,則有:
於是我們得到新舊值之間的聯系。將其代入到α2導函數得到的等式中,得到:
同時,由於:
我們設:
因此:
注意此處的μ1,μ2為使用α1*,α2*計算得出。
帶回原式,得到:
我們記誤差值,則有:
於是我們便可以得到α2的迭代關系式:
則α1的迭代關系式為:
此時,我們已經找到使得導函數為0的α系數的迭代關系式,但是,這僅僅是通過導函數為0得到的,也就是說,這僅僅是極值點,不一定為最值點,有以下幾個問題:
1、取極值點的α位於定義域之外
2、最值點位於定義域邊界
當然,在約束問題中,所謂的定義域即取值的可行域。
同時,在迭代關系式中,分母為,這也剛好為W(α2)中平方項的系數。因此也需要對其進行討論。
判斷可行域
上面2式共同決定了α2的可行域:
因此,我們綜合上述情況,得知:
判斷系數:K1,1+K2,2-2K1,2
由前面推導過程可知,,而令導數為0,更新α2的值需要在K1,1+K2,2-2K1,2為正的情況下。
此處我們應當討論K1,1+K2,2-2K1,2不為正的情況。
1)K1,1+K2,2-2K1,2=0
此時W(α2)轉變為一次函數,更新時不用求導,只需看邊界值L,H,選取較小的那一個。而對於α1,則通過表達式來分析。
2)K1,1+K2,2-2K1,2<0
此時二次函數開口向下,最小值也是在可行域的邊界處取到。此時開口向下,當極值點在區間內時,最小值只能在端點處取,因為極值點處是最大的。而當極值點在區間外時,區間內一定是單調的,此時最小值也只能在端點處取。
如何根據邊界值L,H計算對應的函數值呢?
分別用α2的邊界值L,H代入,得到α1的兩個”邊界值” L',H',再把這兩對取值代入W(α1,α2)中,選擇值較小的進行更新。
計算b
每一輪更新α1,α2的同時,需要對b也要進行更新,因為b涉及到、誤差值
的計算。
設已經更新結束的α1,α2記為。
1)
此時我們可以推出:
由上述兩式可得:
由此知:
因為:
2)
經過和上步相似的推導過程:
α1、α2的選擇
之間所有的推導都基於α1、α2已經選取的情況下,那么我們現在討論如何選取合適的α1、α2,即從m個α值選取兩個α值。
在John C. Platt的論文《Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines》中采用一種啟發式方法:每次選擇KKT乘子的時候,優先選擇樣本0<αi<C的αi作優化(論文中稱為無界樣例),因為在界上(αi=0或αi=C)的樣例對應的系數αi一般不會更改。
ⅰ、外循環——尋找第一個α
此處在遍歷整個樣本數據集和遍歷滿足0<αi<C的數據集交替。
①遍歷一遍整個數據集,對存在下述情況的αi進行優化(即違反了KKT條件)
其中toler表示error-tolerant rate,即容錯率,也就是 的最小誤差,為人為規定,允許存在一定的誤差。
我們之前從約束條件和KKT條件得知:
我們應當選擇的所有αi及其對應的y(i)、X(i)應當都滿足上述條件。因此,我們需要優化的αi為不滿足上述條件的情況:
由於允許一定的誤差,故基本不會有數據點使得,因此不予考慮。
我們對這兩個條件進行分析:
1)對第一個條件:
由此違反KKT條件。
2)對第二個條件:
由此違反KKT條件。
②在上面對整個數據集遍歷一遍后,選擇那些參數0<αi<C的子集,檢查其是否違反KKT條件並進行優化。
③遍歷完子集后,重新開始①②,不斷在整個樣本數據集和遍歷滿足0<αi<C的數據集交替,直到在執行①和②時沒有任何修改即所有的αi都符合KKT條件則結束。
ⅱ、內循環——尋找第二個α
當我們選取了第一個α后,為了能快速收斂,希望第二個選取的α在優化后能有較大的變化。
而我們得知,α2的迭代關系式為,則新的α2與舊值之間的變化依賴於|E1-E2|。
①先在0<αi<C的集合中選擇能最大化|E1-E2|的α2。
②如果不存在(符合0<αi<C的集合為空),則在整個樣本數據集尋找。(通常隨機選擇一個)
③否則重新選取第一個α。
3、核函數的應用
對於非線性的情況,SVM 的處理方法是選擇一個核函數,通過將數據映射到高維空間,來解決在原始空間中線性不可分的問題。
此外,因為訓練樣例一般是不會獨立出現的,它們總是以成對樣例的內積形式出現,而用對偶形式表示學習器的優勢在為在該表示中可調參數的個數不依賴輸入特征的個數,通過使用恰當的核函數來替代內積,可以隱式得將非線性的訓練數據映射到高維空間,而不增加可調參數的個數(當然,前提是核函數能夠計算對應着兩個輸入特征向量的內積)。
核函數
根據模式識別理論,低維空間線性不可分的模式通過非線性映射到高維特征空間則可能實現線性可分,但是如果直接采用這種技術在高維空間進行分類或回歸,則存在確定非線性映射函數的形式和參數、特征空間維數等問題,而最大的障礙則是在高維特征空間運算時存在的“維數災難”(隨着維數的增加,計算量呈指數倍增長的一種現象)。采用核函數技術可以有效地解決這樣問題。
下面將舉個例子。
假如x,y∈R(3):
存在非線性映射:
則在特征空間的內積:
而其核函數記為:
如果設維度為n,直接用非線性映射計算內積將達到n2的復雜度;采用核函數,則可在n的復雜度完成計算。
也就是說,我們通過核函數,用低維的計算量得到了高維的結果,沒有增加計算復雜度的同時,得到了性質更好的高維投影。
Mercer定理
任何半正定的函數都可以作為核函數。
對於給定的任意向量集合:
任意兩個向量的核函數組成的矩陣為核矩陣:
對於任意的列向量z,根據內積的非負性,有:
因此如果是核函數,那么對於任意的樣本集合,得到的核矩陣為半正定矩陣。
mercer定理不是核函數必要條件,只是一個充分條件,即還有不滿足mercer定理的函數也可以是核函數。常見的核函數有高斯核,多項式核等等,在這些常見核的基礎上,通過核函數的性質(如對稱性等)可以進一步構造出新的核函數。
常見核函數
1)線性核函數(Linear Kernel)
使用線性核的核算法通常等價於它們的非核函數
2) 多項式核函數(Polynomial Kernel)
多項式核是一個非平穩的核。多項式內核非常適合所有訓練數據被規范化的問題。可調參數是斜率a,常數項c和多項式指數d。
3) 高斯核函數(Gaussian Kernel)
或者,其也能使用:
是一種徑向基核函數(Radial Basis Function)。該核函數被廣泛使用,但是這個核函數的性能對參數 十分敏感。如果過高,指數會表現得幾乎是線性的,高維的投影會開始失去它的非線性能量。另一方面,如果被低估,該函數將缺乏正則化,且決策邊界對訓練數據中的噪聲非常敏感。高斯核函數也有了很多的變種,如指數核,拉普拉斯核等。
4) 雙曲正切Sigmoid核函數
注:
雙曲切核也被稱為Sigmoid內核和多層感知器(MLP)內核。Sigmoid內核來自於神經網絡領域,在該領域中雙極性Sigmoid函數常被用作人工神經元的激活函數。
值得注意的是,使用sigmoid內核函數的SVM模型等價於一個兩層的感知器神經網絡。由於神經網絡理論的起源,這種內核在支持向量機方面相當流行。此外,盡管它只是有條件的肯定,但它在實踐中被發現表現良好。
在sigmoid內核中有兩個可調參數,即斜率a和截距常數c, a的一個通常值是1/n,其中n為數據維數。關於sigmoid核函數的更詳細的研究可以在Hsuan-Tien和Chih-Jen的作品中找到。
5)指數核函數(Exponential Kernel)
指數核函數就是高斯核函數的變種,它僅僅是將向量之間的L2距離調整為L1距離,這樣改動會對參數的依賴性降低,但是適用范圍相對狹窄。它也是一個徑向基函數核。
6)拉普拉斯核函數(Laplacian Kernel)
拉普拉斯核完全等價於指數核,唯一的區別在於前者對參數的敏感性降低,也是一種徑向基核函數。
7) ANOVA Kernel
ANOVA 核也屬於徑向基核函數一族,其適用於多維回歸問題。
8) 二次有理核(Rational Quadratic Kernel)
二次有理核函數在計算上比高斯核小,在使用高斯函數時,可以作為一種替代方法。這個核函數作用域雖廣,但是對參數十分敏感,慎用。
9)多元二次核(Multiquadric Kernel)
多元二次核可以替代二次有理核,和Sigmoid內核一樣,它也是一個非正定內核。
10) 逆多元二次核(Inverse Multiquadric Kernel)
基於這個核函數的算法,不會遇到核相關矩陣奇異的情況。與高斯核一樣,它的結果是一個具有全秩的核矩陣(Micchelli, 1986),從而形成一個無限維的特征空間。
11)Circular Kernel
圓形核來自於統計透視圖。它是各向同性靜止核的一個例子,在 中是正定的。
12) Spherical Kernel
球形核與圓形核相似,但在R3中正定。
13) Wave Kernel
適用於語音處理場景。為對稱的正半定。
14)Power Kernel
也稱為(未糾正的)三角核(triangular kernel)。它是一個標量不變核(Sahbi和Fleuret, 2004)的例子,而且也只是有條件的正定。
15)對數核函數(Log Kernel)
對於圖像來說,對數核似乎特別有趣,但它只是有條件的正定。
16) 樣條核(Spline Kernel)
其實際是指:
樣條核是由Gunn(1998)的論文所導出的一個分段三次多項式。
17) b樣條核(B-Spline (Radial Basis Function) Kernel)
在Bart Hamers的論文中,其為:
18) Bessel Kernel
其中J是第一種貝塞爾函數(Bessel function of first kind)。
然而,在Kernlab的R文檔中,Bessel核被認為是:
貝塞爾核在分數平滑的函數空間理論中眾所周知.
19)柯西核函數(Cauchy Kernel)
與柯西分布相似,函數曲線上有一個長長的尾巴,是一種長尾核,說明這個核函數的定義域很廣泛,言外之意,其可應用於原始維度很高的數據上。
20)卡方核函數(Chi-Square Kernel)
卡方核來自卡方分布。
它存在着如下變種:
這個核函數基於的特征不能夠帶有賦值,否則性能會急劇下降,如果特征有負數,那么就用下面這個形式:
21)直方圖交叉核(Histogram Intersection Kernel)
在圖像分類里面經常用到,比如說人臉識別,適用於圖像的直方圖特征,例如extended LBP。
22) 廣義直方圖交叉核(Generalized Histogram Intersection kernel)
廣義直方圖交叉核是基於圖像分類的直方圖交叉核構建的,但適用於更大的上下文環境。
23)Generalized T-Student Kernel
屬於mercer核,具有一個正半定核矩陣。
24)貝葉斯核(Bayesian Kernel)
貝葉斯核取決於被建模的問題。
25)小波核(Wavelet kernel)
其來源於小波理論。其中a和c分別是小波擴張和平移系數。
這個內核的平移不變版本(translation-invariant version)可以是:
h(x)中表示母波函數。在李章、周偉達和李誠的論文中,作者提出了一個可能的h(x):
它們被證明為admissible kernel function.
26)復合核函數
復合核函數也叫混合核函數,是將兩種或兩種以上的核函數放在一起使用,形成一種新的核函數。
如何選擇核函數
如果特征的數量大到和樣本數量差不多,則選用LR或者線性核的SVM;
如果特征的數量小,樣本的數量正常,則選用SVM+高斯核函數;
如果特征的數量小,而樣本的數量很大,則需要手工添加一些特征從而變成第一種情況。
SVM應用
在線性不可分的情況下,支持向量機首先在低維空間中完成計算,然后通過核函數將輸入空間映射到高維特征空間,最終在高維特征空間中構造出最優分離超平面,從而把平面上本身不好分的非線性數據分開。如圖所示,一堆數據在二維空間無法划分,從而映射到三維空間里划分:
而在我們遇到核函數之前,如果用原始的方法,那么在用線性學習器學習一個非線性關系,需要選擇一個非線性特征集,並且將數據寫成新的表達形式,這等價於應用一個固定的非線性映射,將數據映射到特征空間,在特征空間中使用線性學習器,因此,考慮的假設集是這種類型的函數:
是從輸入空間到某個特征空間的映射,這意味着建立非線性學習器分為兩步:
1、首先使用一個非線性映射將數據變換到一個特征空間F;
2、然后在特征空間使用線性學習器分類。
如果用內積表示,則:
核函數能夠讓其在特征空間直接計算內積,而且無需知道非線性映射的顯式表達式。因此目標函數轉化后的對偶形式應當改為:
4、利用結果預測
未使用核函數
利用算出的W或α和b來預測:
使用核函數
利用算出的α和b來計算: