L1 和 L2 正则化有什么区别?为什么 L1 能产生稀疏解?
简化版
L1 正则(Lasso)在损失里加权重绝对值之和 λΣ|wᵢ|,会把不重要特征的权重直接压成 0,产生稀疏解,自带特征选择能力。L2 正则(Ridge)加权重平方和 λΣwᵢ²,把权重整体压小但很难压到 0,让权重平滑、抗共线性、防过拟合。L1 稀疏的原因:L1 的约束区域是带尖角的菱形(棱形),最优解容易落在坐标轴上的顶点(某些权重恰好为 0);L2 的约束区域是圆形,没有尖角,最优解一般落在圆周上但各分量都非 0。两者都通过惩罚大权重来限制模型复杂度、防过拟合。
详细版
L1 vs L2 对比:
| L1(Lasso) | L2(Ridge) | |
|---|---|---|
| 惩罚项 | `λΣ | wᵢ |
| 解的特点 | 稀疏(很多 w=0) | 稠密(w 都小但非 0) |
| 作用 | 特征选择 + 防过拟合 | 权重收缩 + 防过拟合 |
| 几何约束区 | 菱形(有尖角) | 圆形(光滑) |
| 对共线性 | 相关特征里随机留一个 | 相关特征权重被均摊 |
| 可导性 | 0 处不可导 | 处处可导 |
| 解稳定性 | 不稳定(易突变) | 稳定、平滑 |
为什么 L1 稀疏(两种解释):
- 几何:菱形约束区的顶点在坐标轴上,等高线最先碰到的往往是顶点 → 该维权重为 0。圆形无顶点,碰到的点各维都非 0。
- 梯度/软阈值:L1 的梯度是常数
±λ(符号函数),不管 w 多小都以固定力度往 0 推,能把小权重推到恰好 0;L2 梯度2λw正比于 w,w 越小推力越弱,只能无限逼近 0 而到不了 0。
ElasticNet = L1 + L2 结合,兼顾稀疏和稳定。
完整版教学
一、正则化在解决什么——给「大权重」上税
过拟合的一个典型信号是权重变得很大:模型为了精确拟合训练集(含噪声),把某些系数抬得极高,决策面变得剧烈扭曲。正则化的思路是:在原损失后面加一个惩罚项,惩罚「权重太大」,逼模型在「拟合训练数据」和「保持权重小/简单」之间权衡:
总损失 = 原始损失(如 MSE/交叉熵) + λ · 惩罚项(w)
- λ(正则强度):越大越强调「权重要小」,模型越简单(偏差↑方差↓);λ=0 就是不正则。
- 惩罚项用权重的绝对值和就是 L1,用平方和就是 L2。
直觉:权重小 → 模型对输入的微小变化不敏感 → 决策面平滑 → 泛化更好。
二、L2 正则(Ridge):把权重整体压小
惩罚 = λ Σ wᵢ² (权重平方和,即 L2 范数的平方)
特点:
- 把所有权重成比例地收缩变小,但很难压到恰好 0(趋近 0 而已)——解是稠密的。
- 处处可导(平方光滑),优化简单稳定。
- 抗多重共线性:当两特征高度相关时,L2 倾向把权重均摊到它们身上(各分一半),而不是集中在一个上,系数更稳定。
- 对线性回归就是岭回归,还顺带让
(XᵀX+λI)一定可逆,解决了共线性下不可逆的问题。
用途:单纯防过拟合、稳定系数,不需要特征选择时的默认选择。
三、L1 正则(Lasso):把权重压成 0,自带特征选择
惩罚 = λ Σ |wᵢ| (权重绝对值和,即 L1 范数)
特点:
- 会把不重要特征的权重直接压成恰好 0——解是稀疏的。权重为 0 意味着该特征被彻底剔除,所以 L1 自带特征选择,能得到又稀疏又可解释的模型。
- 在 0 处不可导(绝对值有尖角),优化需用次梯度 / 坐标下降 / 近端梯度。
- 特征高度相关时,L1 往往只随机保留其中一个、其余压 0(这既是优点也是不稳定来源)。
用途:高维、想做特征选择、想要稀疏可解释模型时首选。
四、核心问题:为什么 L1 稀疏、L2 不稀疏
这是面试的重头戏,给两种互补的解释。
解释一:几何视角(约束区域的形状)
把「加惩罚项」等价看成「在约束下最小化原损失」:L2 约束 Σwᵢ² ≤ t,L1 约束 Σ|wᵢ| ≤ t。二维下:
- L2 的约束区域是圆(
w₁²+w₂² ≤ t)。 - L1 的约束区域是菱形/棱形(
|w₁|+|w₂| ≤ t),四个顶点正好落在坐标轴上。
原损失的等高线(椭圆)从最优点向外扩,第一次碰到约束区域的点就是正则化后的解:
L2(圆):等高线通常切在圆周的「侧面」 → w₁、w₂ 都非 0(不稀疏)
L1(菱形):等高线很容易先碰到「尖角顶点」 → 顶点在轴上,某个 w=0(稀疏)
菱形有朝向坐标轴的尖角,等高线更容易先撞上尖角,而尖角处某个坐标恰好为 0。维度越高,尖角(低维面)越多,稀疏越明显。圆是光滑的没有尖角,撞上的点各分量一般都非 0。
解释二:梯度 / 软阈值视角(更本质)
看惩罚项对单个权重 w 的梯度(把它往 0 推的「力」):
- L2:
d(λw²)/dw = 2λw,推力正比于 w。w 越接近 0,推力越弱,趋于 0——所以能无限逼近 0,却永远到不了 0。 - L1:
d(λ|w|)/dw = λ·sign(w),推力是常数 ±λ,与 w 大小无关。哪怕 w 已经很小,仍以固定力度往 0 推,只要这个力压过原损失想让它偏离 0 的梯度,w 就被钉死在恰好 0。
这在数学上对应 软阈值(soft-thresholding):L1 会把绝对值小于某阈值的权重直接置 0。这是 L1 产生稀疏最本质的机制。
五、什么时候用哪个——含 ElasticNet
- L2(Ridge):想防过拟合、系数稳定、有共线性但不需要剔除特征。
- L1(Lasso):高维、特征冗余多、想自动选特征、要稀疏可解释模型。
- ElasticNet(L1+L2):
λ₁Σ|w| + λ₂Σw²。当特征多且高度相关时,纯 L1 会不稳定地只留一个,ElasticNet 用 L2 项稳住、L1 项保稀疏,兼顾特征选择与稳定性,是高维相关特征场景的常用折中。
六、常见追问
- λ 怎么定? 超参数,用交叉验证选。λ↑ → 正则强 → 偏差↑方差↓(更简单)。
- 正则前要不要标准化? 通常要。未加权的 L1/L2 惩罚作用于系数,特征单位不同会改变同等预测效应所需的系数大小;应在训练折拟合缩放器。若业务明确采用有单位含义的加权惩罚,则按该定义处理。
- L1 一定比 L2 好(因为能选特征)吗? 不一定。若所有特征都有用、或高度相关,L2 往往更稳、效果更好;要稀疏才选 L1。
- 从贝叶斯看? L2 等价于给权重加高斯先验,L1 等价于加拉普拉斯先验(尖峰厚尾,鼓励权重为 0)。
- 偏置 b 要正则吗? 一般不正则截距项,只惩罚权重 w。
七、用算例与工程边界复核
原损失相同的两组权重 [3,0] 与 [1.5,1.5],L1 范数都为 3,而 L2 平方和分别为 9 和 4.5;L2 更偏好分散的小权重。L1 的约束边界在坐标轴有尖角,最优解更容易落到某个系数为 0 的位置。
| 对象/方案 | 核心机制 | 选择或风险 |
|---|---|---|
| L1/Lasso | λΣ | w |
| L2/Ridge | λΣw² | 平滑收缩、通常不稀疏 |
| Elastic Net | λ1Σ | w |
把推导和选择压缩成执行路径:
standardize features
-> choose penalty and λ
-> fit inside CV folds
-> inspect stability, not only one split
L2 的准确说法是“通常不产生稀疏解”,不是数学上保证每个系数永远不等于 0。
八、常见误区与追问
- 误区:L1 选出的特征就是因果特征。 它按预测目标和样本相关性选择,不能提供因果保证。
- 误区:正则强度越大,泛化一定越好。 过强惩罚会造成高偏差和欠拟合,λ 必须在验证流程中选择。
- 追问:为什么正则前常标准化? 否则同一 λ 对不同单位特征施加不公平的有效惩罚。
- 追问:高度相关特征下 L1 会怎样? 它可能任意保留其中一个,跨数据折选择不稳定;Elastic Net 可缓解。
- 追问:截距是否正则化? 多数实现默认不惩罚截距,具体要检查库定义。
九、加强记忆
记忆时抓住这条主线:L1(Lasso,λΣ|w|)产生稀疏解、把小权重压成恰好 0、自带特征选择;L2(Ridge,λΣw²)把权重整体压小但非 0、稠密、抗共线性更稳定;两者都靠惩罚大权重防过拟合。L1 稀疏的两个解释背牢:几何——L1 约束区是带轴上尖角的菱形,等高线易先撞尖角、某维为 0(L2 是圆、无尖角、不稀疏);梯度——L1 推力是常数 ±λ(不管 w 多小都往 0 推,能钉到 0),L2 推力 2λw 正比 w(越小越弱,只能逼近 0)。选择:稳定/共线性用 L2、选特征/稀疏用 L1、高维相关用 ElasticNet;用前先标准化、截距不正则。