學習筆記:SVM柔性邊界的補充和SVR(支持向量回歸)
上一個筆記對於SVM不能完美分類的情況,之前並沒有搞得很透徹。在學習SVR的時候,我又重新思考了一下關於SVM對於不能完美分類的情況,搞清楚SVM不可完美分類的情況之后,也就更容易理解SVR的美妙了。
SVM柔性邊界
所謂柔性邊界,就是會允許分類問題的不完美,能夠包容一部分分類出現誤差的情況,因為現實中往往會存在一些特例,或者我們不可能考慮到所有的影響因素,導致雖然滿足了我們研究條件,但是依然輸出不同於我們預測的情況。
SVM柔性邊界的表達式:

與完美可分情況的SVM表達式:

我們通過下圖來說明柔性邊界到底想要達到什么目的:

可以看到,支持向量機真正確定的並不是一個超平面,而是沿着這個超平面的帶狀區間
(在二維中,更高維就更抽象了,我也不知道長什么樣,你們腦補吧)。而這個帶狀區間的寬度,在完美可分的情況下,就是兩倍的幾何距離
,柔性邊界呢就是把這個距離放大了,本來這個帶狀區域中沒有訓練樣本,現在我允許可以有一些訓練樣本了,不等式中的1就是縮放后的帶狀區間的邊界,現在訓練樣本滿足的公式可以比這個邊界小了,自然就是允許一部分訓練樣本點在帶狀區域里面了。
接下來我們通過來看拉格朗日乘子式來分析為什么這個方法是合理的,天才的,並來理解各個參數變量和KKT條件。

我們對拉格朗日乘子式中各個變量求偏導:
至此關於SVM柔性邊界的一些補充討論就完成了,接下來說一下支持向量回歸(SVR)
支持向量回歸(SVR)
由支持向回歸就是一種回歸方法,就像最小二乘法,嶺回歸,梯度下降法一樣,是一種方法,就像支持向量機也是一種方法,所以它們都不叫做模型,而是叫做支持向量機和支持向量回歸。
支持向量回歸是在我們做擬合時,采用了支持向量的思想,和拉格朗日乘子式的方式,來對數據進行回歸分析的。相對於經濟學領域常用的最小二乘法而言,它有諸多好處:
- 最小二乘法只能用於線性回歸,對於非線性模型則不再適用;而支持向量回歸並沒有這個限制
- 最小二乘法對於具有多重共線性的變量之間的回歸效果很差;而支持向量回歸並不需要擔心多重共線性問題
- 支持向量回歸對雖然不會在過程中直接排除異常點,但會是的由異常點引起的偏誤更小。
所以,支持向量回歸十分值得學習。下面上公式:

問題轉化:

其實上式就是表示出了回歸函數和實際訓練點之間的函數距離,對於式中定義的cost function
,表述意義是允許模型由一定誤差,誤差范圍內的點都認為是模型上的點,而只有那些在誤差范圍外,邊界上的點才是確定模型的支持向量。由於存在SVM中類似柔性邊界的考慮,於是引入松弛變量,得到支持向量回歸如下:
![]()
轉化成SVM求解問題![]()
這里出現了兩個不等式,因為我們沒有分類結果{-1,1}來用乘積表示正負距離了,只能用絕對值,拆開絕對值符號之后,就會有兩個不等式的約束條件。
以上便構成了支持向量回歸的KKT條件,從條件中不難看出,我們選出的支持向量都是在認為符合回歸情況范圍之內的,和盡可能少的一部分超過邊界的點,這樣就排除了一部分的訓練樣本中的奇異點。
然后帶入求解得到[2]:

求得回歸方程:

回歸方程中出現的K(xi,x)
就是核(kernel)
了,會有一些總結的比較好用的kernel
,當然你的回歸形式如果自己比較清楚,也可以換成你的回歸方程。kernel
可以使無限維特征向量的計算極大的簡化,無論是線性還是非線性的問題滿足一定條件就可以找到相應的kernel
。不過這里並不會介紹kernel
,因為kernel
也是一個內容豐富的知識點,並且我也還沒學習。
一直沒寫怎么求得最終結果,求解過程涉及到的都是啟發式的算法,基本這些問題也是結合計算機使用的。這里提供一個r包的鏈接e1071,需要用到的可以去看看幫助。
支持向量機暫時寫完了,我想其實這個過程中收獲最大的是自己,逼着自己把各個條件推了一遍,寫的過程中又發現本來以為理解其實並沒理解的地方,又再思考了,以后會堅持寫學習筆記的。
[1]:由於簡書里不好編輯公式,所以這里我現在word上編輯好,再通過插入圖片的方式以方便表達。 ↩
[2]:我在中間引用自己在word上編輯的內容時,可能公式中對應的符號有所變化,我相信這並不會給大家帶來什么困擾:) ↩