14[NLP训练营]Lasso Regression

简介

Lasso Regression也叫Ridge Regression(岭回归),其实这两个都是线性回归模型的变种。
当线性回归加L1正则就是Lasso Regression,当线性回归加L2正则就是Ridge Regression。
公式输入请参考:在线Latex公式

Why We Prefer Sparsity

·如果维度太高,计算量也变得很高,尤其是在特征维度D>样本个数N的时候,特别需要Lasso来去掉多余特征,否则容易出现过拟合现象。这个之前有提到L1 norm可以帮助过滤多余特征。
·在稀疏性条件下,计算量只依赖非0项的个数
·提高可解释性,当参数很多的时候,无法看出哪些参数对目标函数有帮助。

Sparsity例子:Housing Price Application

*Lot size
*Single Family
*Year built
*Last sold price
Last sale price/sqft
*Finished sqft
*Unfinished sqft
Finished basement sqft
*#floors
*Flooring types
Parking type
Parking amount
Cooling
*Heating
Exterior materials
Roof type
Structure stylex
Dishwasher
Garbage disposal
Microwave
Range /Oven
Refrigerator
Washer
Dryer
Laundry location
Heating type
Jetted Tub
Deck
Fenced Yard
Lawn
Garden
Sprinkler System
以上这么多预测房价的特征中,其中星号表示比较重要的特征,那如何选取这些重要的特征?下面来分别看看。

确定特征的方法

Option1:Exhaustive Search:“all subsets”

假如我有一个特征集合 A = { f 1 , f 2 , f 3 , f 4 } A=\{f_1,f_2,f_3,f_4\} A={f1,f2,f3,f4}
由于不知道哪个特征好,用简单粗暴的方式来排列组合特征,然后看谁的准确率(acc)高
在这里插入图片描述
这些个特征的组合我们给个名字叫:Power set。可以看到Power set的大小是 2 n − 1 2^n-1 2n1,n为特征的个数。明显,特征个数超过10个就太复杂了。

Option2:Greedy Approaches

假如我有一个特征集合 A = { f 1 , f 2 , f 3 , f 4 , f 5 } A=\{f_1,f_2,f_3,f_4,f_5\} A={f1,f2,f3,f4,f5},5个特征
定义一个best_feature_set集合,并初始化为空

·Forward Stepwise

开始循环,第一个循环:
在这里插入图片描述
把找到的最好第二个特征 f 2 f_2 f2放入best_feature_set中
开始第二次循环,在A-best_feature_set中来循环:
在这里插入图片描述
这里找出来的 f 2 , f 4 f_2,f_4 f2,f4具有最高的准确率,这里 f 2 , f 4 f_2,f_4 f2,f4要比单个的 f 2 f_2 f2的准确度要高才行,不然就停止循环了。
以此类推。。。直到准确率没有新的最大值停止循环。

·Backward Stepwise

和上面的算法一样,只不过开始的best_feature_set集合初始化为A,然后依次去掉特征,每次选择产生准确最高那组的特征。
在这里插入图片描述
例如上图中去掉 f 2 f_2 f2,准确率最高,说明 f 2 f_2 f2不行,要去掉。
然后在循环,这个时候去掉 f 5 f_5 f5
在这里插入图片描述
当新一轮循环的最大准确率比上一轮的低,就停止循环。
在这里插入图片描述

Option3:via Regularization: A Principled Way(正则的方法)

这种方法不像前面的方式通过枚举的方式来选取特征,而是通过一个目标函数构建特征组合。
开始之前,先看这个:

Ridge regression:L2 regularized regression

假设有样本: D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} D={(x1,y1),(x2,y2),...,(xn,yn)},则线性回归的损失函数为:
L = ∣ ∣ X w − y ∣ ∣ F 2 + λ ∣ ∣ w ∣ ∣ 2 2 L=||Xw-y||^2_F+\lambda||w||^2_2 L=XwyF2+λw22
上面是矩阵的形式(X是矩阵,其他两个是向量),第一项写成最小二乘的形式是:
L = ∏ i = 1 n ( w T x i − y i ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||^2_2 L=i=1n(wTxiyi)2+λw22
以上线性回归加上L2的正则项就是岭回归。加了L2的正则项可以避免w很大

Lasso regression:L1 regularized regression

假设有样本: D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\} D={(x1,y1),(x2,y2),...,(xn,yn)},则线性回归的损失函数为:
L = ∣ ∣ X w − y ∣ ∣ F 2 + λ ∣ ∣ w ∣ ∣ 1 L=||Xw-y||^2_F+\lambda||w||_1 L=XwyF2+λw1
上面是矩阵的形式(X是矩阵,其他两个是向量),第一项写成最小二乘的形式是:
L = ∏ i = 1 n ( w T x i − y i ) 2 + λ ∣ ∣ w ∣ ∣ 1 L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||_1 L=i=1n(wTxiyi)2+λw1
上面是矩阵的形式,第一项写成最小二乘的形式是:
L = ∏ i = 1 n ( w T x i − y i ) 2 + λ ∣ ∣ w ∣ ∣ 1 L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||_1 L=i=1n(wTxiyi)2+λw1
如果我们对这个损失函数求偏导,先关注最后的正则项:
∣ w ∣ |w| w w w w的梯度是多少。
∂ ∣ ∣ w ∣ ∣ 1 ∂ w j = ∂ ∣ w j ∣ ∂ w j \cfrac{\partial||w||_1}{\partial w_j}=\cfrac{\partial |w_j|}{\partial w_j} wjw1=wjwj

w j w_j wj为正数和负数的时候梯度结果分别是正负1,当其等于0的时候,这个时候梯度有很多个解,图像上看:
在这里插入图片描述
这种需要分情况讨论的梯度下降称为sub-gradient descent。
但是,对于Lasso,有另外一种优化算法:

Coordinate Descent

Goal: minimize some function g
g ( w ) = g ( w 1 , w 2 , . . . , w D ) g(w)=g(w_1,w_2,...,w_D) g(w)=g(w1,w2,...,wD)
我的函数g有很多个维度,但是我每次寻求的最好的解是在某一个维度上的,这个时候可以把其他维度当作常数。
算法描述如下:
在t=1时刻,我们选定某一维度 w 1 w_1 w1,其他的看做是常数,那么
g ( w ) = g ( w 1 ) g(w)=g(w_1) g(w)=g(w1)
求解最佳的 w ^ 1 \hat w_1 w^1
w ^ 1 = a r g m i n w 1 g ( w 1 ) \hat w_1=arg\underset{w_1}{min}g(w_1) w^1=argw1ming(w1)
在t=2时刻,我们选定某一维度 w 5 w_5 w5,其他的看做是常数,那么
g ( w ) = g ( w 5 ) g(w)=g(w_5) g(w)=g(w5)
求解最佳的 w ^ 5 \hat w_5 w^5
w ^ 5 = a r g min ⁡ w 5 g ( w 5 ) \hat w_5=arg\underset{w_5}{\min}g(w_5) w^5=argw5ming(w5)
一直循环,直到函数收敛,循环过程中, w w w的选择可以按顺序,也可以随机选。

Coordinate Descent的特点

1、不需要设定step-size。
2、对于lasso objective,它会收敛。
3、维度选择方法可以依次选择或者随机选择。

Coordinate Descent for Lasso

把Lasso的损失函数抄下来:
L = ∏ i = 1 n ( w T x i − y i ) 2 + λ ∣ ∣ w ∣ ∣ 1 L=\prod_{i=1}^n(w^Tx_i-y_i)^2+\lambda||w||_1 L=i=1n(wTxiyi)2+λw1
下面写出加了log后的Lasso的损失函数,连乘变连加(这里有点没看懂,log没看见,后面的推导也省略了):
L = ∑ i = 1 n ( ∑ j = 1 d w j x i j + b − y i ) 2 + λ ∑ j = 1 d ∣ w j ∣ L=\sum_{i=1}^n(\sum_{j=1}^dw_jx_{ij}+b-y_i)^2+\lambda\sum_{j=1}^d|w_j| L=i=1n(j=1dwjxij+byi)2+λj=1dwj

其中 x i j x_{ij} xij代表第 i i i个样本的第 j j j个特征。
特征维度为 d d d。上式中第一项是最小二乘形式,第二项是L1正则项。
然后求损失函数L对某个特征维度 w l w_l wl的偏导(下式中后面那项其他维度对第 l l l维度求导为0,第二行单独把 w l w_l wl从求和里面拿出来,第三行把这项放到括号外):
∂ L ∂ w l = 2 ∑ i = 1 n ( ∑ j = 1 d w j x i j + b − y i ) ⋅ x i l + λ ∂ ∣ w l ∣ ∂ w l = 2 ∑ i = 1 n ( ∑ j ≠ l d w j x i j + b − y i + w l x i l ) ⋅ x i l + λ ∂ ∣ w l ∣ ∂ w l = 2 ∑ i = 1 n ( ∑ j ≠ l d w j x i j + b − y i ) ⋅ x i l + 2 ∑ i = 1 n w l x i l 2 + λ ∂ ∣ w l ∣ ∂ w l = 2 ∑ i = 1 n ( ∑ j ≠ l d w j x i j + b − y i ) ⋅ x i l + 2 w l ∑ i = 1 n x i l 2 + λ ∂ ∣ w l ∣ ∂ w l \begin{aligned} \cfrac{\partial L}{\partial w_l}&=2\sum_{i=1}^n(\sum_{j=1}^dw_jx_{ij}+b-y_i)\cdot x_{il}+\lambda\cfrac{\partial |w_l|}{\partial w_l}\\ &=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i+w_lx_{il})\cdot x_{il}+\lambda\cfrac{\partial |w_l|}{\partial w_l}\\ &=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i)\cdot x_{il}+2\sum_{i=1}^nw_lx_{il}^2+\lambda\cfrac{\partial |w_l|}{\partial w_l}\\ &=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i)\cdot x_{il}+2w_l\sum_{i=1}^nx_{il}^2+\lambda\cfrac{\partial |w_l|}{\partial w_l} \end{aligned} wlL=2i=1n(j=1dwjxij+byi)xil+λwlwl=2i=1n(j=ldwjxij+byi+wlxil)xil+λwlwl=2i=1n(j=ldwjxij+byi)xil+2i=1nwlxil2+λwlwl=2i=1n(j=ldwjxij+byi)xil+2wli=1nxil2+λwlwl

然后记: c l = 2 ∑ i = 1 n ( ∑ j ≠ l d w j x i j + b − y i ) ⋅ x i l c_l=2\sum_{i=1}^n(\sum_{j\ne l}^dw_jx_{ij}+b-y_i)\cdot x_{il} cl=2i=1n(j=ldwjxij+byi)xil
a l = 2 ∑ i = 1 n x i l 2 a_l=2\sum_{i=1}^nx_{il}^2 al=2i=1nxil2

上面的假设中 a l a_l al必然大于0的(样本不可能都为0),整理一下就是下面这个样子:
∂ L ∂ w l = c l + w l ⋅ a l + λ ∂ ∣ w l ∣ ∂ w l \cfrac{\partial L}{\partial w_l}=c_l+w_l\cdot a_l+\lambda\cfrac{\partial |w_l|}{\partial w_l} wlL=cl+wlal+λwlwl

由于最后一项有绝对值,所以我们分三种情况讨论:
∂ L ∂ w l = { c l + w l ⋅ a l + λ , if  w l > 0 [ c l − λ , c l + λ ] , if  w l = 0 c l + w l ⋅ a l − λ , if  w l < 0 \cfrac{\partial L}{\partial w_l}=\begin{cases} & c_l+w_l\cdot a_l+\lambda\text{, if } w_l>0 \\ &[c_l-\lambda,c_l+\lambda] \text{, if } w_l=0 \\ &c_l+w_l\cdot a_l-\lambda \text{, if } w_l<0 \end{cases} wlL=cl+wlal+λ, if wl>0[clλ,cl+λ], if wl=0cl+wlalλ, if wl<0
对于第二种情况, w l = 0 w_l=0 wl=0的时候, w l ⋅ a l = 0 w_l\cdot a_l=0 wlal=0 ∂ ∣ w l ∣ ∂ w l \cfrac{\partial |w_l|}{\partial w_l} wlwl的范围是[-1,1]。
然后设置偏导 ∂ L ∂ w l = 0 \cfrac{\partial L}{\partial w_l}=0 wlL=0来求极值。也分上面三种情况进行讨论。

  1. 先看 w l > 0 w_l>0 wl>0的情况:
    c l + w l ⋅ a l + λ = 0 w l = − c l − λ a l > 0 c_l+w_l\cdot a_l+\lambda=0\\ w_l=\cfrac{-c_l-\lambda}{a_l}>0 cl+wlal+λ=0wl=alclλ>0
    这里用到了上面 a l > 0 a_l>0 al>0的结论,分子也要大于0:
    − c l − λ > 0 → c l < − λ -c_l-\lambda>0\rightarrow c_l<-\lambda clλ>0cl<λ
  2. 在看 w l < 0 w_l<0 wl<0的情况
    c l + w l ⋅ a l − λ = 0 w l = − c l + λ a l < 0 c_l+w_l\cdot a_l-\lambda=0\\ w_l=\cfrac{-c_l+\lambda}{a_l}<0 cl+wlalλ=0wl=alcl+λ<0
    这里用到了上面 a l > 0 a_l>0 al>0的结论,分子也要小于0:
    − c l + λ < 0 → c l > λ -c_l+\lambda<0\rightarrow c_l>\lambda cl+λ<0cl>λ
  3. 在看 w l = 0 w_l=0 wl=0的情况
    − λ ≤ c l ≤ λ , w l = 0 -\lambda\le c_l\le\lambda,w_l=0 λclλ,wl=0

最后的结果整理如下,对于 w ^ l \hat w_l w^l的更新也分三种情况:
w ^ l = { − c l − λ a l , if  c l < − λ 0 , if  − λ ≤ c l ≤ λ − c l + λ a l , if  c l > λ (1) \hat w_l=\begin{cases} & \cfrac{-c_l-\lambda}{a_l}\text{, if } c_l<-\lambda \\ &0 \text{, if } -\lambda\le c_l\le\lambda \\ &\cfrac{-c_l+\lambda}{a_l} \text{, if } c_l>\lambda \end{cases}\tag1 w^l=alclλ, if cl<λ0, if λclλalcl+λ, if cl>λ(1)
从上面可以看到当特征更新为0的条件是什么,这也是Lasso加L1正则会出现稀疏特征的原因。
整个LASSO算法可以描述为

循环进行更新直至收敛
	选择某个维度l进行计算
		按照公式1进行更新

后记

其他解决Lasso的算法:
Classically: Least angle regression(LARS)[ Efron et al.'04]
Then: Coordinate descent algorithm [ Fu '98, Friedman, Hastie,& Tibshirani’08](本节的算法)
Now: Parallel CD(e.g., Shotgun,[ Bradley et al.'11])
Other parallel learning approaches for linear models:
Parallel stochastic gradient descent(SGD)(e.g, Hogwild![ Niu et al.'11])
Parallel independent solutions then averaging [ Zhang et al.'12]
Alternating directions method of multipliers(ADMM)[ Boyd et al.'11]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值