LASSO问题及其最优解

转载,原文地址:http://blog.csdn.net/xidianzhimeng/article/details/20856047

Sparsity 是当今机器学习领域中的一个重要话题。John Lafferty 和 Larry Wasserman 在 2006 年的一篇评论中提到:

Some current challenges … are high dimensional data, sparsity, semi-supervised learning, the relation between computation and risk, and structured prediction.John Lafferty and Larry Wasserman. Challenges in statistical machine learning. Statistica Sinica. Volume 16, Number 2, pp. 307-323, 2006.

Sparsity 的最重要的客户大概要属 high dimensional data 了吧。现在的机器学习问题中,具有非常高维度的数据随处可见。例如,在文档或图片分类中常用的 bag of words 模型里,如果词典的大小是一百万,那么每个文档将由一百万维的向量来表示。高维度带来的的一个问题就是计算量:在一百万维的空间中,即使计算向量的内积这样的基本操作也会是非常费力的。不过,如果向量是稀疏的的话(事实上在 bag of words 模型中文档向量通常都是非常稀疏的),例如两个向量分别只有 L1 和 L2 个非零元素,那么计算内积可以只使用 min(L1,L2)次乘法完成。因此稀疏性对于解决高维度数据的计算量问题是非常有效的。

当然高维度带来的问题不止是在计算量上。例如在许多生物相关的问题中,数据的维度非常高,但是由于收集数据需要昂贵的实验,因此可用的训练数据却相当少,这样的问题通常称为small n, large p problem——我们一般用 n 表示数据点的个数,用 p 表示变量的个数,即数据维度。当 p?n 的时候,不做任何其他假设或者限制的话,学习问题基本上是没法进行的。因为如果用上所有变量的话,p 越大,通常会导致模型越复杂,但是反过来 n 有很小,于是就会出现很严重的 overfitting 问题。例如,最简单的线性回归模型:

f(x)=∑j=1pwjxj=wTx

使用 square loss 来进行学习的话,就变成最小化如下的问题

J(w)=1n∑i=1n(yi−f(xi))2=1n∥y−Xw∥2

这里 X=(x1,…,xn)T∈Rn×p 是数据矩阵,而 y=(y1,…,yn)T 是由标签组成的列向量。该问题具有解析解

eq: 1 »

wˆ=(XTX)−1XTy

然而,如果 p>n 的话,矩阵 XTX 将会不是满秩的,而这个解也没法算出来。或

者更确切地说,将会有无穷多个解。也就是说,我们的数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不是真正好的解,总而言之,我们 overfitting 了。

解决 overfitting 最常用的办法就是 regularization ,例如著名的 ridge regression 就是添加一个 ?2 regularizer :

JR(w)=1n∥y−Xw∥2+λ∥w∥2

直观地来看,添加这个 regularizer 会使得模型的解偏向于 norm 较小的 w 。从凸优化的角度来说,最小化上面这个 J(w) 等价于如下问题:

minw1n∥y−Xw∥2,s.t.∥w∥≤C

其中 C 是和 λ 一一对应的是个常数。也就是说,我们通过限制 w 的 norm 的大小实现了对模型空间的限制,从而在一定程度上(取决于 λ 的大小)避免了 overfitting 。不过 ridge regression 并不具有产生稀疏解的能力,得到的系数 w 仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观。

不过,特别是在像生物或者医学等通常需要和人交互的领域,稀疏的解除了计算量上的好处之外,更重要的是更具有可解释性。比如说,一个病如果依赖于 5 个变量的话,将会更易于医生理解、描述和总结规律,但是如果依赖于 5000 个变量的话,基本上就超出人肉可处理的范围了。

在这里引入稀疏性的方法是用 ?1 regularization 代替 ?2 regularization,得到如下的目标函数

eq: 2 »

JL(w)=1n∥y−Xw∥2+λ∥w∥1

该问题通常被称为 LASSO (least absolute shrinkage and selection operator) 。LASSO 仍然是一个 convex optimization 问题,不过不再具有解解析解。它的优良性质是能产生稀疏性,导致 w中许多项变成零。

可是,为什么它能产生稀疏性呢?这也是一直让我挺感兴趣的一个问题,事实上在之前申请学校的时候一次电话面试中我也被问到了这个问题。我当时的回答是背后的理论我并不是很清楚,但是我知道一个直观上的理解。下面我们就先来看一下这个直观上的理解。

首先,很 ridge regression 类似,上面形式的 LASSO 问题也等价于如下形式:

者更确切地说,将会有无穷多个解。也就是说,我们的数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不是真正好的解,总而言之,我们 overfitting 了。

解决 overfitting 最常用的办法就是 regularization ,例如著名的 ridge regression 就是添加一个 ?2 regularizer :

JR(w)=1n∥y−Xw∥2+λ∥w∥2

直观地来看,添加这个 regularizer 会使得模型的解偏向于 norm 较小的 w 。从凸优化的角度来说,最小化上面这个 J(w) 等价于如下问题:

minw1n∥y−Xw∥2,s.t.∥w∥≤C

其中 C 是和 λ 一一对应的是个常数。也就是说,我们通过限制 w 的 norm 的大小实现了对模型空间的限制,从而在一定程度上(取决于 λ 的大小)避免了 overfitting 。不过 ridge regression 并不具有产生稀疏解的能力,得到的系数 w 仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观。

不过,特别是在像生物或者医学等通常需要和人交互的领域,稀疏的解除了计算量上的好处之外,更重要的是更具有可解释性。比如说,一个病如果依赖于 5 个变量的话,将会更易于医生理解、描述和总结规律,但是如果依赖于 5000 个变量的话,基本上就超出人肉可处理的范围了。

在这里引入稀疏性的方法是用 ?1 regularization 代替 ?2 regularization,得到如下的目标函数

eq: 2 »

JL(w)=1n∥y−Xw∥2+λ∥w∥1

该问题通常被称为 LASSO (least absolute shrinkage and selection operator) 。LASSO 仍然是一个 convex optimization 问题,不过不再具有解解析解。它的优良性质是能产生稀疏性,导致 w中许多项变成零。

可是,为什么它能产生稀疏性呢?这也是一直让我挺感兴趣的一个问题,事实上在之前申请学校的时候一次电话面试中我也被问到了这个问题。我当时的回答是背后的理论我并不是很清楚,但是我知道一个直观上的理解。下面我们就先来看一下这个直观上的理解。

首先,很 ridge regression 类似,上面形式的 LASSO 问题也等价于如下形式:

minw1n∥y−Xw∥2,s.t.∥w∥1≤C

也就是说,我们将模型空间限制在 w 的一个 ?1-ball 中。为了便于可视化,我们考虑两维的情况,在 (w1,w2) 平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为 C 的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解。如图 (fig: 1) 所示:

fig: 1 »

  • ?1-ball meets quadratic function. ?1-ball has corners. It’s very likely that the meet-point is at one of the corners.

  • ?2-ball meets quadratic function. ?2-ball has no corner. It is very unlikely that the meet-point is on any of axes."

可以看到,?1-ball 与 ?2-ball 的不同就在于他在和每个坐标轴相交的地方都有出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置为产生稀疏性,例如图中的相交点就有 w1=0 ,而更高维的时候(想象一下三维的 ?1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。

相比之下,?2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么 ?1 regularization 能产生稀疏性,而 ?2 regularization 不行的原因了。

不过,如果只限于 intuitive 的解释的话,就不那么好玩了,但是背后完整的理论又不是那么容易能够搞清楚的,既然这次的标题是 Basics ,我们就先来看一个简单的特殊情况好了。

接下来我们考虑 orthonormal design 的情况:(1/n)XTX=I 。然后看看 LASSO 的解具体是什么样子。注意 orthonormal design 实际上是要求特征之间相互正交。这可以通过对数据进行 PCA 以及模长 normalize 来实现。

注意到 LASSO 的目标函数 (eq: 2) 是 convex 的,根据 KKT 条件,在最优解的地方要求 gradient∇JL(w)=0 。不过这里有一点小问题: ?1-norm 不是光滑的,不存在 gradient ,所以我们需要用一点 subgradient 的东西。

def: 1 »

定义 subgradient; subdifferential

对于在 p 维欧氏空间中的凸开子集 U 上定义的实值函数 f:U→R ,一个向量 p 维向量 v 称为 f 在一点 x0∈U 处的 subgradient ,如果对于任意 x∈U ,满足

f(x)−f(x0)≥v⋅(x−x0)

由在点 x0 处的所有 subgradient 所组成的集合称为 x0 处的 subdifferential ,记为 ∂f(x0) 。

注意 subgradient 和 subdifferential 只是对凸函数定义的。例如一维的情况, f(x)=|x| ,在 x=0 处的 subdifferential 就是 [−1,+1] 这个区间(集合)。注意在 f 的 gradient 存在的点,subdifferential 将是由 gradient 构成的一个单点集合。这样就将 gradient 的概念加以推广了。这个推广有一个很好的性质。

性质 condition for global minimizer

点 x0 是凸函数 f 的一个全局最小值点,当且仅当 0∈∂f(x0) 。

证明很简单,将 0∈∂f(x0) 带入定义 (def: 1) 中的那个式子立即就可以得到。有了这个工具之后,就可以对 LASSO 的最优解进行分析了。在此之前,我们先看一下原始的 least square 问题的最优解 (eq: 1) 现在变成了什么样子,由于 orthonormal design ,我们有

eq: 3 »

wˆ=1nXTy

然后我们再来看 LASSO ,假设 wˉ=(wˉ1,…,wˉp)T 是 JL(w) 的全局最优值点。考虑第 j个变量 wˉj ,有两种情况。

gradient 存在,此时 wˉj≠0

由于 gradient 在最小值点必须要等于零,我们有

∂JL(w)∂wj∣∣∣wˉj=0

亦即

−2n(XTy−XTXwˉ)j+λsign(wˉj)=0

根据 orthonormal design 性质以及 least square 问题在 orthonormal design 时的解 (eq: 3) 化简得到

wˉj=wˆj−λ2sign(wˉj)

从这个式子也可以明显看出 wˉj 和 wˆj 是同号的,于是 sign(wˉj) 等于 sign(wˆj) ,所以上面的式子变为

wˉj=wˆj−λ2sign(wˆj)=sign(wˆj)(∣∣wˆj∣∣−λ2)

再用一次 sign(wˆj)=sign(wˉj) ,两边同时乘以 sign(wˉj) ,可以得到

∣∣wˆj∣∣−λ2=∣∣wˉj∣∣≥0

于是刚才的式子可以进一步写为

eq: 4 »

wˉj=sign(wˆj)(∣∣wˆj∣∣−λ2)+

这里 (x)+=max{x,0} 表示 x 的正部。

gradient 不存在,此时 wˉj=0

根据 subgradient 在最小值点处的性质的性质,此时比有

0=wˉj∈∂JL(wˉ)={−2n(XTy−XTXwˉ)j+λe:e∈[−1,1]}={2wˉj−2wˆj+λe:e∈[−1,1]}

亦即存在 e0∈[−1,1] 使得

0=2wˉj−2wˆj+λe0=2wˆj+λe0

于是

|wˆj|=λ2|e0|≤λ2

又因为 wˉj=0 ,所以这个时候式子也可以统一为 (eq: 4) 的形式。 如此一来,在 orthonormal design 的情况下,LASSO 的最优解就可以写为 (eq: 4) ,可以用图 (fig: 2) 形象地表达出来。

fig: 2 »

图上画了原始的 least square 解,LASSO 的解以及 ridge regression 的解,用上面同样的方法(不过由于 ridge regularizer 是 smooth 的,所以过程却简单得多)可以得知 ridge regression 的解是如下形式

21+2λwˆj

可以 ridge regression 只是做了一个全局缩放,而 LASSO 则是做了一个 soft thresholding :将绝对值小于 λ/2 的那些系数直接变成零了,这也就更加令人信服地解释了 LASSO 为何能够产生稀疏解了。

l2正则可以防止参数估计的过拟合,但是选择合适lambda比较困难,需要交叉验证。如果有个特征与输出结果不相关,则L2会给一个特别小的值,但是不会为0.

l1正则会产生稀疏解,即不相关的的特征对应的权重为0,就相当于降低了维度。但是l1的求解复杂度要高于l2,并且l1更为流行

时间: 2024-10-06 02:43:18

LASSO问题及其最优解的相关文章

机器学习:概念与理解(二):回归、稀疏与正则约束 ridge regression,Lasso

"机器学习:概念与理解"系列,我本着开放与共享(open and share)的精神撰写,目的是让更多的人了解机器学习的概念,理解其原理,学会应用.现在网上各种技术类文章很多,不乏大牛的精辟见解,但也有很多滥竽充数.误导读者的.这个系列对教课书籍和网络资源进行汇总.理解与整理,力求一击中的,通俗易懂.机器学习很难,是因为她有很扎实的理论基础,复杂的公式推导:机器学习也很简单,是因为对她不甚了解的人也可以轻易使用.我希望好好地梳理一些基础方法模型,输出一些真正有长期参考价值的内容,让更多

笔记︱范数正则化L0、L1、L2-岭回归&Lasso回归(稀疏与特征工程)

一.正则化背景 监督机器学习问题无非就是"minimizeyour error while regularizing your parameters",也就是在规则化参数的同时最小化误差.最小化误差是为了让我们的模型拟合我们的训练数据, 而规则化参数是防止我们的模型过分拟合我们的训练数据. 问题背景:参数太多,会导致我们的模型复杂度上升,容易过拟合. 作用: 1.约束参数,降低模型复杂度. 2.规则项的使用还可以约束我们的模型的特性.这样就可以将人对这个模型的先验知识融入到模型的学习当

Lasso Regression

Lasso Regression 标签(空格分隔): 监督学习 在数据挖掘和机器学习算法的模型建立之初,为了尽量的减少因缺少重要变量而出现的模型偏差问题,我们通常会尽可能的多的选择自变量.但是在实际建模的过程中,通常又需要寻找 对响应变量具有解释能力的自变量子集,以提高模型的解释能力与预测精度,这个过程称为特征选择. 还是考虑<线性回归>中的一般线性回归模型y=wTx,使用最小二乘估计(OLS)可以得到,模型的参数为: w=argminw∑i=1N(yi?wTxi)=(XTX)?1y 最小二乘

2013 AAAI: Uncorrelated Lasso

Si-Bao Chen, Chris Ding, Bin Luo and Ying Xie. Uncorrelated Lasso. AAAI, 2013. 第一作者是安徽大学陈思宝副教授. 第二作者 Chris Ding 是德克萨斯大学阿灵顿分校的教授,Google Scholar 上他引超过 15700 次. 这篇文章考虑 Lasso 做特征选择时特征之间的相关性,使选出来的特征尽量不相关以减少冗余. 优化形式是在原 Lasso 后加入一相关系数矩阵(平方)的凸项,如下图: 其中矩阵 C 是

SVM=LASSO?

SVM和LASSO是机器学习里两个非常经典的模型,每个模型都有大量的文献进行研究.其中去年出版的这本书——<Regularization, Optimization, Kernels, and Support Vector Machines>的第一章证明了某些形式的SVM和LASSO其实是等价的,这里的“等价”是指给定一个SVM/LASSO的特例,可以将它们规约成一个LASSO/SVM的特例,归约前后的两个问题拥有相同的最优值,给定规约前问题的最优解,可以得到一个对应的规约后问题的最优解.因此

Lasso回归算法: 坐标轴下降法与最小角回归法小结

前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对于Lasso回归的解法没有提及,本文是对该文的补充和扩展.以下都用矩阵法表示,如果对于矩阵分析不熟悉,推荐学习张贤达的<矩阵分析与应用>. 1. 回顾线性回归 首先我们简要回归下线性回归的一般形式: hθ(X)=Xθhθ(X)=Xθ 需要极小化的损失函数是: J(θ)=12(Xθ?Y)T(Xθ?Y

线性模型之-Lasso

##算法的简要概述 在机器学习问题中,高维度数据进行回归和分类是一个很困难的问题.例如在许多Microarray生物数据上,数据的维度通常是千和万级别,但是由于收集数据需要昂贵的实验,因此可用的训练数据却相当少,通常只有50-300左右,这样的现象通常称为"small samples, large problem". 高维度问题带来两个缺点: 1)计算量.从大小矩阵乘积计算和多矩阵计算角度来说,矩阵的稀疏程度越大,矩阵计算数量越少,矩阵计算速度越快. 2)overfitting.对于回

岭回归和lasso回归(转)

回归和分类是机器学习算法所要解决的两个主要问题.分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题.但是回归就稍微复杂一些,回归模型的输出值是连续的,也就是说,回归模型更像是一个函数,该函数通过不同的输入,得到不同的输出. 那么,什么是线性回归,什么是非线性回归呢? 线性回归与非线性回归 前面说了,我们的回归模型是一个函数是吧,那么线性回归就是模型函数是由若干个基本函数线性加权得到的函数.也就是每一个基本函数前面都有一个权值来调和自己对

矩阵相乘求最优解(C++算法)

#include "stdafx.h"  #include <iostream>   using namespace std;     const int L = 7;    int RecurMatrixChain(int i,int j,int **s,int *p);//递归求最优解  void Traceback(int i,int j,int **s);//构造最优解    int main()  {      int p[L]={30,35,15,5,10,20