机器学习: 正则化技术与示例

正则化(Regularization) 是机器学习与深度学习中用于防止过拟合、提升模型泛化能力的核心技术。简单说,就是给模型加“约束”,避免它死记硬背训练数据,强迫它学习数据的通用规律。

一、核心作用

  • 解决过拟合:模型在训练集表现极好,但在测试/新数据上表现差(过度学习噪声/细节)。
  • 提升泛化能力:让模型在未知数据上更稳定、准确。
  • 控制复杂度:限制参数大小/自由度,让模型更简单、更鲁棒。

二、核心原理

损失函数中加入 正则项(惩罚项),形成新的优化目标:

\[\text{总损失} = \text{原始损失} + \lambda \cdot \text{正则项} \]

  • \(\lambda\)(正则化系数):控制惩罚强度。\(\lambda\) 越大,模型越简单、越容易欠拟合。
  • 正则项:衡量模型复杂度,参数越大/越复杂,惩罚越大。

三、主流正则化方法

1. L1 正则化(Lasso 回归)

  • 惩罚项:权重的绝对值之和

    \[\Omega(w) = \sum |w_i| \]

  • 效果:产生稀疏解(许多权重精确为 0)→ 自动特征选择
  • 适用:特征多、想筛选重要特征、特征间相关性低。

2. L2 正则化(Ridge 回归 / 权重衰减)

  • 惩罚项:权重的平方和

    \[\Omega(w) = \sum w_i^2 \]

  • 效果权重均匀缩小(不会到 0)→ 平滑、稳定、抗干扰。
  • 适用:最常用,特征多且相关、希望所有特征都保留但权重均衡。

3. 弹性网络(Elastic Net)

  • 结合 L1 + L2

    \[\Omega(w) = \lambda_1\sum|w_i| + \lambda_2\sum w_i^2 \]

  • 适用:高维、特征高度相关、既想稀疏又想稳定。

4. 深度学习专用

  • Dropout:训练时随机失活部分神经元,避免依赖局部特征。
  • 早停(Early Stopping):验证集误差上升时提前停止训练
  • 批量归一化(BN)权重约束数据增强等。

四、L1 vs L2 对比

特性 L1 (Lasso) L2 (Ridge)
惩罚形式 绝对值和 平方和
解的特点 稀疏(很多0) 稠密(都很小)
几何 菱形约束(坐标轴尖角最优) 圆形约束(平滑收缩)
特征选择 ✅ 强 ❌ 弱
异常值 更鲁棒 较敏感
计算 次梯度 解析解、稳定

五、怎么选

  • 特征选择 → 用 L1
  • 平滑稳定、权重均衡 → 用 L2
  • 特征高度相关 → 用 弹性网络
  • 深度网络 → Dropout + L2 + 早停 组合

六、一句话总结

正则化 = 给损失函数加惩罚,用轻微牺牲训练精度,换取泛化能力大幅提升,是机器学习必用的“防过拟合神器”。

下面给你一套可直接复制运行的正则化代码模板,包含:
线性回归 / L1(Lasso) / L2(Ridge) / ElasticNet,用 sklearn 实现。


以下为完整代码模版:

1. 完整代码模板(Python)

2. 结果说明

(1)MSE 含义

  • 训练 MSE:在训练集上的误差
  • 测试 MSE:泛化能力(越小越好

可以看到:

  • 普通线性回归:训练误差最小,但测试误差最大 → 过拟合
  • L1/L2/ElasticNet:测试误差更低 → 正则化有效防过拟合

(2)权重图解释

  • Linear:很多噪声特征权重也很大 → 过拟合
  • L1(Lasso):噪声特征权重被压到 0 → 自动特征选择
  • L2(Ridge):所有权重均匀变小 → 平滑稳定
  • ElasticNet:介于两者之间

3. 常用调参说明

Lasso(L1)

Lasso(alpha=0.1)
  • alpha 越大 → 惩罚越强 → 更多权重变 0

Ridge(L2)

Ridge(alpha=1.0)
  • alpha 越大 → 权重越小 → 越不容易过拟合

ElasticNet

ElasticNet(alpha=0.1, l1_ratio=0.5)
  • l1_ratio=0 → 纯 L2
  • l1_ratio=1 → 纯 L1

4. 深度学习版(PyTorch 极简示例)

L2 正则就是 weight_decay

optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, weight_decay=1e-4)

posted @ 2026-04-10 19:45  kkman2000  阅读(17)  评论(0)    收藏  举报