1. 程式人生 > >【機器學習基礎】支援向量迴歸

【機器學習基礎】支援向量迴歸

引言

這一小節介紹一下支援向量迴歸,我們在之前介紹的核邏輯迴歸使用表示定理(Representer Theorem),將邏輯迴歸程式設計Kernel的形式,這一節我們沿著這個思路出發,看看如何將回歸問題和Kernel的形式結合起來。

Kernel Ridge Regression

上次介紹的表示定理告訴我們,如果我們要處理的是有L2的正則項的線性模型,其最優解是資料zn的線性組合。我們可以將這樣的線性模型變成Kernel的形式。

既然我們知道這樣帶有L2-Regularizer的線性迴歸模型的最佳解的形式,那麼我們就可以將這個最佳解代入進原始的ridge regression中,用求解最佳的β來代替求解最佳的w。


我們將w是z的線性組合這個條件帶進式子中,得到如下的式子,再將其轉換成矩陣相乘的表示形式。

Kernel Ridge Regression的求解

上面我們得到了Kernel Ridge Regression的損失函式,要求解這樣的一個無條件的最優化問題,就是對這個損失函式Eaug(β)取梯度:

令▽Eaug(β)=0,就是要將(λI+K)β-y=0,這樣我們得到β的解。那麼(λI+K)是不是一定可逆呢,我們知道核矩陣K是半正定的,所以這個(λI+K)的逆一定是存在的。

這裡的時間複雜度大概是O(N^3),而且注意到矩陣(λI+K)裡面的元素大部分都不是0,所以如果求解一個很大的矩陣的逆是一個很困難的問題。

Linear Regression和Kernel Ridge Regression的比較


Linear Regression的缺點是比較受限制,但在計算的複雜度方面,如果當資料量N比維度d大很多,線性迴歸的計算是比較高效的。
Kernel Ridge Regression由於使用了Kernel trick,比較靈活,適合做複雜的擬合。這種方法我們發現,計算的複雜程度都是和資料量有關的,如果資料量很大的時候,不適合使用這個方法。

所以,線性和核方法的差別在於計算效率和針對複雜問題靈活性的權衡和折中。

Support Vector Regression

在之前的介紹中,我們使用linear regression來作分類的問題,現在使用kernel ridge regression也可以來作分類。
我們把這種kernel ridge regression for classification的情況也成為最小二乘SVM(least-squares SVM, LSSVM)。


我們從上圖對比一下SVM和LSSVM的分界效果,我們會發現,雖然這兩幅圖的分類邊界效果是差不多的,但是其標註的支援向量的數量卻相差很大,在LSSVM差不多每一個數據都是支援向量,為什麼會這樣呢?
我們在Kernel Ridge Regression中計算的β的結果,大部分都不是0,所以這種方式的支援向量的數量很多。這樣在預測的時候,就會花費很多的時間。
而標準的SVM中,係數α是稀疏的,而這裡的β是很稠密的。

Tube Regression

我們現在假設有一箇中立區Tube,資料在這個區域中,我們不將其計入誤差函式,而只將在這個區域外的資料的距離計入誤差函式。

損失函式定義如下:

我們對比一下Tube Regreesion和Squared Regression誤差函式的曲線,我們可以看到在誤差比較小的情況下,兩種誤差度量是差不多的,而當誤差比較大的時候,squared error就會增長的很快,這說明squared error比較容易受到噪聲的影響

接下來,我們使用L2-regularized tube regression來得到稀疏的β。

L2-Regularized Tube Regression


由於含有Regularizer的Tube Regression中含有max函式,而這個函式是不能微分的,所以我們想要模仿SVM中的求解技巧來解這個問題。

我們對比SVM,將w中的常數項b從中獨立出來得到要變換的式子:

我們回想一下,在SVM中我們引入了一個新的變數ξn,這個變數記錄了對於錯誤資料的懲罰,所以我們用ξn來代替max,放到目標函式中去:

由於這裡還有一個絕對值的運算,它也不是可微的運算,所以我們將其拆開成兩個部分,並且設定了兩個ξ變數,這樣就把我們的條件變成了線性的,於是我們就可以使用二次規劃來求解這個式子了:

上面我們得到了標準的Support Vector Regression,我們成為原始的SVR問題。

相比於SVM,這裡還多出一個可調節的變數ε。

Support Vector Regression的對偶問題

下面我們使用拉格朗日乘子來化簡有條件的最優化問題,分別使用兩個拉格朗日乘數α對應兩個ξ:

接下來,我們將待優化的目標函式和條件寫成拉格朗日函式,然後對其中的變數做微分,再使用KKT條件來替換,和之前介紹SVM的過程是很相似的,下面只給出幾個重要的結果:

我們通過對比對偶SVM和對偶SVR來闡述其實這些對偶問題是有跡可循的。

經過以上的步驟求解,我們希望得到最後的結果是稀疏的,那我們來看看什麼時候β為0。
當資料在tube中的時候,兩個誤差變數ξ都為0,那麼由鬆弛條件(complementary slackness)得到兩個α為0,這樣最終得到的β為0,就可以保證支援向量的稀疏特點,只有在tube外和剛好在tube上的資料才是支援向量。

對Kernel模型的回顧

線性模型

在最初介紹的線性模型中,我們介紹了PLA演算法、線性迴歸(帶有正則項的稱為Ridge Regression)、邏輯迴歸,這三個模型分別對應三種不同的誤差函式。在最近的博文中我們又介紹了線性軟間隔SVM,它也是解決線性的問題,它是通過二次規劃來解決的。如果要解決迴歸的問題,我們還介紹了支援向量迴歸模型,它是通過tube的誤差和二次規劃來解決的。

Kernel模型

Kernel的模型我們介紹了SVM和SVR,它們都是使用二次規劃來解決化簡的對偶問題。我們還介紹了將線性迴歸變成kernel的方法,即使用表示定理來推導其kernel的形式,核邏輯迴歸也是用的大體類似的方法。我們還使用概率SVM先做SVM,然後再做邏輯迴歸進行微調。

針對這些模型,我們很少使用PLA、linear SVR,因為其效果不如另外三個線性模型好。而kernel ridge regression和kernel logistic regression也是不經常用的,因為其係數大都不是0,這樣在預測的時候會花費很多無謂的計算。