L1正则化和L2正则化是机器学习中常用的两种防止模型过拟合的技术,它们通过在损失函数中添加对模型权重的惩罚项,限制模型的复杂度。以下是它们的详细对比和实际应用:
一、核心定义
1. L1正则化(Lasso正则化)
• 数学形式:在损失函数中添加权重向量的绝对值之和作为惩罚项:
$$
\text{损失函数} = \text{原始损失} + \lambda \sum_{i=1}^n |w_i|
$$
其中,$\lambda$ 是正则化强度超参数,控制惩罚力度。
• 特点:
• 稀疏性:倾向于产生部分权重为0的解,实现特征自动选择。
• 鲁棒性:对异常值更稳健(因绝对值函数在零点不可导,但惩罚更集中)。
2. L2正则化(Ridge正则化)
• 数学形式:在损失函数中添加权重向量的平方和作为惩罚项:
$$
\text{损失函数} = \text{原始损失} + \lambda \sum_{i=1}^n w_i^2
$$
其中,$\lambda$ 是正则化强度超参数。
• 特点:
• 权重收缩:使权重趋向较小的值,但不会完全为零。
• 稳定性:对高相关性特征更稳健,适合处理共线性问题。
二、几何意义
1. 优化空间的约束
• L1正则化:约束区域是菱形(绝对值和的等值线),顶点在坐标轴上,容易使某些权重降到零。
• L2正则化:约束区域是圆形(平方和的等值线),边界平滑,权重趋向均匀缩小。
2. 权重分布对比
• L1:部分权重为0,其余非零权重较小。
• L2:所有权重非零,但值较小且分布更均匀。
三、核心区别
特性 | L1正则化 | L2正则化 |
---|---|---|
稀疏性 | 产生稀疏解(部分权重为0) | 权重非零,但值较小 |
特征选择 | 自动筛选重要特征(零权重即剔除) | 保留所有特征,但降低复杂度 |
数学可导性 | 绝对值函数在零点不可导 | 平方函数处处可导 |
优化方法 | 坐标下降、近端梯度下降 | 梯度下降、闭式解(如岭回归公式) |
适用场景 | 高维数据、特征冗余、需要解释性 | 特征共线性、需要平滑解 |
四、实际应用场景
1. L1正则化的典型应用
• 特征选择:在文本分类、基因数据分析等高维场景中,自动剔除无关特征。
• 稀疏模型:如Lasso回归、L1逻辑回归,适用于需要模型解释性的领域(如金融风控)。
• 图像处理:压缩感知(Compressed Sensing)中通过稀疏表示恢复信号。
2. L2正则化的典型应用
• 防止过拟合:在线性回归(岭回归)、支持向量机(SVM)中使用,提升模型泛化能力。
• 处理共线性:当特征间存在高度相关性时,L2正则化能稳定参数估计。
• 深度学习:权重衰减(Weight Decay)常采用L2正则化,防止网络过拟合。
五、代码示例(Python)
1. Lasso回归(L1)
from sklearn.linear_model import Lasso # 创建Lasso模型,alpha为正则化强度 lasso = Lasso(alpha=0.1) lasso.fit(X_train, y_train) print("Lasso系数:", lasso.coef_) # 部分系数为0
2. Ridge回归(L2)
from sklearn.linear_model import Ridge # 创建Ridge模型,alpha为正则化强度 ridge = Ridge(alpha=0.1) ridge.fit(X_train, y_train) print("Ridge系数:", ridge.coef_) # 所有系数非零但较小
六、如何选择L1或L2?
数据维度:
• 高维数据(特征数远大于样本数):优先选择L1(稀疏性减少计算量)。特征相关性:
• 存在共线性:选择L2(稳定参数估计)。模型解释性需求:
• 需要解释特征重要性:选择L1(稀疏解直接显示重要特征)。计算效率:
• L2优化更简单(闭式解),L1需迭代算法(如坐标下降)。
七、进阶:弹性网络(Elastic Net)
结合L1和L2正则化,平衡稀疏性与稳定性:
$$
\text{损失函数} = \text{原始损失} + \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2
$$
适用于特征既存在冗余又需要部分稀疏的场景(如生物信息学)。
总结
• L1正则化:通过稀疏性实现特征选择,适合高维、需解释性的场景。
• L2正则化:通过权重收缩防止过拟合,适合共线性、需稳定性的场景。
• 选择依据:数据特性、模型目标(解释性 vs. 稳定性)及计算资源。
系统当前共有 460 篇文章