Ridge回歸、Lasso回歸和彈性網回歸
目錄
在處理較為復雜的數據的回歸問題時,普通的線性回歸算法通常會出現預測精度不夠,如果模型中的特征之間有相關關系,就會增加模型的復雜程度。當數據集中的特征之間有較強的線性相關性時,即特征之間出現嚴重的多重共線性時,用普通最小二乘法估計模型參數,往往參數估計的方差太大,此時,求解出來的模型就很不穩定。在具體取值上與真值有較大的偏差,有時會出現與實際意義不符的正負號。同時,當樣本特征很多,而樣本數相對較少時,模型很容易陷入過擬合。此時權重系數就會非常的大。
嶺回歸與Lasso回歸的出現是為了解決線性回歸出現的過擬合以及在通過正規方程方法求解\(w\)的過程中出現的\((X^TX)\)不可逆這兩類問題的,這兩種回歸均通過在損失函數中引入正則化項來達到目的。
嶺回歸最先用來處理特征數多於樣本數的情況,現在也用於在估計中加入偏差,從而得到更好的估計。這里通過引入\(\lambda\)限制了所有\(w^2\)之和,通過引入該懲罰項,能夠減弱不重要的參數,這個技術在統計學上也叫作縮減(shrinkage)。和嶺回歸類似,另一個縮減方法LASSO也加入了正則項對回歸系數做了限定。
為了防止過擬合(\(w\)過大),在損失函數后添加復雜度懲罰因子,即正則項來防止過擬合。正則項可以使用L1正則化(Lasso)、L2正則化(Ridge),或結合L1和L2正則化(Elastic Net)。
1. Ridge回歸
給定數據集\(D=\{(\pmb x_1,y_1),(\pmb x_2,y_2),\dots,(\pmb x_m,y_m)\}\),其中\(\pmb x_i = (x_{i1},x_{i2},\dots,x_{id})\),\(y_i \in R\)。在線性回歸模型中,我們以平方誤差作為損失函數,則優化目標為
為了緩解過擬合問題,可以對上式引入正則化項。若使用\(L_2\)范數正則化,則有
其中,正則化參數\(\lambda \gt 0\)。\(\lambda\)越大,則為了使\(J(w)\)最小化,系數\(w\)就越小。在線性回歸中,式\((2)\)被稱為“嶺回歸”(Ridge regression),通過引入\(L_2\)范數正則化,確能顯著降低過擬合的風險。
在學習線性回歸模型的時候,我們通過最小二乘法求得模型系數的解析解為
同樣的,我們可以直接計算得到在加入\(L_2\)正則項時的模型系數:
令\(\frac{\partial{J(w)}}{\partial w} = 0\)
單位矩陣\(I\)的對角線上全是1,像一條山嶺一樣,這也是嶺回歸名稱的由來。
嶺回歸與線性回歸的解析解
在線性回歸中,要保證能夠求得解析解,必須保證\(\pmb X^T \pmb X\)矩陣是滿秩矩陣或正定矩陣,即\(\pmb X^T \pmb X\)可逆。但在實際的數據當中,自變量之間可能存在高度自相關性,或者自變量個數大於等於觀測個數,就會導致系數無解或結果無效。為了能夠克服這個問題,可以根據業務知識,將那些高自相關的變量進行刪除;或者選用嶺回歸也能夠避免\(\pmb X^T \pmb X\)的不可逆。
嶺回歸一般可以用來解決線性回歸模型系數無解的兩種情況,一方面是自變量間存在高度多重共線性,另一方面則是自變量個數大於等於觀測個數。針對這兩種情況,我們不妨設計兩個矩陣,來計算一下\(\pmb X^T \pmb X\)的行列式。
第一種矩陣的第一列和低列存在兩倍關系,即多重共線性
計算行列式:\(|X^TX| = 0\)
第二種矩陣的列數比行數多,即非滿秩
計算行列式:\(|X^TX| = 0\)
所以,不管是高度多重共線性的矩陣還是列數多於觀測數的矩陣,最終算出來的行列式都等於0或者是近似為0,類似於這樣的矩陣,都會導致線性回歸模型的系數無解或解無意義,因為矩陣行列式近似為0時,其逆將偏於無窮大,導致回歸系數也被放大。
嶺回歸方法非常巧妙的化解了這個問題,即在\(X^TX\)的基礎上加上一個較小的\(\lambda\)擾動 ,從而使得行列式不再為0。從令一個角度看,\(X^TX\)是一個半正定矩陣,在加入\(\lambda I\)之后,可以看出\((X^TX+\lambda I)\)是一個正定矩陣。
2. LASSO回歸
如果將嶺回歸中的\(L_2\)范數正則化替換為\(L_1\)范數正則化,則有
其中,正則化參數\(\lambda \gt 0\)。在線性回歸中,上式被稱為LASSO(Least Absolute Selection Operator)。
那么,模型系數如何求解呢?這個問題由於正則化項在零點處不可求導,所以使用非梯度下降法進行求解,如坐標下降法、近端梯度下降或最小角回歸法。
下面將使用坐標下降法進行求解(對於\(d\)維參數的可微凸函數\(J(w)\),如果存在\(\hat w\)使得\(J(w)\)在每個坐標軸上均達到最小值,則\(J(\hat w)\)就是點\(\hat w\)上的全局最小值),控制其他\(d-1\)個參數不變,對目標函數中的某一個\(w_j\)求偏導,以此類推對剩下的\(d-1\)個參數求偏導,最終令每個分量下的導函數為\(0\),得到使目標函數達到全局最小的\(\hat w\)。
首先,我們可以將目標函數寫成如下形式:
其中\(RSS(w)\)表示誤差平方和,下面分為兩步求解:
1)RSS偏導
下面做一下標記化簡,令
於是將式\((7)\)簡化為:
2)正則項偏導
次梯度方法(subgradient method)是傳統的梯度下降方法的拓展,用來處理不可導的凸函數。
定義:凸函數\(f:l\rightarrow R\)在點\(x_0\)的次導數,是實數\(c\)使得\(f(x)-f(x_0) \ge c(x-x_0)\),對於所有\(l\)內的\(x\)。我們可以證明,在點\(x_0\)的次導數的集合是一個非空閉區間\([a,b]\),其中\(a\)和\(b\)是單側極限,\(a=\lim_{x\rightarrow x_0-}\frac{f(x)-f(x_0)}{x-x_0}\),\(b=\lim_{x\rightarrow x_0+}\frac{f(x)-f(x_0)}{x-x_0}\),它們一定存在,且滿足\(a\le b\)。所有次導數的集合\([a,b]\)稱為函數\(f\)在\(x_0\)的次微分。
例子:考慮凸函數\(f(x)=|x|\)。在原點的次導數是區間\([-1,1]\)。\(x_0 \lt 0\)時,次導數的單元素集合\(\{-1\}\),而\(x_0 \gt 0\)時,次導數的單元素集合\(\{1\}\)。
所以,我們有
3)整體偏導數
想要獲得最優解,令式\((12)\)等於0,解得:
3. 彈性網回歸(Elastic Net)
Lasso回歸雖然大大降低了預測方差,達到了系數收縮和變量選擇的目的,但是也有一定的局限性。譬如
- 在Lasso回歸求解路徑中,對於\(m×d\)的設計矩陣來說,最多只能選出\(min(m,d)\)個變量。當\(d \gt m\)的時候,最多只能選出\(m\)個預測變量。因此,對於\(d∼m\)的情況,Lasso方法不能夠很好的選出真實的模型。
- 如果預測變量具有群組效應,則用Lasso回歸時,只能選出其中的一個預測變量。
- 對於通常的\(m \gt d\)的情形,如果預測變量中存在很強的共線性,Lasso的預測表現受控於嶺回歸。
基於以上幾點Lasso回歸的局限性,Zou和Hastie在2005年提出了彈性網回歸方法,優化目標為:
若令\(\lambda = \lambda_1 + \lambda_2, \alpha = \frac{\lambda}{\lambda_1 + \lambda_2}\),則優化目標可寫成
由此可知,彈性網的懲罰函數\(\lambda\sum_{j=1}^d(\alpha|w_j|+(1-\alpha)w_j^2)\)恰好為嶺回歸懲罰函數和Lasso懲罰函數的一個凸線性組合。當\(\alpha=0\)時,彈性網回歸即為嶺回歸;當\(\alpha=1\)時,彈性網回歸即為Lasso回歸。因此,彈性網回歸兼有Lasso回歸和嶺回歸的優點,既能達到變量選擇的目的,又具有很好的群組效應。
更多彈性網回歸的內容可以閱讀Hui Zou和Trevor Hastie的論文《Zou, H.; Hastie, T. (2005). Regularization and Variable Selection via the Elastic Net. Journal of the Royal Statistical Society. Series B (statistical Methodology). 67 (2): 301–20.》
參考來源:
1) 機器學習-周志華
2)從零開始學Python【24】--嶺回歸及LASSO回歸(理論部分)
3)https://www.biaodianfu.com/ridge-lasso-elasticnet.html
4)https://blog.csdn.net/weixin_43374551/java/article/details/83688913
5)https://blog.csdn.net/u012151283/article/details/77487729 Lasso回歸的坐標下降法推導
6)https://blog.csdn.net/weixin_41500849/article/details/80447501 嶺回歸,Lasso回歸和彈性網回歸理論及特點