坐标下降法(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的推导的更多相关文章

  1. V-rep学习笔记:机器人逆运动学数值解法(Cyclic Coordinate Descent Method)

    When performing inverse kinematics (IK) on a complicated bone chain, it can become too complex for a ...

  2. 坐标下降(Coordinate descent)

    坐标下降法属于一种非梯度优化的方法,它在每步迭代中沿一个坐标的方向进行线性搜索(线性搜索是不需要求导数的),通过循环使用不同的坐标方法来达到目标函数的局部极小值.

  3. week 5: ;Lasso regression & coordinate descent

    笔记. 岭回归, 计算回归系数时使( RSS(w)+λ||w||2) 最小 岭回归的结果会是所有的特征的weight都较小,但大多数又不完全为零. 而实际情况中,有的特征的确与输出值相关程度很高,we ...

  4. Lasso回归的坐标下降法推导

    目标函数 Lasso相当于带有L1正则化项的线性回归.先看下目标函数:RSS(w)+λ∥w∥1=∑Ni=0(yi−∑Dj=0wjhj(xi))2+λ∑Dj=0∣wj∣RSS(w)+λ∥w∥1=∑i=0 ...

  5. 人脸对齐SDM原理----Supervised Descent Method and its Applications to Face Alignment

    最近组里研究了SDM算法在人脸对齐中的应用,是CMU的论文<Supervised Descent Method and its Applications to Face Alignment> ...

  6. paper 142:SDM算法--Supervised Descent Method

    对于face recognition的研究,我是认真的(认真expression,哈哈哈~~~~~~)许久没有写blog了,欢迎一起讨论. SDM(Supvised Descent Method)方法 ...

  7. 梯度下降法Gradient descent(最速下降法Steepest Descent)

    最陡下降法(steepest descent method)又称梯度下降法(英语:Gradient descent)是一个一阶最优化算法. 函数值下降最快的方向是什么?沿负梯度方向  d=−gk

  8. machine learning (7)---normal equation相对于gradient descent而言求解linear regression问题的另一种方式

    Normal equation: 一种用来linear regression问题的求解Θ的方法,另一种可以是gradient descent 仅适用于linear regression问题的求解,对其 ...

  9. (3)梯度下降法Gradient Descent

    梯度下降法 不是一个机器学习算法 是一种基于搜索的最优化方法 作用:最小化一个损失函数 梯度上升法:最大化一个效用函数 举个栗子 直线方程:导数代表斜率 曲线方程:导数代表切线斜率 导数可以代表方向, ...

随机推荐

  1. js深入(三)作用域链与闭包

    在之前我们根绝对象的原型说过了js的原型链,那么同样的js 万物皆对象,函数也同样存在这么一个链式的关系,就是函数的作用域链 作用域链 首先先来回顾一下之前讲到的原型链的寻找机制,就是实例会先从本身开 ...

  2. SQL注入与防御

    SQL注入与防御 下载:https://pan.baidu.com/s/1ZiLVY2IxHXD9-bMRS61Fzg 提取码:yof2

  3. 源码阅读 - java.util.concurrent (三)ConcurrentHashMap

    在java.util.concurrent包中提供了一个线程安全版本的Map类型数据结构:ConcurrentMap.本篇文章主要关注ConcurrentMap接口以及它的Hash版本的实现Concu ...

  4. Ural 2062:Ambitious Experiment(树状数组 || 分块)

    http://acm.timus.ru/problem.aspx?space=1&num=2062 题意:有n个数,有一个值,q个询问,有单点询问操作,也有对于区间[l,r]的每个数i,使得n ...

  5. IDM 6.27.5(Internet Download Manager)中文破解版下载神器

    IDM一直是我最喜欢的下载工具,感觉用的比迅雷爽,简单使用,对付网盘有一套.IDM(Internet Download Manager)和迅雷的下载提速方式不同,从原理上来说,IDM速度较稳定,迅雷下 ...

  6. MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使 ...

  7. PYTHONIOENCODING = UTF-8 引发的血案

    血案: 我就是想在Jenkins上运行一段自动化python代码,就是最简单的本地控制台输出, 我就不懂了它为什么一直是去找 cp1252.py 编码???目前, 确定 pycharm 运行脚本很OK ...

  8. android_ratingBar

    主文件 package cn.com.sxp;import android.app.Activity;import android.os.Bundle;import android.util.Log; ...

  9. mac 部署安装接口自动化持续集成 jmeter+ant+jenkins

    由于前段时间刚换的工作,公司用的是mac电脑办公,之前办公都是windows系统.刚开始使用时连基本的操作都要去找度娘,很不习惯,新电脑开始就是安装相关的工作工具 下面就说说遇到的哪些坑. 1.  m ...

  10. 将web工程署到Linux简单实现

    1,将数据库文件导出并导入到Linux下的数据库中 2,将数据库连接池的连接IP改为Linux所在服务器的 3,将工程文件以war包形式导出 4,利用secureCRT,Xshell等工具远程连接Li ...