機器學習二十二:支援向量機迴歸SVR
AI
菌
在前四篇裡面我們講到了SVM的線性分類和非線性分類(核函式),以及在分類時用到的SMO演算法。
這些都關注於SVM的分類問題。實際上SVM也可以用於迴歸模型,本篇就對如何將SVM用於迴歸模型做一個總結。
迴歸和分類從某種意義上講,本質上是一回事。SVM分類,就是找到一個平面,讓兩個分類集合的支援向量或者所有的資料離分類平面最遠;SVR迴歸,就是找到一個迴歸平面,讓一個集合的所有資料到該平面的距離最近。
SVM迴歸模型的損失函式
回顧下我們前面SVM分類模型中,我們的目標函式是
通常情況下我們令函式間隔γ′=為1。那麼有:
由於最大化:
等價於:
這樣使擬合函式更為平坦,從而提高泛化能力
所以我們的目標函式變為:
如果是加入一個鬆弛變數ξi≥0,則目標函式是
但是我們現在是迴歸模型,優化目標函式可以繼續和SVM分類模型保持一致
但是約束條件呢?不可能是讓各個訓練集中的點儘量遠離自己類別一邊的的支援向量,因為我們是迴歸模型,沒有類別。
對於迴歸模型,我們的目標是讓訓練集中的每個點(xi,yi) , 儘量擬合到一個線性模型yi =w∙ϕ(xi)+b 。對於一般的迴歸模型,我們是用均方差作為損失函式,但是SVM不是這樣定義損失函式的。
SVM需要我們定義一個常量 ϵ>0,對於某一個點(xi,yi),如果
則完全沒有損失,如果
則對應的損失為
這個均方差損失函式不同,如果是均方差,那麼只要
也就是點不在擬合線段上時,那麼就會有損失。
如下圖所示,在藍色條帶裡面的點都是沒有損失的,但是外面的點的是有損失的,損失大小為紅色線的長度。
總結下,我們的SVM迴歸模型的損失函式度量為:
目標函式的原始形式
上一節我們已經得到了我們的損失函式的度量,現在可以可以定義我們的目標函式如下:
和SVM分類模型相似,迴歸模型也可以對每個樣本(xi,yi)加入鬆弛變數ξi≥0,
但是由於我們這裡用的是絕對值,實際上是兩個不等式,我們定義為:
則我們SVM迴歸模型的損失函式度量在加入鬆弛變數之後變為:
依然和SVM分類模型相似,常數C > 0
表示對超出誤差 ε 的樣本的懲罰程度,從而減小誤差
我們可以用拉格朗日函式將目標優化函式變成無約束的形式,也就是拉格朗日函式的原始形式如下:
其中
均為拉格朗日系數
目標函式的對偶形式
上一節我們講到了SVM迴歸模型的目標函式的原始形式,我們的目標是
和SVM分類模型一樣,這個優化目標也滿足KKT條件,也就是說,我們可以通過拉格朗日對偶將我們的優化問題轉化為等價的對偶問題來求解如下:
首先我們來求優化函式對於w,b,ξi∨,ξi∧的極小值,這個可以通過求偏導數求得:
好了,我們可以把上面4個式子帶入L(w,b,α∨,α∧,ξi∨,ξi∧,μ∨,μ∧)去消去w,b,ξi∨,ξi∧了
看似很複雜,其實消除過程和系列第一篇第二篇文章類似,由於式子實在是冗長,這裡我就不寫出推導過程了,最終得到的對偶形式為:
對目標函式取負號,求最小值可以得到和SVM分類模型類似的求極小值的目標函式如下:
對於這個目標函式,我們依然可以用講到過的SMO演算法來求出對應的α∨,α∧,進而求出我們的迴歸模型係數w,b。
SVM 演算法小結
這個系列終於寫完了,這裡按慣例SVM 演算法做一個總結。SVM演算法是一個很優秀的演算法,在整合學習和神經網路之類的演算法沒有表現出優越效能前,SVM基本佔據了分類模型的統治地位。目前則是在大資料時代的大樣本背景下,SVM由於其在大樣本時超級大的計算量,熱度有所下降,但是仍然是一個常用的機器學習演算法。
SVM演算法的主要優點有:
1) 解決高維特徵的分類問題和迴歸問題很有效,在特徵維度大於樣本數時依然有很好的效果。
2) 僅僅使用一部分支援向量來做超平面的決策,無需依賴全部資料。
3) 有大量的核函式可以使用,從而可以很靈活的來解決各種非線性的分類迴歸問題。
4)樣本量不是海量資料的時候,分類準確率高,泛化能力強。
SVM演算法的主要缺點有:
1) 如果特徵維度遠遠大於樣本數,則SVM表現一般。
2) SVM在樣本量非常大,核函式對映維度非常高時,計算量過大,不太適合使用。
3)非線性問題的核函式的選擇沒有通用標準,難以選擇一個合適的核函式。
4)SVM對缺失資料敏感。
AI
菌
之後會對scikit-learn中SVM的分類演算法庫和迴歸演算法庫做一個總結
不失初心,不忘初衷
AI玩轉智慧