SVM
1. 基本概念
支持向量機(Support Vector Machine, SVM)的基本模型是在特徵空間上找到最佳的分離超平面使得訓練集上正負樣本間隔最大。SVM是用來解決二分類問題的有監督學習算法,在引入了核方法以後SVM也能夠用來解決非線性問題。
通常SVM有下面三種:git
- 硬間隔支持向量機(線性可分支持向量機):當訓練數據線性可分時,可經過硬間隔最大化學得一個線性可分支持向量機。
- 軟間隔支持向量機:當訓練數據近似線性可分時,可經過軟間隔最大化學得一個線性支持向量機。
- 非線性支持向量機:當訓練數據線性不可分時,可經過核方法以及軟間隔最大化學得一個非線性支持向量機。
2. 硬間隔支持向量機
給定訓練樣本集
D={(x1→,y1),(x2→,y2),…,(xn→,yn)}
,
yi∈{+1,−1}
,
i
表示第
i
個樣本,
n
表示樣本容量。分類學習最基本的想法就是基於訓練集
D
在特徵空間中找到一個最佳劃分超平面將正負樣本分開,而SVM算法解決的就是如何找到最佳超平面的問題。超平面可經過以下的線性方程來描述:github
w⃗ Tx⃗ +b=0(1)
其中
w⃗
表示法向量,決定了超平面的方向;
b
表示偏移量,決定了超平面與原點之間的距離。
對於訓練數據集
D
假設找到了最佳超平面
w∗→x⃗ +b∗=0
,定義決策分類函數
f(x⃗ )=sign(w∗→x⃗ +b∗)(2)
該分類決策函數也稱爲線性可分支持向量機。
在測試時對於線性可分支持向量機能夠用一個樣本離劃分超平面的距離來表示分類預測的可靠程度,若是樣本離劃分超平面越遠則對該樣本的分類越可靠,反之就不那麼可靠。
那麼,什麼樣的劃分超平面是最佳超平面呢?
對於圖1有A、B、C三個超平面,很明顯應該選擇超平面B,也就是說超平面首先應該能知足將兩類樣本點分開。
圖1
對於圖2的A、B、C三個超平面,應該選擇超平面C,由於使用超平面C進行劃分對訓練樣本局部擾動的「容忍」度最好,分類的魯棒性最強。例如,因爲訓練集的侷限性或噪聲的干擾,訓練集外的樣本可能比圖2中的訓練樣本更接近兩個類目前的分隔界,在分類決策的時候就會出現錯誤,而超平面C受影響最小,也就是說超平面C所產生的分類結果是最魯棒性的、是最可信的,對未見樣本的泛化能力最強。
圖2
下面以圖3中示例進行推導得出最佳超平面。
圖3
空間中超平面可記爲
(w⃗ ,b)
,根據點到平面的距離公式,空間中任意點
x⃗
到超平面
(w⃗ ,b)
的距離可寫爲:
r=w⃗ x⃗ +b||w⃗ ||(3)
假設超平面
(w⃗ ,b)
能將訓練樣本正確分類,那麼對於正樣本一側的任意一個樣本
(xi→,yi)∈D
,應該須要知足該樣本點往超平面的法向量
w⃗
的投影到原點的距離大於必定值
c
的時候使得該樣本點被預測爲正樣本一類,即存在數值
c
使得當
w⃗ Txi→>c
時
yi=+1
。
w⃗ Txi→>c
又可寫爲
w⃗ Txi→+b>0
。在訓練的時候咱們要求限制條件更嚴格點以使最終獲得的分類器魯棒性更強,因此咱們要求
w⃗ Txi→+b>1
。也能夠寫爲大於其它距離,但均可以經過同比例縮放
w⃗
和
b
來使得使其變爲1,所以爲計算方便這裏直接選擇1。一樣對於負樣本應該有
w⃗ Txi→+b<−1
時
yi=−1
。即:
{w⃗ Txi→+b≥+1,w⃗ Txi→+b≤−1,yi=+1yi=−1(4)
亦即:
yi(w⃗ Txi→+b)≥+1(5)
如圖3所示,距離最佳超平面
w⃗ x⃗ +b=0
最近的幾個訓練樣本點使上式中的等號成立,它們被稱爲「支持向量」(support vector)。記超平面
w⃗ x⃗ +b=+1
和
w⃗ x⃗ +b=−1
之間的距離爲
γ
,該距離又被稱爲「間隔」(margin),SVM的核心之一就是想辦法將「間隔」
γ
最大化。下面咱們推導一下
γ
與哪些因素有關:
記超平面
w⃗ x⃗ +b=+1
上的正樣本爲
x+→
,超平面
w⃗ x⃗ +b=−1
上的負樣本爲
x−→
,則根據向量的加減法規則
x+→
減去
x−→
獲得的向量在最佳超平面的法向量
w⃗
方向的投影即爲「間隔」
γ
:
γ=(x+→−x−→)w⃗ ||w⃗ ||=x+→w⃗ ||w⃗ ||−x−→w⃗ ||w⃗ ||(6)
而
w⃗ x+→+b=+1
,
w⃗ x−→+b=−1
,即:
{w⃗ x+→=1−bw⃗ x+→=−1−b(7)
將(7)帶入(6)可得:
γ=2||w⃗ ||(8)
也就是說使兩類樣本距離最大的因素僅僅和最佳超平面的法向量有關!
要找到具備「最大間隔」(maximum margin)的最佳超平面,就是找到能知足式(4)中約束的參數
w⃗
、
b
使得
γ
最大,即:
{maxw⃗ ,b2||w⃗ ||s.t.yi(w⃗ Txi→+b)≥+1,i=1,2,…,n(9)
顯然(9)等價於
{minw⃗ ,b12||w⃗ ||2s.t.yi(w⃗ Txi→+b)≥+1,i=1,2,…,n(10)
這就是SVM的基本型。
2.1 拉格朗日對偶問題
根據SVM的基本型求解出
w⃗
和
b
便可獲得最佳超平面對應的模型:web
f(x⃗ )=sign(w⃗ x⃗ +b)(11)
該求解問題自己是一個凸二次規劃(convex quadratic propgramming)問題,能夠經過開源的優化計算包進行求解,可是這樣就沒法體現SVM的精髓,咱們能夠將該凸二次規劃問題經過拉格朗日對偶性來解決。
對於式(10)的每條約束添加拉格朗日乘子
αi≥0
,則該問題的拉格朗日函數可寫爲:
L(w⃗ ,b,α⃗ )=12||w⃗ ||2−∑i=1nαi(yi(w⃗ Txi+b)−1)(12)
其中
α⃗ =(α1,α2,…,αn)
分別是對應着各個樣本的拉格朗日乘子。
將
L(w⃗ ,b,α⃗ )
對
w⃗
和
b
求偏導並將偏導數等於零可得:
{w⃗ =∑ni=1αiyixi→∑ni=1αiyi=0(13)
將(13)帶入(12)消去
w⃗
和
b
就可獲得(10)的對偶問題:
⎧⎩⎨⎪⎪⎪⎪maxα∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjxi→Txj→s.t.αi≥0,i=1,2,…,n∑ni=1αiyi=0(14)
由(14)可知咱們並不關心單個樣本是如何的,咱們只關心樣本間兩兩的乘積,這也爲後面核方法提供了很大的便利。
求解出
α⃗
以後,再求解出
w⃗
和
b
便可獲得SVM決策模型:
f(x⃗ )=w⃗ Tx⃗ +b=∑i=1nαiyixi→Tx⃗ +b(15)
2.2 SVM問題的KKT條件
在(10)中有不等式約束,所以上述過程知足Karush-Kuhn-Tucker(KKT)條件:算法
⎧⎩⎨⎪⎪αi≥0yi(w⃗ Tx⃗ +b)−1≥0,i=1,2,…,nαi(yi(w⃗ Tx⃗ +b)−1)=0(16)
對於任意樣本
(xi→,yi)
總有
αi=0
或
yi(w⃗ Tx⃗ +b)−1=0
。若是
αi=0
則由式(15)可知該樣本點對求解最佳超平面沒有任何影響。當
αi>0
時必有
yi(w⃗ Tx⃗ +b)−1=0
,代表對應的樣本點在最大間隔邊界上,即對應着支持向量。也由此得出了SVM的一個重要性質:
訓練完成以後,大部分的訓練樣本都不須要保留,最終的模型僅與支持向量有關。
那麼對於式(14)該如何求解
α⃗
呢?很明顯這是一個二次規劃問題,可以使用通用的二次規劃算法來求解,可是SVM的算法複雜度是
O(n2)
,在實際問題中這種開銷太大了。爲了有效求解該二次規劃問題,人們經過利用問題自己的特性,提出了不少高效算法,Sequential Minimal Optimization(SMO)就是一個經常使用的高效算法。在利用SMO算法進行求解的時候就須要用到上面的KKT條件。利用SMO算法求出
α⃗
以後根據:
{w⃗ =∑ni=1αiyixi→yi(w⃗ Tx⃗ +b)−1=0(17)
便可求出
w⃗
和
b
。求解出
w⃗
和
b
以後就可利用
f(x⃗ )=sign(w⃗ Tx⃗ +b)(18)
進行預測分類了,注意在測試的時候不須要
−1
,測試時沒有訓練的時候要求嚴格。
3. 軟間隔支持向量機
在現實任務中很難找到一個超平面將不一樣類別的樣本徹底劃分開,即很難找到合適的核函數使得訓練樣本在特徵空間中線性可分。退一步說,即便找到了一個可使訓練集在特徵空間中徹底分開的核函數,也很難肯定這個線性可分的結果是否是因爲過擬合致使的。解決該問題的辦法是在必定程度上運行SVM在一些樣本上出錯,爲此引入了「軟間隔」(soft margin)的概念,如圖4所示:網絡
圖4
具體來講,硬間隔支持向量機要求全部的樣本均被最佳超平面正確劃分,而軟間隔支持向量機容許某些樣本點不知足間隔大於等於1的條件
yi(w⃗ xi→+b)≥1
,固然在最大化間隔的時候也要限制不知足間隔大於等於1的樣本的個數使之儘量的少。因而咱們引入一個懲罰係數
C>0
,並對每一個樣本點
(xi→,yi)
引入一個鬆弛變量(slack variables)
ξ≥0
,此時可將式(10)改寫爲
⎧⎩⎨⎪⎪⎪⎪minw⃗ ,b(12||w⃗ ||2+C∑ni=1ξi)s.t.yi(w⃗ Txi→+b)≥1−ξi,i=1,2,…,nξi≥0(19)
上式中約束條件改成
yi(w⃗ xi→+b)≥1−ξi
,表示間隔加上鬆弛變量大於等於1;優化目標改成
minw⃗ ,b(12||w⃗ ||2+C∑ni=1ξi)
表示對每一個鬆弛變量都要有一個代價損失
Cξi
,
C
越大對誤分類的懲罰越大、
C
越小對誤分類的懲罰越小。
式(19)是軟間隔支持向量機的原始問題。能夠證實
w⃗
的解是惟一的,
b
的解不是惟一的,
b
的解是在一個區間內。假設求解軟間隔支持向量機間隔最大化問題獲得的最佳超平面是
w∗→x⃗ +b∗=0
,對應的分類決策函數爲
f(x⃗ )=sign(w∗→x⃗ +b∗)(20)
f(x⃗ )
稱爲軟間隔支持向量機。
相似式(12)利用拉格朗日乘子法可獲得上式的拉格朗日函數
L(w⃗ ,b,α⃗ ,ξ⃗ ,μ⃗ )=12||w⃗ ||2+C∑i=1nξi−∑i=1nαi(yi(w⃗ Txi→+b)−1+ξi)−∑i=1nμiξi(21)
其中
αi≥0
、
μi≥0
是拉格朗日乘子。
令
L(w⃗ ,b,α⃗ ,ξ⃗ ,μ⃗ )
分別對
w⃗
,
b
,
ξ⃗
求偏導並將偏導數爲零可得:
⎧⎩⎨⎪⎪w⃗ =∑ni=1αiyixi→∑ni=1αiyi=0C=αi+μi(22)
將式(22)帶入式(21)即可獲得式(19)的對偶問題:
⎧⎩⎨⎪⎪⎪⎪maxα⃗ ∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjxi→Txj→s.t.∑ni=1αiyi=0,i=1,2,…,n0≤αi≤C(23)
對比軟間隔支持向量機的對偶問題和硬間隔支持向量機的對偶問題可發現兩者的惟一差異就在於對偶變量的約束不一樣,軟間隔支持向量機對對偶變量的約束是
0≤αi≤C
,硬間隔支持向量機對對偶變量的約束是
0≤αi
,因而可採用和硬間隔支持向量機相同的解法求解式(23)。同理在引入核方法以後一樣能獲得與式(23)一樣的支持向量展開式。
相似式(16)對於軟間隔支持向量機,KKT條件要求:
⎧⎩⎨⎪⎪⎪⎪⎪⎪αi≥0,μi≥0yi(w⃗ x⃗ +b)−1+ξi≥0αi(yi(w⃗ x⃗ +b)−1+ξi)=0ξi≥0,μiξi=0(24)
同硬間隔支持向量機相似,對任意訓練樣本
(xi→,yi)
,總有
αi=0
或
yi(w⃗ x⃗ +b−1+ξi)
,若
αi=0
,則該樣本不會對最佳決策面有任何影響;若
αi>0
則必有
yi(w⃗ x⃗ +b)=1−ξi
,也就是說該樣本是支持向量。由式(22)可知若
αi<C
則
μi>0
進而有
ξi=0
,即該樣本處在最大間隔邊界上;若
αi=C
則
μi=0
此時若是
xii≤1
則該樣本處於最大間隔內部,若是
ξi>1
則該樣本處於最大間隔外部即被分錯了。由此也可看出,軟間隔支持向量機的最終模型僅與支持向量有關。
4. 非線性支持向量機
現實任務中原始的樣本空間
D
中極可能並不存在一個能正確劃分兩類樣本的超平面。例如圖4中所示的問題就沒法找到一個超平面將兩類樣本進行很好的劃分。
對於這樣的問題能夠經過將樣本從原始空間映射到特徵空間使得樣本在映射後的特徵空間裏線性可分。例如對圖5作特徵映射
z=x2+y2
可獲得如圖6所示的樣本分佈,這樣就很好進行線性劃分了。app
圖5
圖6
令
ϕ(x⃗ )
表示將樣本點
x⃗
映射後的特徵向量,相似於線性可分支持向量機中的表示方法,在特徵空間中劃分超平面所對應的模型可表示爲
f(x⃗ )=w⃗ Tx+b(25)
其中
w⃗
和
b
是待求解的模型參數。相似式(10),有
{minw⃗ ,b12||w⃗ ||2s.t.yi(w⃗ Tϕ(x⃗ )+b)≥1,i=1,2,…,n(26)
其拉格朗日對偶問題是
⎧⎩⎨⎪⎪⎪⎪maxα∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjϕ(xi→T)ϕ(xj→)s.t.αi≥0,i=1,2,…,n∑ni=1αiyi=0(27)
求解(27)須要計算
ϕ(xi→T)ϕ(xj→)
,即樣本映射到特徵空間以後的內積,因爲特徵空間可能維度很高,甚至多是無窮維,所以直接計算
ϕ(xi→T)ϕ(xj→)
一般是很困難的,在上文中咱們提到其實咱們根本不關心單個樣本的表現,只關心特徵空間中樣本間兩兩的乘積,所以咱們沒有必要把原始空間的樣本一個個地映射到特徵空間中,只須要想法辦求解出樣本對應到特徵空間中樣本間兩兩的乘積便可。爲了解決該問題可設想存在覈函數:
κ(xi→,xj→)=ϕ(xi→T)ϕ(xj→)(28)
也就是說
xi→
與
xj→
在特徵空間的內積等於它們在原始空間中經過函數
κ(⋅,⋅)
計算的結果,這給求解帶來很大的方便。因而式(27)可寫爲:
⎧⎩⎨⎪⎪maxα∑ni=1αi−12∑ni=1∑nj=1αiαjyiyjκ(xi→,xj→)s.t.αi≥0,i=1,2,…,n∑ni=1αiyi=0(29)
一樣的咱們只關心在高維空間中樣本之間兩兩點乘的結果而不關心樣本是如何變換到高維空間中去的。求解後便可獲得
f(x⃗ )=w⃗ Tϕ(x⃗ )+b=∑i=1nαiyiϕ(x⃗ )Tϕ(x⃗ )+b=∑i=1nαiyiκ(xi→,xj→)+b(30)
剩餘的問題一樣是求解
αi
,而後求解
w⃗
和
b
便可獲得最佳超平面。
支持向量迴歸
支持向量機不只能夠用來解決分類問題還能夠用來解決迴歸問題,稱爲支持向量迴歸(Support Vector Regression,SVR)。
對於樣本
(x⃗ ,y)
一般根據模型的輸出
f(x⃗ )
與真實值(即groundtruth)
yi
之間的差異來計算損失,當且僅當
f(x⃗ )=yi
時損失才爲零。SVR的基本思路是容許預測值
f(x⃗ )
與
yi
之間最多有
ε
的誤差,當
|f(x⃗ )−yi|≤ε
時認爲預測正確不計算損失,僅當
|f(x⃗ )−yi|>ε
時才計算損失。SVR問題可描述爲:機器學習
minw⃗ ,b(12||w⃗ ||2+C∑i=1nLε(f(x⃗ )−yi))(31)
其中,
C≥0
爲懲罰項,
Lε
爲損失函數,定義爲:
Lε(z)={0,|z|≤ε|z|−ξ,otherwise(32)