1 Ridge回歸和Lasso回歸概述
在機(jī)器學(xué)習(xí)中,如果特征很多,但是訓(xùn)練數(shù)據(jù)量不夠大的情況下,學(xué)習(xí)器很容易把
特有的一些特點(diǎn)也當(dāng)做是整個樣本空間的一般性質(zhì)進(jìn)行學(xué)習(xí),這就會出現(xiàn)過擬合的現(xiàn)象,線性回歸模型也不例外。對于過擬合,在模型層面上我們一般會在模型中加入正則化項(xiàng)來優(yōu)化模型,正則化項(xiàng)一般分為兩種:L1正則和L2正則。
- 線性回歸的L1正則稱為Lasso(least absolute shrinkage and selection operator)回歸,Lasso回歸和普通線性回歸模型的區(qū)別是在損失函數(shù)上增加了一個L1正則項(xiàng),
為調(diào)節(jié)經(jīng)驗(yàn)風(fēng)險(xiǎn)和結(jié)構(gòu)風(fēng)險(xiǎn)之間關(guān)系的系數(shù),其損失函數(shù)為:
- 線性回歸的L2正則稱為Ridge回歸(嶺回歸),其與普通線性回歸模型的區(qū)別是在損失函數(shù)上增加了一個L2正則項(xiàng),其損失函數(shù)為:
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)得到:
使用最小二乘法求解:
使用梯度下降法求解:
2.2 Lasso回歸求解
Lasso回歸的特殊之處在于其損失函數(shù)中包含一個絕對值項(xiàng),其在0處是非連續(xù)可導(dǎo)的,故普通的最小二乘法和梯度下降就都沒法用了,所以需要我們來探索一下Lasso回歸的參數(shù)求解方法。
2.2.1 次梯度方法
1)次導(dǎo)數(shù)
首先回想下梯度下降的原理:假設(shè)損失函數(shù)為多元函數(shù),對其進(jìn)行一階泰勒展開得到:
所以:,如果
,則有:
梯度不為0時,
為負(fù)值,所以當(dāng)
按負(fù)梯度
更新時,損失函數(shù)在隨著不斷減小,這就是梯度下降的思想。
梯度即各個變量在一點(diǎn)處的一階導(dǎo)數(shù),一個一元函數(shù)在一階展開時有:
函數(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ù)在點(diǎn)
的次導(dǎo)數(shù)是實(shí)數(shù)
使得:
我們可以證明,在點(diǎn)處的次導(dǎo)數(shù)的集合是一個非空閉區(qū)間
,其中
和
是單側(cè)極限:


它們一定存在,且滿足。所有次導(dǎo)數(shù)的集合
稱為函數(shù)
在
處的次微分。由此可知,凸函數(shù)
在原點(diǎn)的次導(dǎo)數(shù)是區(qū)間
。

如上圖,函數(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ù)
在
可導(dǎo),當(dāng)且僅當(dāng)次微分只由一個點(diǎn)組成,這個點(diǎn)就是函數(shù)在
的導(dǎo)數(shù),即連續(xù)可導(dǎo)的點(diǎn)處的支撐直線只能畫出來一條;
- 點(diǎn)
是凸函數(shù)
的最小值,當(dāng)且僅當(dāng)次微分中包含零,也就是說,在上面的圖中,我們可以作一條水平的“次切線”。這個性質(zhì)是“可導(dǎo)函數(shù)在極小值的導(dǎo)數(shù)是零”的事實(shí)的推廣,想象一下
圖像就很容易理解這一點(diǎn)。
2)次梯度
將次導(dǎo)數(shù)和次微分的概念推廣到多元函數(shù),就可以得到次梯度了。如果是一個實(shí)變量凸函數(shù),函數(shù)
在點(diǎn)
的次梯度對于所有的
都有:
可以想象一下上面的二維的圖來理解一下這個定義,其實(shí)幾何含義就是把那些支撐超平面的向量想成次梯度,次梯度的性質(zhì):
- 凸函數(shù)的次梯度總是存在;
- 如果函數(shù)在
處可微,則次梯度唯一,且等于梯度;
- 當(dāng)且僅當(dāng)0屬于函數(shù)
在點(diǎn)
處次梯度集合的元素時,
為最優(yōu)解,因?yàn)楫?dāng)次梯度為0時有
對所有
成立。
為什么用次梯度可以求最小值呢?定義中說次梯度對所有成立,那么函數(shù)最小值對應(yīng)的
想必也是成立的,即:
所以可知次梯度與
之間的夾角
小于等于90°,因此
是與
方向不背離的,即從
可能向
靠近,因此可以認(rèn)為沿著負(fù)次梯度方向也可能是在逼近最小值(不絕對,不像梯度下降那樣能保證損失減?。?/p>
3)次梯度方法
次梯度方法 (subgradient method) 的做法與梯度下降類似:
其中,是次梯度集合中的一個,
一般是設(shè)定好的步長。因?yàn)榇翁荻确较虿灰欢ㄊ购瘮?shù)值減小,所以并不是迭代到最后的
就是最優(yōu)的,需要保留每一步的結(jié)果進(jìn)行對比:
至于算法會不會收斂,可以看下方參考資料中的證明。次梯度法的優(yōu)勢是比傳統(tǒng)方法處理問題范圍大,劣勢是算法收斂速度慢。
2.2.2 坐標(biāo)下降法(coordinate descent)
1)坐標(biāo)下降法原理
坐標(biāo)下降法,其含義就是讓函數(shù)值沿著坐標(biāo)軸下降,其基本思想是:一個可微的凸函數(shù),其中
是n維向量,可以理解為
有n個坐標(biāo)軸,如果在某一點(diǎn)
,使得
在每一個坐標(biāo)軸
上都是最小值,那么
就是一個全局的最小值,如下圖,在這一點(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ù)形式:
其損失函數(shù)的形式是:,其中
是可微的凸函數(shù),每個
都是不可微的凸函數(shù),這種形式可不可以使用坐標(biāo)下降法呢?答案是可以的,如下圖所示:

從幾何上理解:因?yàn)榧由系拿總€都是凸函數(shù),也就是在每個坐標(biāo)軸上都是
理論上來看:要證明收斂點(diǎn)為全局最優(yōu)解,則要有對任意
:
,而且對于凸函數(shù),其必然滿足一階條件:
,故綜合可得:
后面這個式子將任意的點(diǎn)y與收斂點(diǎn)x比較大小的問題轉(zhuǎn)移到了各個坐標(biāo)軸上,因?yàn)槭諗奎c(diǎn)是各個坐標(biāo)軸的最小值,所以,所以收斂點(diǎn)是全局最優(yōu)。
2)坐標(biāo)下降法用法
每一輪迭代中,分別把損失函數(shù)看做的
個維度
的函數(shù),對每個函數(shù)求極小值,當(dāng)所有的坐標(biāo)軸上的
都達(dá)到收斂時,損失函數(shù)最小,此時的
即為我們要求的結(jié)果。
具體的算法過程:
隨機(jī)取一個初值
,(0)代表我們迭代的輪數(shù);
對于第k輪的迭代:我們從
開始,到
為止,依次求
,
的表達(dá)式如下:

- 如果達(dá)到了設(shè)定的終止條件,則終止迭代,得到收斂點(diǎn)
,比如設(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)