1. 程式人生 > >關於機器學習中一般線性回歸的補充

關於機器學習中一般線性回歸的補充

機器學習 線性回歸 嶺回歸

在之前的文章中,筆者給出了關於最小二乘法相關公式的整體推導過程,最小二乘法本身除了可以利用數據進行相關參數的擬合(主要是系數和偏置),而且作為分類問題中最為簡單的模型也有著重要作用,我們也可以將其稱作最為簡單的線性回歸模型(以後需要涉及到支持向量機的問題,即Support Vector Machine這個其實也是一種線性回歸模型,但在線性不可分的情況下,需要利用核函數對其進行相關處理),後面可能還會涉及到基於對數模型(多分類)的線性回歸問題(這個叫法有點奇怪,既然是線性回歸怎麽還和對數發生關系),這主要包括Softmax Regressionlogistic Regression,但它們不是本文的討論範圍。


問題由來

筆者認為,對於解決同樣問題,任何新方法提出的初衷可能都是由於原方法或技術無法解決或不能完美解決,所以本文所要重點討論的是關於一般線性回歸模型在某些場合可能存在的問題,其實問題主要是由於樣本存在一定的相關性(就是樣本抽樣方法存在問題或樣本空間本身太小,這個問題其實在很多場合都存在,另外一種方法擴充樣本的方法是對其進行一定變型,這種方法可以在討論前饋神經網絡的時候涉及),其結果就會導致過擬合(Overfitting),在數學上的表現就是樣本矩陣及其樣本矩陣轉置的乘積是奇異的,即矩陣不可逆,這樣我們就無法利用推導出的公式進行計算了,為了描述方便,現再次列出原公式,如下:


技術分享

按照之前文章的約定,X就是一個n*m的矩陣,其中n就是樣本數量,而m是向量的維度,為了討論方便,上式省略了偏置b

這是一個Close Form,就是閉式解(所謂閉式解的含義就是我們可以公式直接獲得結果,但如果不是則可能需要借助叠代的方法求解,比如牛頓法等)。

嶺回歸

嶺回歸(Ridge Regression)的提出就是為了部分解決公式(1)中可能出現的矩陣不可逆的情況而提出的,否則會出現Leo Breiman所提出的羅生門現象,而造成解的不唯一性。在下面的論述中,我們仍然省略偏置,這個其實只要對樣本稍加處理即可,所以我們現在聚焦向量x的系數w

其實如何解決這個問題,是比較簡單的。首先還是將線性回歸的目標公式再列出:

技術分享


N是樣本的數量,而λ(大於等於0)被稱作正則化系數,用來控制收縮程度,它的值越小收縮程度越大,顯然當其為0時則退化成原線性回歸問題。

通過上述的處理,公式1就會變成如下的形式:

技術分享


其中In*n的單位矩陣,故即便樣本及其轉置乘積不是滿秩的,加入後面的部分也能構成非奇異矩陣。

順便提一句,一般而言公式2本身是可導的,所以其求解是比較容易的,但下面討論的Lasso回歸則不然,讀者需要註意其推導的不同(這個就比嶺回歸要復雜一些,要使用一些看上去比較詭異的方法)。

Lasso回歸

對於嶺回歸而言,在公式2中我們可以看到和原始回歸方法相比,多出的一項為系數平方和,但這個計算復雜度略微有點高,如果我們只關心那些非零的系數則完全可以用一範數來替代二範數,就能達到幾乎同樣的效果,不過帶來的代價就是公式不可導;Lasso回歸的目標公式如下:


技術分享

其中m是向量的維度。

因為它是一範數,故系數有更多的機會為0(對應二範數而言),進而有可能得到更加稀疏的解。

現將公式4改寫成矩陣形式:

技術分享

前面已經提到過了,與原始的線性回歸及嶺回歸不同的是,求解上式的難點在於一範數在零點不可導(絕對值的原因),所以它不像前兩者,沒有閉合解,而需要使用FISTFast Iterative Shrinkage Thresholding)方法,這種方法可以用於求解形如下式的目標函數:

技術分享

其中g(x)為連續的凸函數,可以不光滑,而f(x)則為光滑函數,其導數應滿足利普希茨連續(Lipschitz Continuity),這個連續性比一般的一致連續性要求更強,即存在常數L(大於零),滿足對於定義域D上的任意兩個不同的實數xz(其實可以擴充到其它符合要求的空間中,不一定非要是實數空間,不過度娘是這麽解釋的)都有:

技術分享


上式給人直觀的感受就是把函數的變化收縮在一定範圍內,對於滿足條件最小的L而言,則稱其為利普希茨常數,如果L < 1f被稱作收縮映射。

νf(x)為f(x)的梯度;根據相關文檔可以得到如下公式:

技術分享


需要說明的一點是在上面的公式中,< >是內積符號,而且這個公式的右邊部分有點類似泰勒展開式(函數f(x)在點z的展開)。

現令技術分享,而令技術分享,然後將f(w)技術分享處展開(這裏t表示w叠代了t次),由公式8可得如下公式:


技術分享

通過上面的變形來看FIST方法最小化的並不是原函數,而是其一個上界函數(因為L是大於零的),但經過變形的公式其實仍然無法求其導數,那麽可以去掉公式9的相關常數部分再添加一些常數(因為在下面的公式中,我們使用了argmax/argmin函數,對於這個函數而言,加入或去除一些常數項是不影響最終得到的結果的,這點需要註意,否則無法理解其精髓)。經過處理的公式變為如下形式:

技術分享

技術分享

技術分享

最後的話

至於如何去叠代求解參數,感興趣的讀者可以在網上搜索,算法本身不是太復雜,最終參數w達到收斂即可;但這裏可能需要解釋的是公式11-13的含義,其實就我的理解而言由於目標函數不可導,我們通過一些處理使得它能達到要求,不是太嚴謹的話,你也可以這麽理解,即公式10可以按不同的維度寫作如下形式:

技術分享

如果對上式求導也是無法進行的,那麽可以分別在技術分享大於0或小於0時進行求導並令其為0,那麽實際得到的就是公式12,其中:

技術分享


關於機器學習中一般線性回歸的補充