机器学习: 正则化技术与示例
正则化(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→ 纯 L2l1_ratio=1→ 纯 L1
4. 深度学习版(PyTorch 极简示例)
L2 正则就是 weight_decay:
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, weight_decay=1e-4)

浙公网安备 33010602011771号