1. SVR模型
SVR應用鏈接,處理波士頓房價預測問題
在SVM分類模型中,我們的目標函數是讓21∣∣w∣∣2最小,同時讓各個訓練集中的點儘量遠離自己類別一邊的的支持向量,即yi(w⋅ϕ(xi)+b)≥1。若加入一個鬆弛變量ξi≥0,則目標函數爲:
21∣∣w∣∣22+Ci=1∑mξi(式1)
約束條件爲:
yi(w⋅ϕ(xi)+b)≥1−ξi(式2)
現在用於迴歸模型,優化目標函數可以繼續和SVM分類模型保持一致爲21∣∣w∣∣22,但是約束條件不可能是讓各個訓練集中的點儘量遠離自己類別一邊的的支持向量,因爲我們是迴歸模型,沒有類別。對於迴歸模型,我們的目標是讓訓練集中的每個點(xi,yi),儘量擬合到一個線性模型yi≈w⋅ϕ(xi)+b。一般的迴歸模型,使用均方差作爲損失函數,但是SVR不是這樣定義損失函數的。
SVR需要定義一個常量ϵ>0,對於某一個點(xi,yi),如果∣yi−w⋅ϕ(xi)−b∣≤ϵ,則沒有損失,如果∣yi−w⋅ϕ(xi)−b∣>ϵ,則對應的損失爲∣yi−w⋅ϕ(xi)−b∣−ϵ,這和均方差損失函數不同,如果是均方差,那麼只要yi−w⋅ϕ(xi)−b=0,那麼就會有損失。
如圖所示,在條帶裏面的點都是沒有損失的,但是外面的點的是有損失的:
這樣一來我們的SVR模型的損失函數度量爲:
err(xi,yi)={0∣yi−w⋅ϕ(xi)−b∣≤ϵ∣yi−w⋅ϕ(xi)−b∣−ϵ∣yi−w⋅ϕ(xi)−b∣>ϵ(式3)
2. SVR模型目標函數的原始形式
定義目標函數如下:
min21∣∣w∣∣22s.t∣yi−w⋅ϕ(xi)−b∣≤ϵ(i=1,2,...m)(式4)
和SVM模型相似,SVR模型也可以對每個樣本(xi,yi)加入鬆弛變量ξi≥0, 但是由於我們這裏用的是絕對值,實際上是兩個不等式,也就是說兩邊都需要鬆弛變量,定義爲ξi∨,ξi∧, 則SVR模型的損失函數度量在加入鬆弛變量之後變爲:
min21∣∣w∣∣22+Ci=1∑m(ξi∨+ξi∧)s.t.−ϵ−ξi∨≤yi−w⋅ϕ(xi)−b≤ϵ+ξi∧ξi∨≥0,ξi∧≥0(i=1,2,...,m)(式5)
依然和SVM分類模型相似,用拉格朗日函數將目標優化函數變成無約束的形式,如下:
L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)=21∣∣w∣∣22+Ci=1∑m(ξi∨+ξi∧)+i=1∑mα∨(−ϵ−ξi∨−yi+w⋅ϕ(xi)+b)+i=1∑mα∧(yi−w⋅ϕ(xi)−b−ϵ−ξi∧)−i=1∑mμ∨ξi∨−i=1∑mμ∧ξi∧(式6)
其中 μ∨≥0,μ∧≥0,αi∨≥0,αi∧≥0,均爲拉格朗日乘子。
3. SVR模型的目標函數的對偶形式
根據SVR模型的目標函數的原始形式,我們的目標是:
min(w,b,ξi∨,ξi∧)max(μ∨≥0,μ∧≥0,αi∨≥0,αi∧≥0)L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)(式7)
和SVM分類模型一樣,這個優化目標也滿足KKT條件,也就是說,我們可以通過拉格朗日將優化問題轉化爲等價的對偶問題來求解如下:
max(μ∨≥0,μ∧≥0,αi∨≥0,αi∧≥0)min(w,b,ξi∨,ξi∧)L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)(式8)
可以先求優化函數對於w,b,ξi∨,ξi∧的極小值, 接着再求拉格朗日乘子α∨,α∧,μ∨μ∧的極大值。
首先我們來求優化函數對於w,b,ξi∨,ξi∧的極小值。
這個可以通過求偏導數求得:
∂w∂L=0⇒w=i=1∑m(αi∧−αi∨)ϕ(xi)(式9)
∂b∂L=0⇒i=1∑m(αi∧−αi∨)=0(式10)
∂ξi∨∂L=0⇒C−α∨−μ∨=0(式11)
∂ξi∧∂L=0⇒C−α∧μ∧=0(式12)
好了,把上面4個式子帶入L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)消去w,b,ξi∨,ξi∧了。
最終得到的對偶形式爲:
α∨,α∧max−i=1∑m(ϵ−yi)αi∧+(ϵ+yi)αi∨)−21i=1,j=1∑m(αi∧−αi∨)(αj∧−αj∨)Kijs.t.i=1∑m(αi∧−αi∨)=00<αi∨<C(i=1,2,...m)0<αi∧<C(i=1,2,...m(式13)
取負號求最小值可以得到和SVM分類模型類似的求極小值的目標函數如下:
α∨,α∧min21i=1,j=1∑m(αi∧−αi∨)(αj∧−αj∨)Kij+i=1∑m(ϵ−yi)αi∧+(ϵ+yi)αi∨s.t.i=1∑m(αi∧−αi∨)=00<αi∨<C(i=1,2,...m)0<αi∧<C(i=1,2,...m)(式14)
對於此目標函數,可以用SMO算法來求出對應的α∨,α∧,進而求出我們的迴歸模型係數w,b。
4.SVR模型係數的稀疏性
在SVM分類模型中,我們的KKT條件的對偶互補條件爲:αi∗(yi(w⋅ϕ(xi)+b)−1+ξi∗)=0,而在迴歸模型中,我們的對偶互補條件類似如下:
αi∨(ϵ+ξi∨+yi−w⋅ϕ(xi)−b)=0(式15)
αi∧(ϵ+ξi∧−yi+w⋅ϕ(xi)+b)=0(式16)
根據鬆弛變量定義條件,如果∣yi−w⋅ϕ(xi)−b∣<ϵ,我們有ξi∨=0,ξi∧=0,此時ϵ+ξi∨+yi−w⋅ϕ(xi)−b=0,ϵ+ξi∧−yi+w⋅ϕ(xi)+b=0這樣要滿足對偶互補條件,只有αi∨=0,αi∧=0。定義樣本系數係數
βi=αi∧−αi∨(式17)
根據上面w的計算式w=∑i=1m(αi∧−αi∨)ϕ(xi),發現此時βi=0,也就是說w不受這些在誤差範圍內的點的影響。對於在邊界上或者在邊界外的點,αi∨=0,αi∧=0,此時βi=0。
推導參考鏈接
5. SVM 算法小結
SVM算法是一個很優秀的算法,在集成學習和神經網絡之類的算法沒有表現出優越性能前,SVM基本佔據了分類模型的統治地位。目前則是在大數據時代的大樣本背景下,SVM由於其在大樣本時超級大的計算量,熱度有所下降,但是仍然是一個常用的機器學習算法。SVM算法的主要優點有:
- (1)高維特徵的分類問題和迴歸問題很有效,在特徵維度大於樣本數時依然有很好的效果。
- (2) 僅僅使用一部分支持向量來做超平面的決策,無需依賴全部數據。
- (3) 有大量的核函數可以使用,從而可以很靈活的來解決各種非線性的分類迴歸問題。
- (4)樣本量不是海量數據的時候,分類準確率高,泛化能力強。
SVM算法的主要缺點有:
- (1) 如果特徵維度遠遠大於樣本數,則SVM表現一般。
- (2) SVM在樣本量非常大,核函數映射維度非常高時,計算量過大,不太適合使用。
- (3)非線性問題的核函數的選擇沒有通用標準,難以選擇一個合適的核函數。
- (4)SVM對缺失數據敏感。
6.SVR模型應用
使用SVR處理波士頓房價預測問題
鏈接:https://blog.csdn.net/AIHUBEI/article/details/105105688