支持向量機原理(五)線性支持回歸


   支持向量機原理(一) 線性支持向量機

    支持向量機原理(二) 線性支持向量機的軟間隔最大化模型

    支持向量機原理(三)線性不可分支持向量機與核函數

    支持向量機原理(四)SMO算法原理

    支持向量機原理(五)線性支持回歸

    在前四篇里面我們講到了SVM的線性分類和非線性分類,以及在分類時用到的算法。這些都關注與SVM的分類問題。實際上SVM也可以用於回歸模型,本篇就對如何將SVM用於回歸模型做一個總結。重點關注SVM分類和SVM回歸的相同點與不同點。

1. SVM回歸模型的損失函數度量

    回顧下我們前面SVM分類模型中,我們的目標函數是讓12||w||2212||w||22最小,同時讓各個訓練集中的點盡量遠離自己類別一邊的的支持向量,即yi(wϕ(xi)+b)1yi(w∙ϕ(xi)+b)≥1。如果是加入一個松弛變量ξi0ξi≥0,則目標函數是12||w||22+Ci=1mξi12||w||22+C∑i=1mξi,對應的約束條件變成:yi(wϕ(xi)+b)1ξiyi(w∙ϕ(xi)+b)≥1−ξi

    但是我們現在是回歸模型,優化目標函數可以繼續和SVM分類模型保持一致為12||w||2212||w||22,但是約束條件呢?不可能是讓各個訓練集中的點盡量遠離自己類別一邊的的支持向量,因為我們是回歸模型,沒有類別。對於回歸模型,我們的目標是讓訓練集中的每個點(xi,yi)(xi,yi),盡量擬合到一個線性模型yi =wϕ(xi)+byi =w∙ϕ(xi)+b。對於一般的回歸模型,我們是用均方差作為損失函數,但是SVM不是這樣定義損失函數的。

    SVM需要我們定義一個常量ϵ>0ϵ>0,對於某一個點(xi,yi)(xi,yi),如果|yiwϕ(xi)b|ϵ|yi−w∙ϕ(xi)−b|≤ϵ,則完全沒有損失,如果|yiwϕ(xi)b|>ϵ|yi−w∙ϕ(xi)−b|>ϵ,則對應的損失為|yiwϕ(xi)b|ϵ|yi−w∙ϕ(xi)−b|−ϵ,這個均方差損失函數不同,如果是均方差,那么只要yiwϕ(xi)b0yi−w∙ϕ(xi)−b≠0,那么就會有損失。

    如下圖所示,在藍色條帶里面的點都是沒有損失的,但是外面的點的是有損失的,損失大小為紅色線的長度。

    總結下,我們的SVM回歸模型的損失函數度量為:

 

err(xi,yi)={0|yiwϕ(xi)+b|ϵ|yiwϕ(xi)b|ϵ|yiwϕ(xi)b|>ϵerr(xi,yi)={0|yi−w∙ϕ(xi)−b|≤ϵ|yi−w∙ϕ(xi)+b|−ϵ|yi−w∙ϕ(xi)−b|>ϵ

 

2. SVM回歸模型的目標函數的原始形式

    上一節我們已經得到了我們的損失函數的度量,現在可以可以定義我們的目標函數如下:

min12||w||22s.t|yiwϕ(xi)b|ϵ(i=1,2,...m)min12||w||22s.t|yi−w∙ϕ(xi)−b|≤ϵ(i=1,2,...m)

 

    和SVM分類模型相似,回歸模型也可以對每個樣本(xi,yi)(xi,yi)加入松弛變量ξi0ξi≥0, 但是由於我們這里用的是絕對值,實際上是兩個不等式,也就是說兩邊都需要松弛變量,我們定義為ξi,ξiξi∨,ξi∧, 則我們SVM回歸模型的損失函數度量在加入松弛變量之后變為:

min12||w||22+Ci=1m(ξi+ξi)min12||w||22+C∑i=1m(ξi∨+ξi∧)
s.t.ϵξiyiwϕ(xi)bϵ+ξis.t.−ϵ−ξi∨≤yi−w∙ϕ(xi)−b≤ϵ+ξi∧
ξi0,ξi0(i=1,2,...,m)ξi∨≥0,ξi∧≥0(i=1,2,...,m)

 

    依然和SVM分類模型相似,我們可以用拉格朗日函數將目標優化函數變成無約束的形式,也就是拉格朗日函數的原始形式如下:

 

L(w,b,α,α,ξi,ξi,μ,μ)=12||w||22+Ci=1m(ξi+ξi)+i=1mα(ϵξiyi+wϕ(xi)+b)+i=1mα(yiwϕ(xi)bϵξi)i=1mμξii=1mμξiL(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)=12||w||22+C∑i=1m(ξi∨+ξi∧)+∑i=1mα∨(−ϵ−ξi∨−yi+w∙ϕ(xi)+b)+∑i=1mα∧(yi−w∙ϕ(xi)−b−ϵ−ξi∧)−∑i=1mμ∨ξi∨−∑i=1mμ∧ξi∧

 

    其中 μ0,μ0,αi0,αi0μ∨≥0,μ∧≥0,αi∨≥0,αi∧≥0,均為拉格朗日系數。

3. SVM回歸模型的目標函數的對偶形式

    上一節我們講到了SVM回歸模型的目標函數的原始形式,我們的目標是

minw,b,ξi,ξimaxμ0,μ0,αi0,αi0L(w,b,α,α,ξi,ξi,μ,μ)min⏟w,b,ξi∨,ξi∧max⏟μ∨≥0,μ∧≥0,αi∨≥0,αi∧≥0L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)

 

    和SVM分類模型一樣,這個優化目標也滿足KKT條件,也就是說,我們可以通過拉格朗日對偶將我們的優化問題轉化為等價的對偶問題來求解如下:

maxμ0,μ0,αi0,αi0minw,b,ξi,ξiL(w,b,α,α,ξi,ξi,μ,μ)max⏟μ∨≥0,μ∧≥0,αi∨≥0,αi∧≥0min⏟w,b,ξi∨,ξi∧L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)

 

    我們可以先求優化函數對於w,b,ξi,ξiw,b,ξi∨,ξi∧的極小值, 接着再求拉格朗日乘子α,α,μ,μα∨,α∧,μ∨,μ∧的極大值。

    首先我們來求優化函數對於w,b,ξi,ξiw,b,ξi∨,ξi∧的極小值,這個可以通過求偏導數求得:

Lw=0w=i=1m(αiαi)ϕ(xi)∂L∂w=0⇒w=∑i=1m(αi∧−αi∨)ϕ(xi)
Lb=0i=1m(αiαi)=0∂L∂b=0⇒∑i=1m(αi∧−αi∨)=0
Lξi=0Cαμ=0∂L∂ξi∨=0⇒C−α∨−μ∨=0
Lξi=0Cαμ=0∂L∂ξi∧=0⇒C−α∧−μ∧=0

 

 

    好了,我們可以把上面4個式子帶入L(w,b,α,α,ξi,ξi,μ,μ)L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)去消去w,b,ξi,ξiw,b,ξi∨,ξi∧了。

    看似很復雜,其實消除過程和系列第一篇第二篇文章類似,由於式子實在是冗長,這里我就不寫出推導過程了,最終得到的對偶形式為:

maxα,αi=1m(ϵyi)αi+(ϵ+yi)αi)12i=1,j=1m(αiαi)(αjαj)Kijmax⏟α∨,α∧∑i=1m(ϵ−yi)αi∧+(ϵ+yi)αi∨)−12∑i=1,j=1m(αi∧−αi∨)(αj∧−αj∨)Kij
s.t.i=1m(αiαi)=0s.t.∑i=1m(αi∧−αi∨)=0
0<αi<C(i=1,2,...m)0<αi∨<C(i=1,2,...m)
0<αi<C(i=1,2,...m)0<αi∧<C(i=1,2,...m)

 

 

     對目標函數取負號,求最小值可以得到和SVM分類模型類似的求極小值的目標函數如下:

minα,α12i=1,j=1m(αiαi)(αjαj)Kiji=1m(ϵyi)αi+(ϵ+yi)αimin⏟α∨,α∧12∑i=1,j=1m(αi∧−αi∨)(αj∧−αj∨)Kij−∑i=1m(ϵ−yi)αi∧+(ϵ+yi)αi∨
s.t.i=1m(αiαi)=0s.t.∑i=1m(αi∧−αi∨)=0
0<αi<C(i=1,2,...m)0<αi∨<C(i=1,2,...m)
0<αi<C(i=1,2,...m)0<αi∧<C(i=1,2,...m)

 

    對於這個目標函數,我們依然可以用第四篇講到的SMO算法來求出對應的α,αα∨,α∧,進而求出我們的回歸模型系數w,bw,b。

4. SVM回歸模型系數的稀疏性

    在SVM分類模型中,我們的KKT條件的對偶互補條件為: αi(yi(wϕ(xi)+b)1)=0αi∗(yi(w∙ϕ(xi)+b)−1)=0,而在回歸模型中,我們的對偶互補條件類似如下:

αi(ϵ+ξi+yiwϕ(xi)b)=0αi∨(ϵ+ξi∨+yi−w∙ϕ(xi)−b)=0
αi(ϵ+ξiyi+wϕ(xi)+b)=0αi∧(ϵ+ξi∧−yi+w∙ϕ(xi)+b)=0

 

    根據松弛變量定義條件,如果|yiwϕ(xi)b|<ϵ|yi−w∙ϕ(xi)−b|<ϵ,我們有ξi=0,ξi=0ξi∨=0,ξi∧=0,此時ϵ+ξi+yiwϕ(xi)b0,ϵ+ξiyi+wϕ(xi)+b0ϵ+ξi∨+yi−w∙ϕ(xi)−b≠0,ϵ+ξi∧−yi+w∙ϕ(xi)+b≠0這樣要滿足對偶互補條件,只有αi=0,αi=0αi∨=0,αi∧=0。

    我們定義樣本系數系數

βi=αiαiβi=αi∧−αi∨

 

    根據上面ww的計算式w=i=1m(αiαi)ϕ(xi)w=∑i=1m(αi∧−αi∨)ϕ(xi),我們發現此時βi=0βi=0,也就是說ww不受這些在誤差范圍內的點的影響。對於在邊界上或者在邊界外的點,αi0,αi0αi∨≠0,αi∧≠0,此時βi0βi≠0。

5. SVM 算法小結

    這個系列終於寫完了,這里按慣例SVM 算法做一個總結。SVM算法是一個很優秀的算法,在集成學習和神經網絡之類的算法沒有表現出優越性能前,SVM基本占據了分類模型的統治地位。目前則是在大數據時代的大樣本背景下,SVM由於其在大樣本時超級大的計算量,熱度有所下降,但是仍然是一個常用的機器學習算法。

    SVM算法的主要優點有:

    1) 解決高維特征的分類問題和回歸問題很有效,在特征維度大於樣本數時依然有很好的效果。

    2) 僅僅使用一部分支持向量來做超平面的決策,無需依賴全部數據。

    3) 有大量的核函數可以使用,從而可以很靈活的來解決各種非線性的分類回歸問題。

    4)樣本量不是海量數據的時候,分類准確率高,泛化能力強。

    SVM算法的主要缺點有:

    1) 如果特征維度遠遠大於樣本數,則SVM表現一般。

    2) SVM在樣本量非常大,核函數映射維度非常高時,計算量過大,不太適合使用。

    3)非線性問題的核函數的選擇沒有通用標准,難以選擇一個合適的核函數。

    4)SVM對缺失數據敏感。

    之后會對scikit-learn中SVM的分類算法庫和回歸算法庫做一個總結,重點講述調參要點,敬請期待。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM