坐标下降法(coordinate descent method)求解LASSO的推导
坐标下降法(coordinate descent method)求解LASSO推导
LASSO在尖点是singular的,因此传统的梯度下降法、牛顿法等无法使用。常用的求解算法有最小角回归法、coordinate descent method等。
由于coordinate descent method是相对较简单的做法,放在第一个介绍。
坐标下降法思想
坐标下降法基于的思想很简单,就是当面对最小化一个多元函数的问题时,我们每一次迭代的时候只改变一个目标变量的值。也就是固定其他变量不动,只在该变量的维度上寻找一个使函数最小的值。这种思想类似于贪心算法。
推导过程
定义Loss function为:
\[
\frac{1}{N}\sum_{i=1}^{N}(y_i-x_i^T\cdot \beta)
\]
其中,\(x_i\)是p·1维的向量,\(\beta\)是p·1维的向量。
Penalty为Lasso penalty:
\[
\sum_{j=1}^p|\beta_j|
\]
定义超参数为\(\lambda\)
目标函数为:
\[
L=\frac{1}{N}\sum_{i=1}^{N}(y_i-x_i^T\cdot \beta+\lambda\sum_{j=1}^p|\beta_j|)
\]
应用坐标下降法的思想,我们固定住\(x_k\ne x_j\)的变量,然后在每一轮迭代中只优化\(x_j\)。
可以采用的迭代顺序是从j=1依次到p进行迭代,然后再从j=1开始。
当固定住其他变量时,求object function的极小值就等价于求解一元LASSO的问题。
\[L=\frac{1}{N}\sum_{i=1}^{N}(r_i-\beta_jx_{ji})^2+\lambda \beta_j \tag{1}\]
其中,\(r_i=y_i-\sum_{k\ne j}x_{ik}\beta_k\),也就是只用其他变量拟合y的残差。
将式1稍微化简一下,可以得到:
\[
L=\beta_j^2\frac{\sum_{i=1}^{N}x_{ji}^2}{N}-2\beta_j\frac{\sum_{i=1}^{N}r_ix_{ji}}{N}+\frac{\sum_{i=1}^{N}r_i^2}{N}+\lambda{|\beta_j|}
\]
这是一个二次函数。由于涉及到绝对值,我们需要分两个区间讨论:\(\beta_j<0\)和\(\beta_j>0\)
相当于我们将\(\beta_j\)的取值划成了两个空间,分别讨论极值。最后的极值是把这两个空间的极值再取最小值。
第一个区间, \(\beta_j>0\)
可以观察到object function是一个开口向上二次函数,全局最小点在\(\beta_j=\frac{2\frac{\sum r_ix_i}{N}-\lambda}{2\sum x_i^2}{N}\)处取得。
但是我们这时的定义域限制在 \(\beta_j>0\),因此需要分类讨论是否能取全局最小点:
\[
if (2\frac{\sum r_ix_i}{N}-\lambda>0):\\
{\beta_j^{*}=\frac{2\frac{\sum r_ix_i}{N}-\lambda}{2\sum x_i^2}{N}}\\
Else:\\
{\beta_j^{*}=0}
\]第二个区间,\(\beta_j<0\)
全局最小点在\(\beta_j=\frac{2\frac{\sum r_ix_i}{N}+\lambda}{2\sum x_i^2}{N}\)处取得。
但是我们这时的定义域限制在 \(\beta_j<0\),因此需要分类讨论是否能取全局最小点:
\[
if (2\frac{\sum r_ix_i}{N}+\lambda<0):\\
{\beta_j^{*}=\frac{2\frac{\sum r_ix_i}{N}+\lambda}{2\sum x_i^2}{N}}\\
Else:\\
{\beta_j^{*}=0}
\]
综合上面的讨论,
case1:\(2\frac{\sum r_ix_i}{N}<-\lambda\)
\(\beta_j^{*}=\frac{2\frac{\sum r_ix_i}{N}+\lambda}{2\sum x_i^2}{N}\)case2:\(-\lambda<2\frac{\sum r_ix_i}{N}<\lambda\)
\(\beta_j^{*}=0\)case3:\(\lambda<2\frac{\sum r_ix_i}{N}\)
\(\beta_j^{*}=\frac{2\frac{\sum r_ix_i}{N}-\lambda}{2\sum x_i^2}{N}\)
定义一个软阈值函数来统一三个case
\[
\beta_j^{*}=\frac{\text{soft threshold}({2\frac{\sum r_ix_i}{N},\lambda)}}{2\frac{\sum x_i^2}{N}}
\]
comment
对于用L2 loss function作为损失函数的回归问题,由于object function是关于\(\beta\)的凸函数,因此我们一定可以找到一个全局最优点。迭代过程是收敛的。
坐标下降法(coordinate descent method)求解LASSO的推导的更多相关文章
- V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)
		
When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...
 - 坐标下降(Coordinate descent)
		
坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行线性搜索(线性搜索是不需要求导数的),通过循环使用不同的坐标方法来达到目标函数的局部极小值.
 - week 5: ;Lasso regression & coordinate descent
		
笔记. 岭回归, 计算回归系数时使( RSS(w)+λ||w||2) 最小 岭回归的结果会是所有的特征的weight都较小,但大多数又不完全为零. 而实际情况中,有的特征的确与输出值相关程度很高,we ...
 - Lasso回归的坐标下降法推导
		
目标函数 Lasso相当于带有L1正则化项的线性回归.先看下目标函数:RSS(w)+λ∥w∥1=∑Ni=0(yi−∑Dj=0wjhj(xi))2+λ∑Dj=0∣wj∣RSS(w)+λ∥w∥1=∑i=0 ...
 - 人脸对齐SDM原理----Supervised Descent Method and its Applications to Face Alignment
		
最近组里研究了SDM算法在人脸对齐中的应用,是CMU的论文<Supervised Descent Method and its Applications to Face Alignment> ...
 - paper 142:SDM算法--Supervised Descent Method
		
对于face recognition的研究,我是认真的(认真expression,哈哈哈~~~~~~)许久没有写blog了,欢迎一起讨论. SDM(Supvised Descent Method)方法 ...
 - 梯度下降法Gradient descent(最速下降法Steepest Descent)
		
最陡下降法(steepest descent method)又称梯度下降法(英语:Gradient descent)是一个一阶最优化算法. 函数值下降最快的方向是什么?沿负梯度方向 d=−gk
 - machine learning (7)---normal equation相对于gradient descent而言求解linear regression问题的另一种方式
		
Normal equation: 一种用来linear regression问题的求解Θ的方法,另一种可以是gradient descent 仅适用于linear regression问题的求解,对其 ...
 - (3)梯度下降法Gradient Descent
		
梯度下降法 不是一个机器学习算法 是一种基于搜索的最优化方法 作用:最小化一个损失函数 梯度上升法:最大化一个效用函数 举个栗子 直线方程:导数代表斜率 曲线方程:导数代表切线斜率 导数可以代表方向, ...
 
随机推荐
- Codeforces Round #563 (Div. 2)B
			
B.Ehab Is an Odd Person 题目链接:http://codeforces.com/contest/1174/problem/B 题目 You’re given an array a ...
 - 深度探索c++对象模型 第二章
			
1,c++转换函数:显示转换和隐式转换. 隐式转换为程序员提供了很大的变量.比如整形提升,普通类型转换为类类型(operator int())都为程序带来无尽的方便.试想,如果没有整形提升,一个sho ...
 - python 基本数据类型之字符串功能
			
字符串常用功能: # name.upper() #全部大写变小写 # name.lower() #全部小写变大写 # name.split() #分割 # name.find() #找到指定子序列的索 ...
 - 100天搞定机器学习|Day2简单线性回归分析
			
第一天机器学习100天|Day1数据预处理,我们学习了数据预处理.知道了,数据预处理是机器学习中最基础和最麻烦,未来占用时间最长的一步操作.数据预处理一般有六个步骤,导入库.导入数据集.处理缺失值.分 ...
 - 浅谈Invoke 和 BegionInvoke的用法
			
很多人对Invoke和BeginInvoke理解不深刻,不知道该怎么应用,在这篇博文里将详细阐述Invoke和BeginInvoke的用法: 首先说下Invoke和BeginInvoke有两种用法: ...
 - Spring3 springMVC添加注解式WebSocket
			
Spring3添加注解式WebSocket 推荐升级成spring4以后,spring4已经集成WebSocket. 由于种种原因,项目开发处于快结束的阶段了,升级成spring4不想那么麻烦,但是又 ...
 - HDU 4812:D Tree(树上点分治+逆元)
			
题目链接 题意 给一棵树,每个点上有一个权值,问是否存在一条路径(不能是单个点)上的所有点相乘并对1e6+3取模等于k,输出路径的两个端点.如果存在多组答案,输出字典序小的点对. 思路 首先,(a * ...
 - 微信小程序 CSS border-radius元素 overflow:hidden失效问题 iPhone ios 苹果兼容问题 伪类元素
			
同事找我解决一个问题 说安卓圆角没问题 苹果上失效了 我一看 其实就是没做兼容上图给你们看看 有没有看出来 其实就是父级设置圆角属性失效 父元素使用border-radius和overflow:hid ...
 - scrapy基础知识之 pycharm 调试小技巧:
			
在项目根目录下新建main.py文件,用于调试 from scrapy.cmdline import executeexecute(["scrapy","crawl&qu ...
 - 配置Windows server 用户和组权限实验详解
			
目录 操作步骤如下: 在Windows Server开始菜单下点击管理工具下的计算机管理 新建用户 用户创建完毕 新建文件夹 配置技术部读取"技术资料"和"常用软件&qu ...