1. 从过拟合困局出发:LASSO到底改了什么
做机器学习的人,不管是在校复习还是在项目里跑模型,几乎都会碰到这个经典场景:手里的训练集只有两百行,特征却有两千列,特征之间还七拐八拐地相关。用普通线性回归去拟,训练集R²能到0.99,一到验证集就崩;用逐步回归手动筛变量,又得人工定阈值、反复调p-value,工程上一圈跑下来速度慢不说,选出来的结果换个数据划分就不稳定。
这时候LASSO基本是首选思路之一。它的全称是Least Absolute Shrinkage and Selection Operator,翻译过来叫“最小绝对值收缩与选择算子”,核心就干两件事:一是把回归系数往零的方向收缩,二是把其中一部分系数精确压成零。压成零的那些特征,等于模型自动帮你删掉了;没被压成零的,就是留下的“有效变量”。所以LASSO常被形容成一种内嵌了特征选择的回归方法。
我第一次认真用LASSO是处理一个客户流失预测的活儿。当时业务方丢过来一张宽表,里面光用户行为衍生变量就有三百多个,还有很多是不同时间窗口的统计值,相互之间严重冗余。一开始我用L2正则化的岭回归,模型效果还行,但业务方不满意:他们需要一份“哪些因素最影响流失”的清单,把几十个非零系数拿去做运营策略,根本没法落地。后来换成LASSO,λ调到合适位置,系数表一下就清爽了,留下来的变量业务含义也都说得通。从那以后我对它的定位就很明确:它不只是个防过拟合工具,更是一台“变量筛选器”。
这篇内容我会从原理、求解、调参到实际应用的坑一路讲下去。适合三类人看:一是正在做期末复习或者面试突击的学生,想把LASSO和岭回归的区别讲清楚;二是特征很多、模型频繁迭代的从业者,想知道怎么把这个算法真正用出效果;三是刚开始跑机器学习项目,想找一个可复现流程的新手。
1.1 LASSO改的是回归目标函数,不是改模型结构
很多人误以为LASSO是一种全新的模型,其实它的骨架仍然是线性回归,只是在目标函数后面增加了一项惩罚。线性回归本来想最小化残差平方和,LASSO变成了最小化下面这个东西:
[
\min_{\beta} \left{ \frac{1}{2n}\sum_{i=1}^{n}(y_i - x_i^T\beta)^2 + \lambda \sum_{j=1}^{p}|\beta_j| \right}
]
这里的 (\lambda) 是个非负的调节参数,越大表示对系数的“惩罚”越狠。( p ) 是特征数量。如果 (\lambda = 0),它就是普通最小二乘。随着 (\lambda) 增大,越来越多的系数会被推向零。
这跟“给模型加了一个约束”可以等价理解。用拉格朗日乘子把上面的目标函数改写回约束形式:
[
\min_{\beta} \frac{1}{2n}\sum_{i=1}^{n}(y_i - x_i^T\beta)^2 \quad \text{s.t.} \quad \sum_{j=1}^{p}|\beta_j| \le t
]
(\lambda) 和 (t) 是一一对应的。(\lambda) 越大,约束半径 (t) 越小,系数被限制在一个以原点为中心的菱形区域里。
1.2 岭回归用L2,LASSO用L1,差别到底在哪
如果惩罚项从绝对值范数换成平方范数,就成了岭回归:
[
\min_{\beta} \left{ \frac{1}{2n}\sum_{i=1}^{n}(y_i - x_i^T\beta)^2 + \lambda \sum_{j=1}^{p}\beta_j^2 \right}
]
岭回归能把系数缩小,但不会精确到零。这带来一个实际问题:变量一个都没筛掉,只是“重量变轻了”。
LASSO用L1范数的结果则完全不同。简单说,L2惩罚的等值面是圆球形,L1惩罚的等值面是带尖角的菱形。尖角刚好落在坐标轴上,所以最优解更容易出现在“某个系数恰好等于0”的位置。这个几何直觉,是理解LASSO的核心,下一节我会展开讲。
我当时踩过一个坑:刚接触LASSO时以为它和岭回归差不多,无非是把损失函数里的平方换成了绝对值。直到项目里需要变量清单时才发现,岭回归给不出清单,LASSO能给。这俩看似只差一个符号级别的小改动,实际行为差得非常远。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 菱形与圆形的博弈:L1惩罚项的几何直觉和数学推导
要搞清楚为什么LASSO能把系数压成零,不能只背“L1比L2更容易稀疏”这句话。我推荐从两个变量的小例子入手,理解了二维的几何图像,高维也就八九不离十了。
假设只有两个特征,模型要估计的系数是 ((\beta_1, \beta_2))。普通最小二乘没有惩罚项,解出来的点可能落在任意位置;加了惩罚后,问题变成了“在满足惩罚约束的区域里,找残差平方和最小的点”。
注意看两件事:
- 残差平方和的等高线,在没有惩罚项时是一圈一圈的椭圆,中心是OLS解。
- 惩罚约束区域一
