L1 L2 LASSO

来自freemind.pluskid.org

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  表示变量的个数,即数据维度。当  pn  的时候,不做任何其他假设或者限制的话,学习问题基本上是没法进行的。因为如果用上所有变量的话, p  越大,通常会导致模型越复杂,但是反过来  n  有很小,于是就会出现很严重的 overfitting 问题。例如,最简单的线性回归模型:

f(x)=j=1pwjxj=wTx

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

J(w)=1ni=1n(yif(xi))2=1nyXw2

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

wˆ=(XTX)1XTy

然而,如果  p>n  的话,矩阵  XTX  将会不是满秩的,而这个解也没法算出来。或者更确切地说,将会有无穷多个解。也就是说,我们的数据不足以确定一个解,如果我们从所有可行解里随机选一个的话,很可能并不是真正好的解,总而言之,我们 overfitting 了。

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

JR(w)=1nyXw2+λw2

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

minw1nyXw2,s.t.wC

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

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

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

JL(w)=1nyXw2+λw1

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

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

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

minw1nyXw2,s.t.w1C

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

定义 subgradient; subdifferential

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

f(x)f(x0)v(xx0)

由在点  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  的一个全局最小值点,当且仅当  0f(x0)  。

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

wˆ=1nXTy

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

gradient 存在,此时  wˉj0

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

JL(w)wjwˉj=0

亦即

2n(XTyXTXwˉ)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ˉj0

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

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

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

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

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

0=wˉjJL(wˉ)={2n(XTyXTXwˉ)j+λe:e[1,1]}={2wˉj2wˆj+λe:e[1,1]}

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

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

于是

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

又因为  wˉj=0  ,所以这个时候式子也可以统一为 (eq: 4) 的形式。 如此一来,在 orthonormal design 的情况下,LASSO 的最优解就可以写为 (eq: 4) ,可以用图 (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更为流行

<think>好的,我现在需要帮助用户理解L1和L2正则化的概念及用法。首先,我应该回顾一下自己掌握的知识,确保准确无误。正则化在机器学习中用于防止过拟合,L1和L2是两种常见的方法。它们通过在损失函数中添加惩罚项来限制模型参数的大小。 首先,L1正则化,也称为Lasso正则化,添加的是模型权重的绝对值之和作为惩罚项。这会导致一些权重变为零,从而产生稀疏的模型,适用于特征选择。而L2正则化,即Ridge正则化,添加的是权重的平方和,这会使得权重趋向于较小的值但不会完全为零,有助于处理共线性问题。 接下来,用户可能需要知道两者的数学表达式。L1的正则化项是$\lambda \sum |w_i|$,而L2的是$\lambda \sum w_i^2$。需要确保使用正确的LaTeX格式,如用户要求的行内公式用$...$,独立公式用$$...$$。 然后,我需要比较两者的区别,比如稀疏性、解的唯一性、计算效率等。例如,L1因为绝对值的性质,更容易产生稀疏解,这在特征数量多的时候很有用。而L2由于平方项,优化时梯度计算更平滑,可能更容易收敛。 还要考虑应用场景,比如L1用于特征选择,L2用于防止过拟合。此外,可以提到弹性网络(Elastic Net)结合了L1和L2的优点。 需要检查是否有遗漏的重要点,比如优化方法的不同。L1由于在零点处不可导,可能需要使用次梯度等方法,而L2可以使用标准的梯度下降。 最后,生成相关问题时要围绕用户可能感兴趣的扩展内容,比如如何选择正则化系数、与其他正则化方法的比较、实际案例等。确保问题有针对性,能引导用户进一步学习。 现在,整合这些信息,按照用户的要求结构化回答,引用相关的文献,并正确标注引用标识。同时,确保语言流畅,用中文表达,避免使用Markdown格式,代码部分用三个反引号包裹。</think>### L1正则化与L2正则化的概念及用法 #### 1. **本概念** 正则化(Regularization)是机器学习中防止模型过拟合的核心技术,通过在损失函数中添加惩罚项来约束模型参数。L1和L2正则化是最常用的两种方法: - **L1正则化(Lasso正则化)**:向损失函数添加模型权重$w_i$的绝对值之和,公式为: $$ \text{损失函数} + \lambda \sum_{i=1}^n |w_i| $$ 其中$\lambda$是正则化系数,控制惩罚力度[^2][^3]。 - **L2正则化(Ridge正则化)**:添加权重的平方和,公式为: $$ \text{损失函数} + \lambda \sum_{i=1}^n w_i^2 $$ 同样通过$\lambda$调节正则化强度[^2]。 #### 2. **核心区别** | 特性 | L1正则化 | L2正则化 | |---------------|------------------------------|------------------------------| | **稀疏性** | 产生稀疏解(部分权重为0)[^4] | 权重趋近于小值但不为0 | | **解的唯一性**| 可能多解(非严格凸) | 唯一解(严格凸) | | **计算效率** | 需特殊优化方法(如坐标下降) | 梯度下降可直接优化 | | **抗噪声能力**| 对异常值敏感 | 对异常值更鲁棒 | #### 3. **应用场景** - **L1适用场景**: - 特征选择:通过稀疏性筛选重要特征(如高维数据)。 - 解释性要求高的模型(如医学诊断)。 - **L2适用场景**: - 处理共线性问题(如线性回归中特征高度相关)。 - 防止过拟合的通用场景(如神经网络、逻辑回归)。 #### 4. **代码示例(线性回归)** ```python # L1正则化(Lasso回归) from sklearn.linear_model import Lasso model_l1 = Lasso(alpha=0.1) # alpha对应λ # L2正则化(Ridge回归) from sklearn.linear_model import Ridge model_l2 = Ridge(alpha=0.1) ``` #### 5. **参数选择建议** - 通过交叉验证(如GridSearchCV)选择最优$\lambda$。 - 实践中可结合两者(Elastic Net):$$ \text{损失函数} + \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2 $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值