NLP学习笔记26-Lasso Regression

一 序

   本文属于贪心NLP训练营学习笔记系列。上节学完逻辑回归之后,本节学习的是逻辑回归的变种。在整理lasso之前,我先整理了普通最小二乘推导

在使用最小二乘法进行求解时,我们会对线性回归模型进行假设,当这些假设在实际中并不满足时,最小二乘法是有问题的。其中很重要的一个假设是要求各个变量要相互独立,而实际样本可能会有较大的共线性(multicollinearity)。

 老师之前在讲逻辑回归也讲过,为了解决过拟合的问题(吧噪声也引进来造成的),当线性回归加L1正则就是Lasso Regression,当线性回归加L2正则就是Ridge Regression。

二 lasso

 关于lasso.如果你看懂了知乎上大佬的帖子:https://www.zhihu.com/question/38121173

太多的术语,背景知识了。因为看上去只是L2改成L1了,但实际上背后的工作原理相当复杂,需要慢慢理解。

Why We Prefer Sparsity

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

例子:房价的评估,红色表示比较重要的特征,那如何选取这些重要的特征?

三 确定特征的方法

3.1 排列组合

假如我有一个特征集合A=\{f_1,f_2,f_3,f_4\}

用简单粗暴的方式来排列组合特征,然后看谁的准确率(acc)高

这些个特征的组合我们给个名字叫:Power set。可以看到Power set的大小是2^n-1,n= 特征的数量。

缺点:指数级复杂度,当n>10的等,计算量太大。

3.2 Greedy Approaches

假如我有一个特征集合A=\{f_1,f_2,f_3,f_4,f_5\},5个特征

定义一个best_feature_set集合,并初始化为空

·Forward Stepwise :前向

开始循环,第一个循环,假设我们找到最好特征是 f_2放入best_feature_set中.

开始第二次循环,在{A-best_feature_set} :\{f1,f3,f4,f5 \}中来循环:

这里找出来的\{f_2,f_4\}具有最高的准确率,这里\{f_2,f_4\}​要比单个的\{f_2\}的准确度要高才行,不然就停止循环了。

以此类推,直到满足停止条件(加特征之后,准确率比之前最大非准确率小)。

贪心算法:局部最优解,不一定是全局最优解。

·Backward Stepwise 后向

和上面的算法相反,开始的best_feature_set集合初始化为A,然后依次去掉特征,每次选择产生准确最高那组的特征。

第一次循环,任意删除一个,看谁的准确率高,截图的例子是删掉f_2,准确率最高.

后面的过程类似,当新一轮循环的最大准确率比上一轮的低,就停止循环。

3.3(正则的方法)

via Regularization-A Principled Way

前面的方式通过枚举的方式来选取特征,正则是通过一个目标函数构建特征组合。到底哪个效果好?老师说不一定。

Ridge regression:L2 regularized regression

假设有样本:D=\{(x_1,y_1),(x_2,y_2)...(x_n,y_n)\},则线性回归的损失函数为:

L=|| X_w-y||_F^2+\lambda ||w ||_2^2

 前面是线性回归,后面是正则。式子是矩阵的形式(X是矩阵,其他两个是向量)

以上线性回归加上L2的正则项就是岭回归。加了L2的正则项可以避免w很大,但是不会变成0.

Lasso regression:L1 regularized regression

假设有样本:D=\{(x_1,y_1),(x_2,y_2)...(x_n,y_n)\},则线性回归的损失函数为:

 L=|| X_w-y||_F^2+\lambda ||w ||_1

上面是矩阵的形式(X是矩阵,其他两个是向量),第一项写成最小二乘的形式是

 

L= \prod_{i=1}^{N}(w^Tx_i-y_i) ^2+\lambda ||w||_1

之前逻辑回归,算过L2 的计算梯度求导。那么L1 求导,前面是一样的,我们关注下正则项\lambda || w||_1

因为是w的绝对值,所以会有多种情况(正、负、0),所以L1 会比L2 复杂的多。

>0.梯度为1

<0,梯度为-1

=0,梯度不是唯一的,下面截图的很多绿线( 梯度是一个函数增长最快的方向,但是当函数在某点不可导时梯度就没法计算了)。

这种需要分情况讨论的梯度下降称为sub-gradient descent次梯度.

(采用次梯度下降法是可解的,参见大佬:https://blog.csdn.net/qq_32742009/article/details/81704139

Coordinate Descent(LASSO Solver)

对于Lasso,还有另外一种优化算法:

g(w)=g(w1,w2,...,wD)

函数g有很多个维度,但是我们每次寻求的最好的解是在某一个维度上的,这个时候可以把其他维度当作常数

在t=1时刻,我们选定某一维度w_1,其他的看做是常数,那么

g(w)=g(w_1)

求解最佳的\hat{w_1}= argmin_w_1 g(w_1)

同理,在t=2时刻,我们选定某一维度w_2,其他的看做是常数,那么

g(w)= g(w_2)

求解最佳的\hat{w_2}= argmin_w_2 g(w_2)

一直循环,直到函数收敛(或者达到一定阈值),循环过程中,w的选择方式:可以按顺序,也可以随机选。

Coordinate Descent的特点

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

Coordinate Descent for Lasso

Lasso的损失函数推导过程,这里rss没看懂跟之前的形式不太一样。其中x_{ij}​代表第i个样本的第j个特征。

然后求损失函数L对某个特征w_l的偏导:注意式子第二步那里是从求和里面把包含w_l那项单独拆出来。

最后那里a_l=2\sum_{i=1}^{N}x_{il}^2 >0

第一项看做常数项,第二项是a_lw_l,由于第三项有绝对值,所以我们分三种情况讨论:

最后的结论整理如下:

当特征更新为0的条件是-\lambda ,\lambda之间,这也是Lasso加L1正则会出现稀疏特征的原因。

其他解决Lasso的算法:

Lasso 开辟了机器学习的新时代,有重要意义。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值