LASSO回歸損失函式詳解

2021-10-03 18:32:40 字數 4606 閱讀 1464

這兩個都是正則化的手段。lasso是基於回歸係數的一範數,ridge是基於回歸係數的二範數的平方。

根據hastie, tibshirani, friedman的經典教材,如果你的模型中有很多變數對模型都有些許影響,那麼用ridge;如果你的模型中只有少量變數對模型很大影響,那麼用lasso。lasso可以使得很多變數的係數為0(相當於降維),但是ridge卻不能。

因為ridge計算起來更快,所以當資料量特別大的時候,更傾向於用ridge。

最萬能的方法是用lasso和ridge都試一試,比較兩者cross validation的結果。

最後補充一下,你也可以嘗試一下兩者的混合,elastic net。

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

j(θ)=1/2(xθ−y)t(xθ−y)+1/2α||θ||22

其中α為常數係數,需要進行調優。||θ||2為l2範數。ridge回歸的解法和一般線性回歸大同小異。如果採用梯度下降法,則每一輪θ迭代的表示式是:

θ=θ−(βxt(xθ−y)+αθ)

其中β為步長。

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

θ=(xtx+αe)−1xty 

其中e為單位矩陣。

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

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

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

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

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

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

對於第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為係數向量的維度)

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

前向選擇演算法的原理是是一種典型的貪心演算法。要解決的問題是對於: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||2

即:y¯ 是 y在 xk上的投影。那麼,可以定義殘差(residual):   yyes=y−y-。由於是投影,所以很容易知道 yyes和xk是正交的。再以yyes為新的因變數,去掉xk後,剩下的自變數的集合xi,i=為新的自變數集合,重複剛才投影和殘差的操作,直到殘差為0,或者所有的自變數都用完了,才停止演算法。

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

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

前向梯度演算法和前向選擇演算法有類似的地方,也是在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由剛才所有的所有步相加而模擬,對應的算出的係數θ即為最終結果。此處θ計算設計較多矩陣運算,這裡不討論。

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

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

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

首先,還是找到與因變數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回歸 LASSO回歸求解

很感謝網上的優質部落格,正是因為有了這些知識的分享,才讓學習的成本越來越低。我們假定有 lasso回歸訓練出來的係數是稀疏的,可用於做特徵篩選。但是怎麼訓練呢,因為絕對值函式在 處是不可導的,所以直接採用梯度下降法是行不通的,需要利用別的演算法。梯度是乙個函式增長最快的方向,但是當函式在某點不可導時...

嶺回歸 lasso回歸

嶺回歸 ridge regression 和lasso least absolute shrinkage and selection operator 都是ols的改進,知乎上有關於三者異同的詳細討論 關於lasso 這裡記錄一下最近的學習心得。嶺回歸的含義 嶺回歸的權值計算公式中有單位方陣i,就像...

Lasso回歸實驗

資料集我們使用的是 sklearn包中自帶的波士頓房價資料集。乙個簡單的 lasso 回歸實驗還是那六個步驟 載入資料集 拆分資料集 建立模型 在訓練集學習得到模型 模型 模型評測 關於訓練集和測試集的劃分我們使用的是留出法。至於引數設定,我們設定隨機種子為10,學習率為0.1,迭代次數為10000...