LASSO算法及原理

首席躺平官 2021-07-21 18:01:52 阅读: 2841

Lasso方法最早由Robert Tibshiran于1996年提出,文章发表在“统计四大”之一的皇家统计学会期刊上,尽管至今已有二十多年,但依然有着广泛的应用,由其发展出的方法层出不穷。本文着重介绍一下Lasso的原理以及2个最优解解法。

0.必要知识背景

0.1 线性模型的最小二乘估计

考虑线性模型:

[公式]

的参数 [公式] 和 [公式] 的估计问题,这里 [公式] 是 [公式] 观测向量, [公式] 为 [公式] 的设计矩阵, [公式] 是 [公式] 未知参数向量, [公式] 为随机误差, [公式] 为误差的方差。

估计参数向量 [公式] 的基本方法是最小二乘法,其思想是使得误差向量 [公式] 尽可能的小(这样我们损失的样本信息就尽可能的少),也就是使

[公式]

到达最小。解的过程略,最后,使得上式达到最小值的解为

[公式]

在大数据还没兴起之前,我们接触的数据大部分都是 [公式] ,即样本数大与变量数,做计量的同学应该很熟悉,这时候,若 [公式] ,则 [公式] 可逆,这时, [公式] 是 [公式] 的无偏估计,称 [公式] 为 [公式] 的最小二乘估计,最小二乘估计有很多优良的性质,在此不再赘述。但是,若 [公式] ,不满秩,那这时候就不存在 [公式] 的无偏估计,称 [公式] 是不可估的。不满秩的原因之一就是变量间存在线性关系,在计量经济学上成为共线性,因此计量的实证分析大都要做一些检验,抛开不表。为了解决这一问题,就有了岭回归(Ridge Regression)方法,简单来说,岭回归就是在前面最小化目标函数 [公式] 的后面加了一个2-范数的平方(范数接下来会讲):

[公式]

上式求解就可得到 [公式] 的岭估计:

[公式]

从上面我们可以明显看到 [公式] 保证了 [公式] 满秩、可逆,当然也由于其加入,此时的 [公式] 是一个有偏估计。关于 [公式] 的选择,有Horel-Kennard公式、岭迹法、交叉验证法......

因为本文主要介绍Lasso方法,在此不再做过多介绍,感兴趣的同学可以自行查阅相关资料。

0.2 范数(norm)

向量的范数

向量的 1-范数: [公式] 向量内各元素的绝对值之和

向量的 2-范数: [公式] 元素的平方和再开平方,一般就直接写 [公式] 不加下标了。

向量的 p-范数: [公式]

向量的无穷范数: [公式]

矩阵的范数

矩阵的 1-范数: [公式] 矩阵的每一上的元素绝对值先求和,再从中取个最大的(列和最大)

矩阵的 2-范数: [公式] 其中 [公式] 为 [公式] 的特征值,2-范数即为矩阵 [公式] 的最大特征值开平方。

矩阵的无穷范数: [公式] 矩阵的每一上的元素绝对值先求和,再从中取最大的(行和最大)。但还有一种情况,在很多的统计论文中,更常用的是把矩阵的无穷范数定义为矩阵中最大的元素: [公式]

这里只是借机会都给大家列出来了,本文并不需要用到这么多种范数。

1. Lasso原理

与岭回归类似,Lasso就是在目标函数 [公式] 后面加了一个1-范数

[公式]

Lasso的提出在岭回归之后,为啥加1-范数的Lasso没有加2-范数的岭回归早?

可能是因为1-范数作为绝对值之和不方便求导吧(个人猜测),因为做理论统计的学者提出一个新方法,不光要说明这个方法好,还要说明为啥好、哪里好。

为什么至今Lasso仍长青不老?

因为它可以解决现在高维数据一个普遍问题——稀疏性。高维数据即 [公式] 的情况(超高维是 [公式] ,这里不讨论),现在随着数据采集能力的提高,变量(也叫特征)数采集的多,但是其中可能有很多特征是不重要的,系数很小,如果用岭回归,可能这个不重要的变量也给你估出来了,而且可能还不小,而用Lasso方法,就可以把这些不重要变量的系数压缩为0,既实现了较为准确的参数估计,也实现了变量选择(降维)。

那为什么Lasso可以估计出系数为0?

我们以Tibshiran在文章中举的 [公式] 的例子来讲(我这相当于把他文章的2.3节翻译给大家了)

首先我们假设 [公式] 是满秩的,这样就可以用最小二乘法估计出来 [公式] ,对于 [公式] ,它也可以写成 [公式] ,在下图中以椭圆表示:

上图中(a)是Lasso估计图(b)是岭回归的估计图,横纵坐标分别表示 [公式] ,黑色部分表示两种方法的约束

[公式]

从图中可以看出,Lasso方法与之相交的地方恰为 [公式] ,而从图中也可以看出 [公式] 所处的位置本就是 [公式] 大, [公式] 小,我们取Lasso的结果,意味着 [公式] 的系数被压缩到了0。

你可能觉得,这个交点离着 [公式] 也太远了吧,这里要解释两点:一是做这样的图是为了更直观,所以有所夸大。二是,不管Lasso还是岭估计,它们都是有偏估计,肯定会与通过最小二乘法得到的无偏估计 [公式] 有差距。

2. Lasso 最优解

Lasso因为其约束条件(也有叫损失函数的)不是连续可导的,因此常规的解法如梯度下降法、牛顿法、就没法用了。接下来会介绍两种常用的方法:坐标轴下降法最小角回归法

2.1 坐标轴下降法

坐标轴下降法是一种迭代算法,与梯度下降法利用目标函数的导数来确定搜索方向不同,坐标轴下降法是在当前坐标轴上搜索函数最小值,不需要求目标函数的导数。

以2维为例,设损失函数为凸函数 [公式] ,在初始点固定 [公式] ,找使得 [公式] 达到最小的 [公式] ,然后固定 [公式] ,找使得 [公式] 达到最小的 [公式] ,这样一直迭代下去,因为 [公式] 是凸的,所以一定可以找到使得 [公式] 达到最小的点 [公式] 。(如下图)

在 [公式] 维的情况下,同理,参数 [公式] 为 [公式] 维向量,固定 [公式] 个参数,计算剩下的那个参数使得凸函数 [公式] 达到最小的点, [公式] 个参数都来一次,就得到了该次迭代的最小值点。具体来说就是(以 [公式] 表示第 [公式] 次迭代第 [公式] 个参数的值):

  1. 初始位置点为 [公式]
  2. 第 [公式] 次迭代,从 [公式] 开始,固定后面 [公式] 个参数,计算使得 [公式] 达到最小的 [公式] ,然后依次往后计算,到 [公式] 为止,一共执行 [公式] 次运算:
    [公式]
  3. 若各 [公式] 相较于 [公式] 次迭代都变化极小,说明结果已收敛,迭代结束,否则继续迭代。

你可能会有疑问,我最后得到的 [公式] 只是局部(因为固定了其余 [公式] 个)最优解啊,为什么 [公式] 就是全局最优解了? 这是凸优化问题的一个基本性质——任意局部最优解也是全局最优解。感兴趣的同学可以参考Stephen_Boyd的《convex optimization》第4.2.2节,清华大学出版社有中译本。

2.2 最小角回归法(Least Angle Regression)

最小角回归法(LARS)是Bradley Efron于2004年的论文《Least Angle Regression》中提出的一种算法。该算法与经典向前选择(classic Forward Selection)算法接近,我们先简单介绍一下向前选择算法,以2维为例: [公式] ,为了估计出 [公式] ,我们先将 [公式] 往与其最接近(相关性最大)的 [公式] 上做投影,假设与 [公式] 最近,得到 [公式] ,然后残差往 [公式] 上做投影,得到 [公式] ,over。(如图所示)

最小角回归算法与之类似,但不像向前选择一样"贪婪",按照论文上的说法是这样:

与经典向前选择算法一样,我们所有的系数都从0开始,然后找到与相应变量 [公式] 最相关的预测变量 [公式] ,比如 [公式] 。我们朝着这个预测变量的方向尽可能的迈出最大的一步,直到另一个预测变量,比如 [公式] ,它与当前残差有与 [公式] 相同的相关性。在这个点上,LARS与向前选择不同,不是继续沿着 [公式] 前进,而是沿着两者的角平分线前进,直到第三个变量 [公式] 与当前残差有与 [公式] 相同的相关性,然后沿着 [公式] 的角平分线前进,即:最小角方向。直到第四个变量进入,然后以同样的方式继续下去。

接下来我们以2维为例作图说明,关于相关性,为了更直观给大家表示,我们选择皮尔逊(Pearson)相关系数,因为Pearson相关系数在数值上等于角的余弦值。

如果你是第一次知道Pearson相关系数等于两向量的余弦值,我举几个例子:两向量同方向,夹角为0,余弦值为1,Pearson相关系数为1,若两向量垂直,则余弦值与Pearson相关系数为0,若完全反方向(夹角180度),余弦值与Pearson相关系数为-1。因此,夹角越小,说明相关性越大。
这张图只是尽可能的还原论文中的图,实际中,并不一定正好有 [公式] ,至于为什么没用原论文的图,因为我下的论文不知道为啥图片是糊的。

从这张图上我们可以看到,一开始, [公式] 与 [公式] 夹角更小(相关性更大),于是沿着 [公式] 的方向走,走到 [公式] 和当前残差相关性相等的地方,开始沿着 [公式] 的角平分线前进(即 [公式] 的方向),至于最后正好与 [公式] 相交,是巧合,不要被误导以为这个算法就能完美估计出来参数。

3.后续

最后说一下,Lasso方法不管是在Python还是R上都可以轻松实现,调用包以后只需要一行代码就可以求出结果,就不讲了。这里要说一下一开始给出的公式

[公式]

其中的 [公式] 在软件中一般以交叉验证(CV)得到。但同时我们也有其等价定义

[公式]

这里 [公式] 选择的越小,参数被压缩到 0 的越多,如果 [公式] 非常大,系数就基本不会被压缩,以Lasso论文中的图片为例:

横坐标 [公式] 就是公式中的 [公式] ,这里虚线表示 [公式] ,这时选出来了三个变量,其余变量的系数都被压缩到了 0。从图中我们可以看出,若 [公式] ,那就只剩一个系数了,若 [公式] 很大,所有系数都不会被压缩。

之所以放上这个图,是因为软件输出结果会出现这种图,如果我们需要一定的变量数,而通过CV选出的太少,可以根据这图手动调参,使输出的系数符合我们的要求(当然其他指标如残差平方和也会有所变化)。

原文链接:https://zhuanlan.zhihu.com/p/116869931

邀请讨论

附件

{{f.title}} 大小 {{f.file_size}} 下载 {{f.count_download}} 金币 {{f.count_gold}}
{{item.nick_name}} 受邀请回答 {{item.create_time}}
{{item.refer_comment.nick_name}} {{item.refer_comment.create_time}}

附件

{{f.title}} 大小 {{f.file_size}} 下载 {{f.count_download}} 金币 {{f.count_gold}}
切换到完整回复 发送回复
赞({{item.count_zan}}) 踩({{item.count_cai}}) 删除 回复 关闭
科研狗©2015-2024 科研好助手,京ICP备20005780号-1 建议意见

服务热线

178 0020 3020

微信服务号