Lasso回归的坐标下降法推导

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012151283/article/details/77487729

目标函数

Lasso相当于带有L1正则化项的线性回归。先看下目标函数:RSS(w)+λw1=Ni=0(yiDj=0wjhj(xi))2+λDj=0|wj|
这个问题由于正则化项在零点处不可求导,所以使用非梯度下降法进行求解,如坐标下降法或最小角回归法。

坐标下降法

本文介绍坐标下降法。
坐标下降算法每次选择一个维度进行参数更新,维度的选择可以是随机的或者是按顺序。
当一轮更新结束后,更新步长的最大值少于预设阈值时,终止迭代。

下面分为两部求解

RSS偏导

wjRSS(w)=2i=1Nhj(xi)(yij=0Dwjhj(xi))=2i=1Nhj(xi)(yikjwkhk(xi)wjhj(xi))=2i=1Nhj(xi)(yikjwkhk(xi))+2wji=1Nhj(xi)2

下面做一下标记化简
ρj=Ni=1hj(xi)(yikjwkhk(xi))
zj=Ni=1hj(xi)2
上式化简为wjRSS(w)=2ρj+2wjzj

正则项偏导

次梯度方法(subgradient method)是传统的梯度下降方法的拓展,用来处理不可导的凸函数。
这里写图片描述

λwj|wj|=λ[λ,λ]λwj<0wj=0wj>0

整体偏导数

λwj[lasso cost]=2zjwj2ρj+λ[λ,λ]λwj<0wj=0wj>0=2zjwj2ρjλ[2ρjλ,2ρj+λ]2zjwj2ρj+λwj<0wj=0wj>0

要想获得最有解,令

λwj[lasso cost]=0
解得,

w^j=(ρj+λ/2)/zj0(ρjλ/2)/zjρj<λ/2ρj in [λ/2,λ/2]ρj>λ/2

这里写图片描述

伪代码

预计算zj=Ni=1hj(xi)2
初始化参数w(全0或随机)
循环直到收敛:

for j = 0,1,…D
    ρj=Ni=1hj(xi)(yikjwkhk(xi))
    update wj
选择变化幅度最大的维度进行更新

概率解释

拉普拉斯分布

随机变量XLaplace(μ,b),其中μ是位置参数,b>0是尺度参数。
概率密度函数为
f(x|μ,b)=12bexp(|xμ|b)

MAP推导

假设ϵiN(0,σ2)wiLaplace(0,1λ)

argmaxwL(w)=likelihood×prior=P(x,y|w)×P(w)=lni=1n1σ2πexp(12(yixiwTσ)2)j=1dλ2exp(λ|wj|)=lnn+lnd=nln+dln=nlnexp(12(yixiwTσ)2)nlnσ2π+dlnexp(λ|wj|)dln2λ=n12(yixiwTσ)2nlnσ2π+d(λ|wj|)dln2λ=12σ2n(yixiwT)2λd|wj|nlnσ2πdln2λ=12σ2n(yixiwT)2λd|wj|+constant

等价于
argminwf(w)=i=1n(yixiwT)2+λj=1d|wj|=||yXwT||22+λ||w||1

阅读更多

扫码向博主提问

浅梦zju

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 机器学习
  • 深度学习
  • 强化学习
  • 数据科学
  • Python
去开通我的Chat快问
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页