Lasso回歸總結


Ridge回歸

由於直接套用線性回歸可能產生過擬合,我們需要加入正則化項,如果加入的是L2正則化項,就是Ridge回歸,有時也翻譯為嶺回歸。它和一般線性回歸的區別是在損失函數上增加了一個L2正則化的項,和一個調節線性回歸項和正則化項權重的系數α。損失函數表達式如下:

J(θ)=1/2(Xθ−Y)T(Xθ−Y)+1/2α||θ||22

其中α為常數系數,需要進行調優。||θ||2為L2范數。Ridge回歸的解法和一般線性回歸大同小異。如果采用梯度下降法,則每一輪θ迭代的表達式是:

θ=θ−(βXT(Xθ−Y)+αθ)

其中β為步長。

如果用最小二乘法,則θ的結果是:

θ=(XTX+αE)−1XT

其中E為單位矩陣。

Ridge回歸在不拋棄任何一個變量的情況下,縮小了回歸系數,使得模型相對而言比較的穩定,但這會使得模型的變量特別多,模型解釋性差。有沒有折中一點的辦法呢?即又可以防止過擬合,同時克服Ridge回歸模型變量多的缺點呢?有,這就是下面說的Lasso回歸。

 

Lasso回歸概述

Lasso回歸有時也叫做線性回歸的L1正則化,和Ridge回歸的主要區別就是在正則化項,Ridge回歸用的是L2正則化,而Lasso回歸用的是L1正則化。Lasso回歸的損失函數表達式如下:

J(θ)=1/2n(Xθ−Y)T(Xθ−Y)+α||θ||1

其中n為樣本個數,α為常數系數,需要進行調優。||θ||1為L1范數。   

Lasso回歸使得一些系數變小,甚至還是一些絕對值較小的系數直接變為0,因此特別適用於參數數目縮減與參數的選擇,因而用來估計稀疏參數的線性模型。但是Lasso回歸有一個很大的問題,導致我們需要把它單獨拎出來講,就是它的損失函數不是連續可導的,由於L1范數用的是絕對值之和,導致損失函數有不可導的點。也就是說,我們的最小二乘法,梯度下降法,牛頓法與擬牛頓法對它統統失效了。那我們怎么才能求有這個L1范數的損失函數極小值呢?接下來介紹兩種全新的求極值解法:坐標軸下降法(coordinate descent)和最小角回歸法( Least Angle Regression, LARS)。

 

坐標軸下降法求解Lasso回歸

坐標軸下降法顧名思義,是沿着坐標軸的方向去下降,這和梯度下降不同。梯度下降是沿着梯度的負方向下降。不過梯度下降和坐標軸下降的共性就都是迭代法,通過啟發式的方式一步步迭代求解函數的最小值。

坐標軸下降法的數學依據主要是這個結論(此處不做證明):一個可微的凸函數J(θ), 其中θ是nx1的向量,即有n個維度。如果在某一點θ¯,使得J(θ)在每一個坐標軸θ¯i(i = 1,2,...n)上都是最小值,那么J(θi)就是一個全局的最小值。

於是我們的優化目標就是在θ的n個坐標軸上(或者說向量的方向上)對損失函數做迭代的下降,當所有的坐標軸上的θi(i = 1,2,...n)都達到收斂時,我們的損失函數最小,此時的θ即為我們要求的結果。

下面我們看看具體的算法過程:

  1. 首先,我們把θ向量隨機取一個初值。記為θ(0) ,上面的括號里面的數字代表我們迭代的輪數,當前初始輪數為0.

  2. 對於第k輪的迭代。我們從θ(k)1開始,到θ(k)n為止,依次求θ(k)i。θ(k)i的表達式如下:

    θ(k)i ∈ argmin J(θ(k)1,θ(k)2,...θ(k)i−1,θi,θ(k−1)i+1,...,θ(k−1)n)

  也就是說θ(k)i 是使J(θ(k)1,θ(k)2,...θ(k)i−1,θi,θ(k−1)i+1,...,θ(k−1)n)最小化時候的θi的值。此時J(θ)只有θ(k)i是變量,其余均為常量,因此最小值容易通過求導求得。

3. 檢查θ(k)向量和θ(k−1)向量在各個維度上的變化情況,如果在所有維度上變化都足夠小,那么θ(k)即為最終結果,否則轉入2,繼續第k+1輪的迭代。

以上就是坐標軸下降法的求極值過程,可以和梯度下降做一個比較:

  a) 坐標軸下降法在每次迭代中在當前點處沿一個坐標方向進行一維搜索 ,固定其他的坐標方向,找到一個函數的局部極小值。而梯度下降總是沿着梯度的負方向求函數的局部最小值。

  b) 坐標軸下降優化方法是一種非梯度優化算法。在整個過程中依次循環使用不同的坐標方向進行迭代,一個周期的一維搜索迭代過程相當於一個梯度下降的迭代。

  c) 梯度下降是利用目標函數的導數來確定搜索方向的,該梯度方向可能不與任何坐標軸平行。而坐標軸下降法法是利用當前坐標方向進行搜索,不需要求目標函數的導數,只按照某一坐標方向進行搜索最小值。

  d) 兩者都是迭代方法,且每一輪迭代,都需要O(mn)的計算量(m為樣本數,n為系數向量的維度)

 

最小角回歸法求解Lasso回歸

在介紹最小角回歸前,先介紹兩個預備算法:

 

前向選擇(Forward Selection)算法

前向選擇算法的原理是是一種典型的貪心算法。要解決的問題是對於:Y=Xθ這樣的線性關系,如何求解系數向量θ的問題。其中Y為 mx1的向量,X為mxn的矩陣,θ為nx1的向量。m為樣本數量,n為特征維度。

把矩陣X看做n個mx1的向量Xi(i=1,2,...n),在Y的X變量Xi(i =1,2,...m)中,選擇和目標Y最為接近(余弦距離最大)的一個變量Xk,用Xk來逼近Y,得到下式:

Y-=Xkθk

其中:θk=<Xk,Y>/||Xk||2

即:Y¯ 是 Y在 Xk上的投影。那么,可以定義殘差(residual):   Yyes=Y−Y-。由於是投影,所以很容易知道 Yyes和Xk是正交的。再以Yyes為新的因變量,去掉Xk后,剩下的自變量的集合Xi,i={1,2,3...k−1,k+1,...n}為新的自變量集合,重復剛才投影和殘差的操作,直到殘差為0,或者所有的自變量都用完了,才停止算法。

當X只有2維時,例子如上圖,和Y最接近的是X1,首先在X1上面投影,殘差如上圖長虛線。此時X1θ1模擬了Y,θ1模擬了θ(僅僅模擬了一個維度)。接着發現最接近的是X2,此時用殘差接着在X2投影,殘差如圖中短虛線。由於沒有其他自變量了,此時X1θ1+X2θ2模擬了Y,對應的模擬了兩個維度的θ即為最終結果,此處θ計算設計較多矩陣運算,這里不討論。

此算法對每個變量只需要執行一次操作,效率高,速度快。但也容易看出,當自變量不是正交的時候,由於每次都是在做投影,所有算法只能給出一個局部近似解。因此,這個簡單的算法太粗糙,還不能直接用於我們的Lasso回歸。

 

前向梯度(Forward Stagewise)算法

前向梯度算法和前向選擇算法有類似的地方,也是在Y的X變量Xi(i =1,2,...n)中,選擇和目標Y最為接近(余弦距離最大)的一個變量Xk,用Xk來逼近Y,但是前向梯度算法不是粗暴的用投影,而是每次在最為接近的自變量Xt的方向移動一小步,然后再看殘差Yyes和哪個Xi(i =1,2,...n)最為接近。此時我們也不會把Xt 去除,因為我們只是前進了一小步,有可能下面最接近的自變量還是Xt 。如此進行下去,直到殘差Yyes減小到足夠小,算法停止。

當X只有2維時,例子如上圖,和Y最接近的是X1,首先在X1上面走一小段距離,此處ε為一個較小的常量,發現此時的殘差還是和X1最接近。那么接着沿X1走,一直走到發現殘差不是和X1最接近,而是和X2最接近,此時殘差如上圖長虛線。接着沿着X2走一小步,發現殘差此時又和X1最接近,那么開始沿着X1走,走完一步后發現殘差為0,那么算法停止。此時Y由剛才所有的所有步相加而模擬,對應的算出的系數θ即為最終結果。此處θ計算設計較多矩陣運算,這里不討論。

當算法在ε很小的時候,可以很精確的給出最優解,當然,其計算的迭代次數也是大大的增加。和前向選擇算法相比,前向梯度算法更加精確,但是更加復雜。

有沒有折中的辦法可以綜合前向梯度算法和前向選擇算法的優點,做一個折中呢?這就是終於要出場的最小角回歸法。

 

最小角回歸(Least Angle Regression, LARS)算法

最小角回歸法對前向梯度算法和前向選擇算法做了折中,保留了前向梯度算法一定程度的精確性,同時簡化了前向梯度算法一步步迭代的過程。具體算法是這樣的: 

首先,還是找到與因變量Y最接近或者相關度最高的自變量Xk,使用類似於前向梯度算法中的殘差計算方法,得到新的目標Yyes,此時不用和前向梯度算法一樣小步小步的走。而是直接向前走直到出現一個Xt,使得Xt和Yyes的相關度和Xk與Yyes的相關度是一樣的,此時殘差Yyes就在Xt和Xk的角平分線方向上,此時我們開始沿着這個殘差角平分線走,直到出現第三個特征Xp和Yyes的相關度足夠大的時候,即Xp到當前殘差Yyes的相關度和θt,θk與Yyes的一樣。將其也叫入到Y的逼近特征集合中,並用Y的逼近特征集合的共同角分線,作為新的逼近方向。以此循環,直到Yyes足夠的小,或者說所有的變量都已經取完了,算法停止。此時對應的系數θ即為最終結果。

當θ只有2維時,例子如上圖,和Y最接近的是X1,首先在X1上面走一段距離,一直到殘差在X1和X2的角平分線上,此時沿着角平分線走,直到殘差最夠小時停止,此時對應的系數β即為最終結果。此處θ計算設計較多矩陣運算,這里不討論。

最小角回歸法是一個適用於高維數據的回歸算法,其主要的優點有:

  1)特別適合於特征維度n 遠高於樣本數m的情況。

  2)算法的最壞計算復雜度和最小二乘法類似,但是其計算速度幾乎和前向選擇算法一樣

  3)可以產生分段線性結果的完整路徑,這在模型的交叉驗證中極為有用

主要的缺點是:

  由於LARS的迭代方向是根據目標的殘差而定,所以該算法對樣本的噪聲極為敏感。

 

總結

Lasso回歸是在ridge回歸的基礎上發展起來的,如果模型的特征非常多,需要壓縮,那么Lasso回歸是很好的選擇。一般的情況下,普通的線性回歸模型就夠了。

 

參考自Lasso回歸算法: 坐標軸下降法與最小角回歸法小結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM