Lasso回归的坐标下降法推导
目标函数
Lasso相当于带有L1正则化项的线性回归。先看下目标函数:RSS(w)+λ∥w∥1=∑Ni=0(yi−∑Dj=0wjhj(xi))2+λ∑Dj=0∣wj∣RSS(w)+λ∥w∥1=∑i=0N(yi−∑j=0Dwjhj(xi))2+λ∑j=0D∣wj∣ RSS(w)+\lambda \Vert w\Vert_1=\sum_{i=0}^{N}(y_i-\sum_{j=0}^D{w_jh_j(x_i)})^2+\lambda \sum_{j=0}^{D}|w_j| RSS(w)+λ∥w∥1=∑i=0N(yi−∑j=0Dwjhj(xi))2+λ∑j=0D∣wj∣
这个问题由于正则化项在零点处不可求导,所以使用非梯度下降法进行求解,如坐标下降法或最小角回归法。
坐标下降法
本文介绍坐标下降法。
坐标下降算法每次选择一个维度进行参数更新,维度的选择可以是随机的或者是按顺序。
当一轮更新结束后,更新步长的最大值少于预设阈值时,终止迭代。
下面分为两部求解
RSS偏导

下面做一下标记化简
ρj=∑Ni=1hj(xi)(yi−∑k≠jwkhk(xi))ρj=∑i=1Nhj(xi)(yi−∑k≠jwkhk(xi)) \rho_j=\sum_{i=1}^Nh_j(x_i)(y_i-\sum_{k \neq j }w_kh_k(x_i))
ρj=∑i=1Nhj(xi)(yi−∑k̸=jwkhk(xi))
zj=∑Ni=1hj(xi)2zj=∑i=1Nhj(xi)2 z_j=\sum_{i=1}^N h_j(x_i)^2
zj=∑i=1Nhj(xi)2
上式化简为∂∂wjRSS(w)=−2ρj+2wjzj∂∂wjRSS(w)=−2ρj+2wjzj \frac{\partial}{\partial w_j}RSS(w)=-2\rho_j+2w_jz_j
∂wj∂RSS(w)=−2ρj+2wjzj
正则项偏导
次梯度方法(subgradient method)是传统的梯度下降方法的拓展,用来处理不可导的凸函数。
λ∂wj∣wj∣=⎧⎩⎨⎪⎪−λ[−λ,λ]λwj<0wj=0wj>0λ∂wj∣wj∣={−λwj<0[−λ,λ]wj=0λwj>0 \lambda \partial_{w_j}|w_j|=\begin{cases}-\lambda&w_j<0\\[-\lambda,\lambda]& w_j=0\\\lambda&w_j>0\end{cases}
λ∂wj∣wj∣=⎩⎪⎨⎪⎧−λ[−λ,λ]λwj<0wj=0wj>0
整体偏导数
λ∂wj[lasso cost]=2zjwj−2ρj+⎧⎩⎨⎪⎪−λ[−λ,λ]λwj<0wj=0wj>0=⎧⎩⎨⎪⎪2zjwj−2ρj−λ[−2ρj−λ,−2ρj+λ]2zjwj−2ρj+λwj<0wj=0wj>0λ∂wj[lasso cost]=2zjwj−2ρj+{−λwj<0[−λ,λ]wj=0λwj>0={2zjwj−2ρj−λwj<0[−2ρj−λ,−2ρj+λ]wj=02zjwj−2ρj+λwj>0 \lambda \partial_{w_j}\text{[lasso cost]}= 2z_jw_j-2\rho_j+\begin{cases}-\lambda&w_j<0\\[-\lambda,\lambda]& w_j=0\\\lambda&w_j>0\end{cases}\\=\begin{cases}2z_jw_j-2\rho_j-\lambda&w_j<0\\[-2\rho_j-\lambda,-2\rho_j+\lambda]& w_j=0\\2z_jw_j-2\rho_j+\lambda&w_j>0\end{cases}
λ∂wj[lasso cost]=2zjwj−2ρj+⎩⎪⎨⎪⎧−λ[−λ,λ]λwj<0wj=0wj>0=⎩⎪⎨⎪⎧2zjwj−2ρj−λ[−2ρj−λ,−2ρj+λ]2zjwj−2ρj+λwj<0wj=0wj>0
要想获得最有解,令
λ∂wj[lasso cost]=0λ∂wj[lasso cost]=0 \lambda \partial_{w_j}\text{[lasso cost]}=0
λ∂wj[lasso cost]=0。
解得,
wˆj=⎧⎩⎨⎪⎪(ρj+λ/2)/zj0(ρj−λ/2)/zjρj<−λ/2ρj in [−λ/2,λ/2]ρj>λ/2w^j={(ρj+λ/2)/zjρj<−λ/20ρj in [−λ/2,λ/2](ρj−λ/2)/zjρj>λ/2 \hat w_j= \begin{cases}(\rho_j+\lambda/2)/z_j&\rho_j<-\lambda/2\\0& \rho_j\text{ in }[-\lambda/2,\lambda/2]\\(\rho_j-\lambda/2)/z_j&\rho_j>\lambda/2\end{cases}
w^j=⎩⎪⎨⎪⎧(ρj+λ/2)/zj0(ρj−λ/2)/zjρj<−λ/2ρj in [−λ/2,λ/2]ρj>λ/2
伪代码
预计算zj=∑Ni=1hj(xi)2zj=∑i=1Nhj(xi)2 z_j=\sum_{i=1}^N h_j(x_i)^2
zj=∑i=1Nhj(xi)2
初始化参数w(全0或随机)
循环直到收敛:
for j = 0,1,…D
$ \space \space\space\space\rho_j=\sum_{i=1}^Nh_j(x_i)(y_i-\sum_{k \neq j }w_kh_k(x_i))$
update wj update wj \space \space\space\space update\space w_jupdate wj
选择变化幅度最大的维度进行更新
概率解释
拉普拉斯分布
随机变量X∼Laplace(μ,b)X∼Laplace(μ,b) X\sim Laplace(\mu,b)
X∼Laplace(μ,b),其中μμ \mu
μ是位置参数,b>0b>0 b>0
b>0是尺度参数。
概率密度函数为
f(x∣μ,b)=12bexp(−∣x−μ∣b)f(x∣μ,b)=12bexp(−∣x−μ∣b) f(x|\mu,b)=\frac{1}{2b}exp(-\frac{|x-\mu|}{b})
f(x∣μ,b)=2b1exp(−b∣x−μ∣)
MAP推导
假设ϵi∼N(0,σ2)ϵi∼N(0,σ2) \epsilon_i\sim N(0,\sigma^2)
ϵi∼N(0,σ2),wi∼Laplace(0,1λ)wi∼Laplace(0,1λ) w_i\sim Laplace(0,\frac{1}{\lambda})
wi∼Laplace(0,λ1)
等价于
Lasso回归的坐标下降法推导的更多相关文章
- 坐标下降法(coordinate descent method)求解LASSO的推导
坐标下降法(coordinate descent method)求解LASSO推导 LASSO在尖点是singular的,因此传统的梯度下降法.牛顿法等无法使用.常用的求解算法有最小角回归法.coor ...
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...
- 线性回归大结局(岭(Ridge)、 Lasso回归原理、公式推导),你想要的这里都有
本文已参与「新人创作礼」活动,一起开启掘金创作之路. 线性模型简介 所谓线性模型就是通过数据的线性组合来拟合一个数据,比如对于一个数据 \(X\) \[X = (x_1, x_2, x_3, ..., ...
- 通俗易懂--岭回归(L2)、lasso回归(L1)、ElasticNet讲解(算法+案例)
1.L2正则化(岭回归) 1.1问题 想要理解什么是正则化,首先我们先来了解上图的方程式.当训练的特征和数据很少时,往往会造成欠拟合的情况,对应的是左边的坐标:而我们想要达到的目的往往是中间的坐标,适 ...
- 岭回归和lasso回归(转)
回归和分类是机器学习算法所要解决的两个主要问题.分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题.但是回归就稍微复杂一些,回归模型的输出值 ...
- Lasso回归
Lasso 是一个线性模型,它给出的模型具有稀疏的系数(sparse coefficients).它在一些场景中是很有用的,因为它倾向于使用较少参数的情况,能够有效减少给定解决方案所依赖变量的个数.因 ...
- 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归
注:正则化是用来防止过拟合的方法.在最开始学习机器学习的课程时,只是觉得这个方法就像某种魔法一样非常神奇的改变了模型的参数.但是一直也无法对其基本原理有一个透彻.直观的理解.直到最近再次接触到这个概念 ...
- 岭回归&Lasso回归
转自:https://blog.csdn.net/dang_boy/article/details/78504258 https://www.cnblogs.com/Belter/p/8536939. ...
- 线性回归——lasso回归和岭回归(ridge regression)
目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean squ ...
随机推荐
- iOS10推送必看UNNotificationAttachment以及UNTimeIntervalNotificationTrigger
虽然这篇文章比较长,也不好理解,但是还是建议大家收藏,以后用到的时候,可以看看,有耐心的还是读一读. 这篇文章开始,我会跟大家好好讲讲,苹果新发布的iOS10的所有通知类. 一.创建本地通知事例详解: ...
- 100行代码打造属于自己的代理ip池
经常使用爬虫的朋友对代理ip应该比较熟悉,代理ip就是可以模拟一个ip地址去访问某个网站.我们有时候需要爬取某个网站的大量信息时,可能由于我们爬的次数太多导致我们的ip被对方的服务器暂时屏蔽(也就是所 ...
- Windows10 临时将线程绑定至指定CPU的方法
本文首发:https://www.somata.work/2019/WindowsThreadBind.html 将线程绑定至指定CPU,这个应该时很多管理员需要了解认知的操作了吧,这样可以在一定程度 ...
- lombok自定义扩展实践
lombok是一款能够在java代码编译阶段改变代码的插件.比如生成setter和getter方法,生成log类变量等,能够简化一些特定的模版式代码.本文将以实现一个基于特定注解生成日志代码的方式,简 ...
- linux个人常用命令【持续更新】
netstat -tnl 查看网络相关的端口情况 ps -A 查看所有进程的情况 cat /proc/cpuinfo| grep "physical id"| sort| uniq ...
- datatable修改每页默认显示的数量
datatable修改每页默认显示的数量 一.总结 一句话总结: iDisplayLength属性:'iDisplayLength':50 1.datatable默认每页显示50个? iDisplay ...
- 【转】SENDING KEY VALUE MESSAGES WITH THE KAFKA CONSOLE PRODUCER
SENDING KEY VALUE MESSAGES WITH THE KAFKA CONSOLE PRODUCER When working with Kafka you might find yo ...
- 进击web与web协议
我一直比较抵制web,web的各种协议以及后端与前端的交互,慢慢的发现除了数据和算法其实计算机软件方面还有另一块高地,那就是web协议. 十分感谢极客时间提供了性价比极高的课程,让我遇到了这么好的老师 ...
- 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
web proxy web1 web2 1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...
- springboot项目上传文件大小限制问题
1.报错信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors wi ...