14[NLP训练营]Lasso Regression

简介

Lasso Regression也叫Ridge Regression(岭回归),其实这两个都是线性回归模型的变种。
当线性回归加L1正则就是Lasso Regression,当线性回归加L2正则就是Ridge Regression。

Why We Prefer Sparsity

·如果维度太高,计算量也变得很高,尤其是在特征维度D>样本个数N的时候,特别需要Lasso来去掉多余特征,否则容易出现过拟合现象。
·在稀疏性条件下,计算量只依赖非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\}
由于不知道哪个特征好,用简单粗暴的方式来排列组合特征,然后看谁的准确率(acc)高
在这里插入图片描述
这些个特征的组合我们给个名字叫:Power set。可以看到Power set的大小是 2 n 1 2^n-1 ,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\} ,5个特征
定义一个best_feature_set集合,并初始化为空

·Forward Stepwise

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

·Backward Stepwise

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

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)\} ,则线性回归的损失函数为:
L = X w y F 2 + λ w 2 2 L=||Xw-y||^2_F+\lambda||w||^2_2
上面是矩阵的形式(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
以上线性回归加上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)\} ,则线性回归的损失函数为:
L = X w y F 2 + λ w 1 L=||Xw-y||^2_F+\lambda||w||_1
上面是矩阵的形式(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 = 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
如果我们对这个损失函数求偏导,先关注最后的正则项:
w |w| 对w的梯度是多少。
在这里插入图片描述
w j w_j 为正数和负数分别结果是正负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有很多个维度,但是我每次寻求的最好的解是在某一个维度上的,这个时候可以把其他维度当作常数。
算法描述如下:
在t=1时刻,我们选定某一维度 w 1 w_1 ,其他的看做是常数,那么
g ( w ) = g ( w 1 ) g(w)=g(w_1)
求解最佳的 w ^ 1 \widehat w_1
w ^ 1 = a r g m i n w 1 g ( w 1 ) \widehat w_1=arg\underset{w_1}{min}g(w_1)
在t=2时刻,我们选定某一维度 w 5 w_5 ,其他的看做是常数,那么
g ( w ) = g ( w 5 ) g(w)=g(w_5)
求解最佳的 w ^ 5 \widehat w_5
w ^ 5 = a r g m i n w 5 g ( w 5 ) \widehat w_5=arg\underset{w_5}{min}g(w_5)
一直循环,直到函数收敛,循环过程中,w的选择可以按顺序,也可以随机选。

Coordinate Descent的特点

1、不需要设定step-size!
2、对于lasso objective,它会收敛。

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
写出加了log后的Lasso的损失函数,连乘变连加(这里有点没看懂):
在这里插入图片描述
其中 x i j x_{ij} 代表第i个样本的第j个特征。
然后求损失函数L对某个特征 w l w_l 的偏导:
在这里插入图片描述
这里注意第二步那里是从求和里面把包含 w l w_l 那项单独拉出来了。
最后那里 a l a_l 必然大于0的(样本不可能都为0),整理一下就是下面这个样子
在这里插入图片描述
由于最后一项有绝对值,所以我们分三种情况讨论:
在这里插入图片描述
然后设置偏导等于0来求极值。也分上面三种情况进行讨论。
先看 w l > 0 w_l>0 的情况,这里用到了上面 a l > 0 a_l>0 的结论
在这里插入图片描述
在看 w l < 0 w_l<0 的情况
在这里插入图片描述
在看 w l = 0 w_l=0 的情况
在这里插入图片描述
最后的结果整理如下:
在这里插入图片描述
从上面可以看到当特征更新为0的条件是什么,这也是Lasso加L1正则会出现稀疏特征的原因。

后记

其他解决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]

发布了172 篇原创文章 · 获赞 40 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/oldmao_2001/article/details/104594780