廣義線性模型(3)線性回歸模型—Lasso回歸、Ridge回歸

1 Ridge回歸和Lasso回歸概述

在機(jī)器學(xué)習(xí)中,如果特征很多,但是訓(xùn)練數(shù)據(jù)X量不夠大的情況下,學(xué)習(xí)器很容易把X特有的一些特點(diǎn)也當(dāng)做是整個樣本空間的一般性質(zhì)進(jìn)行學(xué)習(xí),這就會出現(xiàn)過擬合的現(xiàn)象,線性回歸模型也不例外。對于過擬合,在模型層面上我們一般會在模型中加入正則化項(xiàng)來優(yōu)化模型,正則化項(xiàng)一般分為兩種:L1正則和L2正則。

  1. 線性回歸的L1正則稱為Lasso(least absolute shrinkage and selection operator)回歸,Lasso回歸和普通線性回歸模型的區(qū)別是在損失函數(shù)上增加了一個L1正則項(xiàng),\lambda為調(diào)節(jié)經(jīng)驗(yàn)風(fēng)險(xiǎn)和結(jié)構(gòu)風(fēng)險(xiǎn)之間關(guān)系的系數(shù),其損失函數(shù)為:

L(\theta )=\frac{1}{2}\sum_{i=1}^m(\sum_{i=1}^m\theta_ix_i-y_i)^2+\sum_{i=1}^m|\theta_i|=\frac{1}{2}(Xθ-Y)^T(Xθ-Y)+\lambda||\theta||_1

  1. 線性回歸的L2正則稱為Ridge回歸(嶺回歸),其與普通線性回歸模型的區(qū)別是在損失函數(shù)上增加了一個L2正則項(xiàng),其損失函數(shù)為:

L(\theta )=\frac{1}{2}\sum_{i=1}^m(\sum_{i=1}^m\theta_ix_i-y_i)^2+\sum_{i=1}^m\theta_i^2=\frac{1}{2}(Xθ-Y)^T(Xθ-Y)+\frac{\lambda}{2}||\theta||^2

Ridge回歸(L2正則)會傾向于讓模型選擇更小的參數(shù),但不會使參數(shù)為0,所以L2正則不會減少模型的特征;而Lasso回歸(L1正則)能使一些“不重要”的特征的參數(shù)為0,相當(dāng)于丟棄了這個特征,簡化了模型。

2 Ridge回歸和Lasso回歸求解

2.1 Ridge回歸求解

根據(jù)上面的損失函數(shù)可知,Ridge回歸就是在原線性回歸損失函數(shù)的基礎(chǔ)上加了個平方項(xiàng),并不影響對損失函數(shù)進(jìn)行求導(dǎo),所以最小二乘法和梯度下降法都沒問題,對損失函數(shù)求導(dǎo)得到:

\frac{\partial}{\partial\theta}L(\theta) = X^T(X\theta - Y)+\lambda\theta

使用最小二乘法求解\theta

θ = (X^TX+\theta E)^{-1}X^TY

使用梯度下降法求解\theta

\mathbf\theta= \mathbf\theta - \lambda [X^T(X\theta - \mathbf{Y})+\lambda\theta]

2.2 Lasso回歸求解

Lasso回歸的特殊之處在于其損失函數(shù)中包含一個絕對值項(xiàng)\lambda||\theta||_1,其在0處是非連續(xù)可導(dǎo)的,故普通的最小二乘法和梯度下降就都沒法用了,所以需要我們來探索一下Lasso回歸的參數(shù)求解方法。

2.2.1 次梯度方法

1)次導(dǎo)數(shù)

首先回想下梯度下降的原理:假設(shè)損失函數(shù)為多元函數(shù)L(\theta),對其進(jìn)行一階泰勒展開得到:

L(\theta+\Delta \theta)\approx L(\theta)+\sum_i\frac{\partial L}{\partial\theta_i}\Delta\theta_i

所以:\Delta L(\theta)\approx\sum_i\frac{\partial L}{\partial \theta_i}\Delta \theta_i= \nabla L\Delta \theta,如果\Delta \theta=-\lambda \nabla L,則有:

\Delta L(\theta)\approx \nabla L\Delta \theta=-\lambda \nabla L^2

梯度\nabla L不為0時,\Delta L(\theta)為負(fù)值,所以當(dāng)\theta按負(fù)梯度-\lambda \nabla L更新時,損失函數(shù)在隨著不斷減小,這就是梯度下降的思想。

梯度即各個變量在一點(diǎn)處的一階導(dǎo)數(shù),一個一元函數(shù)在一階展開時有:

f(x+\Delta x)= f(x)+f'(x)\Delta x+R_2(x), \ R_2(x)為二階拉格朗日余項(xiàng)

f'(x)= \frac{f(x+\Delta x)-f(x)}{\Delta x}

函數(shù)可導(dǎo)的充要條件:函數(shù)在該點(diǎn)連續(xù)且左導(dǎo)數(shù)、右導(dǎo)數(shù)都存在并相等,稍微有些局限,不可導(dǎo)的函數(shù)怎么辦呢?為了處理不可導(dǎo)的問題,我們需要引出次導(dǎo)數(shù)的概念。

次導(dǎo)數(shù):凸函數(shù)f:I→R在點(diǎn)x_0的次導(dǎo)數(shù)是實(shí)數(shù)c使得:

f(x+\Delta x)-f(x)\geq c*\Delta x

我們可以證明,在點(diǎn)x_0處的次導(dǎo)數(shù)的集合是一個非空閉區(qū)間[a,b],其中ab是單側(cè)極限:

它們一定存在,且滿足a≤b。所有次導(dǎo)數(shù)的集合[a,b]稱為函數(shù)fx_0處的次微分。由此可知,凸函數(shù)f(x)=|x|在原點(diǎn)的次導(dǎo)數(shù)是區(qū)間[?1, 1]。

如上圖,函數(shù)在某一點(diǎn)的導(dǎo)數(shù)可以看成函數(shù)在這一點(diǎn)上的切線,那么在原點(diǎn),因?yàn)檫@一點(diǎn)不是光滑的,所以可以找到實(shí)線下方的無數(shù)條支撐直線(一維支撐超平面,支撐超平面:一個平面會把空間劃分為兩部分,能使函數(shù)圖像僅在其中一部分的超平面),形成一個曲線族。我們就把這些支撐直線斜率的范圍定義為這一點(diǎn)的次導(dǎo)數(shù)(subgradient)。

次導(dǎo)數(shù)性質(zhì):

  • 凸函數(shù)f:I→Rx_0可導(dǎo),當(dāng)且僅當(dāng)次微分只由一個點(diǎn)組成,這個點(diǎn)就是函數(shù)在x_0的導(dǎo)數(shù),即連續(xù)可導(dǎo)的點(diǎn)處的支撐直線只能畫出來一條;
  • 點(diǎn)x_0是凸函數(shù)f的最小值,當(dāng)且僅當(dāng)次微分中包含零,也就是說,在上面的圖中,我們可以作一條水平的“次切線”。這個性質(zhì)是“可導(dǎo)函數(shù)在極小值的導(dǎo)數(shù)是零”的事實(shí)的推廣,想象一下|x|圖像就很容易理解這一點(diǎn)。
2)次梯度

將次導(dǎo)數(shù)和次微分的概念推廣到多元函數(shù),就可以得到次梯度了。如果f是一個實(shí)變量凸函數(shù),函數(shù)f在點(diǎn)x_0的次梯度對于所有的x都有:

f(x)\geq f(x_0)+g^T(x-x_0)

可以想象一下上面的二維的圖來理解一下這個定義,其實(shí)幾何含義就是把那些支撐超平面的向量想成次梯度,次梯度的性質(zhì):

  • 凸函數(shù)的次梯度總是存在;
  • 如果函數(shù)在x_0處可微,則次梯度唯一,且等于梯度;
  • 當(dāng)且僅當(dāng)0屬于函數(shù)f在點(diǎn)x^*處次梯度集合的元素時,x^*為最優(yōu)解,因?yàn)楫?dāng)次梯度為0時有f(x)\geq f(x^*)+0(x-x_0)=f(x^*)對所有x成立。

為什么用次梯度可以求最小值呢?定義中說次梯度對所有x成立,那么函數(shù)最小值對應(yīng)的x^*想必也是成立的,即:

f(x^*)-f(x_0)\leq 0\geq g^T(x^*-x_0)=|g^T|*|x^*-x_0|*cos\theta

所以可知次梯度-g^Tx^*-x_0之間的夾角\theta小于等于90°,因此-g^T是與x^*-x_0方向不背離的,即從x_0可能向x^*靠近,因此可以認(rèn)為沿著負(fù)次梯度方向也可能是在逼近最小值(不絕對,不像梯度下降那樣能保證損失減?。?/p>

3)次梯度方法

次梯度方法 (subgradient method) 的做法與梯度下降類似:

x^{t+1}=x^{t}-\lambda_{t} g^t

其中,g^t是次梯度集合中的一個,\lambda一般是設(shè)定好的步長。因?yàn)榇翁荻确较虿灰欢ㄊ购瘮?shù)值減小,所以并不是迭代到最后的x就是最優(yōu)的,需要保留每一步的結(jié)果進(jìn)行對比:

f(x^k_{best})=min(f(x^i)),i=1,2,...,k

至于算法會不會收斂,可以看下方參考資料中的證明。次梯度法的優(yōu)勢是比傳統(tǒng)方法處理問題范圍大,劣勢是算法收斂速度慢。

2.2.2 坐標(biāo)下降法(coordinate descent)

1)坐標(biāo)下降法原理

坐標(biāo)下降法,其含義就是讓函數(shù)值沿著坐標(biāo)軸下降,其基本思想是:一個可微的凸函數(shù)f(x),其中x是n維向量,可以理解為x有n個坐標(biāo)軸,如果在某一點(diǎn)x^*,使得f(x^*)在每一個坐標(biāo)軸x_i(i = 1,2,...n)上都是最小值,那么f(x^*)就是一個全局的最小值,如下圖,在這一點(diǎn)對可微的凸函數(shù)有:

對于不可微的凸函數(shù),這一結(jié)論并不成立,即收斂點(diǎn)并不一定是全局最優(yōu),如下圖所示,兩個坐標(biāo)軸方向的迭代會在紅色虛線的交叉處停止,因?yàn)樵谶@兩個方向單獨(dú)來看,都已經(jīng)找不到更小的點(diǎn)了,實(shí)際上并沒有到全局最優(yōu)點(diǎn):

讓我們回憶一下Lasso回歸的損失函數(shù)形式:

L(\theta )=\frac{1}{2}\sum_{i=1}^m(\sum_{i=1}^m\theta_ix_i-y_i)^2+\sum_{i=1}^m|\theta_i|

其損失函數(shù)的形式是:y=g(x)+\sum_i^n h_i(x_i),其中g(x)是可微的凸函數(shù),每個h_i(x_i)都是不可微的凸函數(shù),這種形式可不可以使用坐標(biāo)下降法呢?答案是可以的,如下圖所示:

從幾何上理解:因?yàn)榧由系拿總€h_i(x_i)都是凸函數(shù),也就是在每個坐標(biāo)軸上都是

理論上來看:要證明收斂點(diǎn)x為全局最優(yōu)解,則要有對任意yf(y) -f(x)\geq 0,而且對于凸函數(shù),其必然滿足一階條件:g(y)-g(x)\geq \nabla g(x)^T(y-x),故綜合可得:

f(y) -f(x)= g(y)-g(x)+\sum_i^n [h_i(y_i)-h_i(x_i)]

f(y) -f(x)\geq \nabla g(x)^T(y-x)+\sum_i^n [h(y_i)-h(x_i)]=\sum_i^n [\nabla_i g(x_i)(y_i-x_i)+h_i(y_i)-h_i(x_i)]

后面這個式子將任意的點(diǎn)y與收斂點(diǎn)x比較大小的問題轉(zhuǎn)移到了各個坐標(biāo)軸上,因?yàn)槭諗奎c(diǎn)是各個坐標(biāo)軸的最小值,所以\nabla_i g(x_i)(y_i-x_i)+h_i(y_i)-h_i(x_i)\geq 0,所以收斂點(diǎn)是全局最優(yōu)。

2)坐標(biāo)下降法用法

每一輪迭代中,分別把損失函數(shù)看做xn個維度x_i的函數(shù),對每個函數(shù)求極小值,當(dāng)所有的坐標(biāo)軸上的x_i(i = 1,2,...n)都達(dá)到收斂時,損失函數(shù)最小,此時的x即為我們要求的結(jié)果。

具體的算法過程:

  1. 隨機(jī)取一個初值x^{(0)} ,(0)代表我們迭代的輪數(shù);

  2. 對于第k輪的迭代:我們從x^{(k)}_1開始,到x^{(k)}_n為止,依次求x^{(k)}_i,x^{(k)}_i的表達(dá)式如下:

  1. 如果達(dá)到了設(shè)定的終止條件,則終止迭代,得到收斂點(diǎn)x,比如設(shè)定一個閾值,如果在所有維度上變化都小與這個值,那么終止迭代。

小結(jié):

  • 坐標(biāo)下降每次只進(jìn)行一個坐標(biāo)軸的優(yōu)化,如果多個一起優(yōu)化不一定能收斂;
  • 每次迭代中坐標(biāo)軸的順序可以是任意的,即可以按{1,2,...,n}的任何順序進(jìn)行下降;
  • 坐標(biāo)下降每一輪迭代的效果類似于梯度下降的一次迭代;
  • 坐標(biāo)下降法的優(yōu)點(diǎn)是非常簡單高效,適用性也比較廣。

3 總結(jié)

本篇主要介紹了Ridge回歸和Lasso回歸的概念,當(dāng)我們需要正則降低模型結(jié)構(gòu)風(fēng)險(xiǎn)的時候,他們是非常合適的。此外,本文介紹了他們的求解方法,其中Lasso回歸的求解較為復(fù)雜,除了本文提到的次梯度方法和坐標(biāo)下降法之外,還有別的方法可用,比如最小角回歸法、近端梯度下降法等,以后有時間了再加上吧,下一篇打算說說邏輯回歸了。



主要參考
【機(jī)器學(xué)習(xí)】次梯度(subgradient)方法
坐標(biāo)下降法(Coordinate descent)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容