L1和L2正则化

简介: L1和L2正则化

L1和L2正则化是两种常用的正则化技术,它们通过在模型的损失函数中添加一个正则化项来减少过拟合。这两种技术都旨在惩罚模型的复杂度,但它们在数学上和实际应用中有所不同。

L1正则化(Lasso正则化)

L1正则化通过向损失函数添加模型权重的绝对值之和来工作。它的公式如下:
[ L{\text{total}} = L + \lambda \sum{i=1}^{n} |w_i| ]
其中:

  • ( L ) 是原始损失函数,例如均方误差。
  • ( \lambda ) 是正则化参数,控制正则化项的强度。
  • ( w_i ) 是模型权重。
  • ( n ) 是权重的数量。

L1正则化的特点是它可以产生稀疏权重矩阵,即许多权重会变成0。这意味着L1正则化有助于特征选择,因为它可以自动将不重要的特征的权重置为0。

L2正则化(Ridge正则化)

L2正则化通过向损失函数添加模型权重的平方和来工作。它的公式如下:
[ L{\text{total}} = L + \lambda \sum{i=1}^{n} w_i^2 ]
其中:

  • ( L ) 是原始损失函数。
  • ( \lambda ) 是正则化参数。
  • ( w_i ) 是模型权重。
  • ( n ) 是权重的数量。

L2正则化的目的是限制模型权重的增长,使其不会变得过大。这有助于防止模型在训练数据上过度拟合,因为它鼓励模型保持权重较小。

选择L1还是L2正则化?

  • 特征选择:如果你希望模型具有特征选择的能力,即自动将不重要的特征权重置为0,那么L1正则化是更好的选择。
  • 参数更新稳定性:L2正则化在参数更新时更加稳定,因为它对权重的惩罚是平滑的,而L1正则化在权重接近0时会导致不稳定的更新。
  • 多重共线性:当数据中存在多重共线性(特征之间高度相关)时,L2正则化可以帮助处理这个问题,因为它不会将权重完全置为0,而是会将它们压缩到较小的值。

实际应用

在实际应用中,通常会通过交叉验证来选择最佳的正则化参数( \lambda ),以及决定使用L1、L2还是两者的组合(称为Elastic Net正则化)。这些正则化技术可以应用于多种机器学习模型,包括线性回归、逻辑回归、神经网络等。

代码示例(以Python的scikit-learn库为例)

from sklearn.linear_model import Lasso, Ridge

# L1正则化(Lasso回归)
lasso = Lasso(alpha=0.1)  # alpha对应于lambda

# L2正则化(Ridge回归)
ridge = Ridge(alpha=0.1)

# 训练模型
lasso.fit(X_train, y_train)
ridge.fit(X_train, y_train)

在这段代码中,alpha参数控制正则化的强度。通过调整这个参数,可以观察到模型在训练集和验证集上的性能变化,从而选择最佳的正则化强度。

相关文章
|
机器学习/深度学习 监控 数据可视化
训练损失图(Training Loss Plot)
训练损失图(Training Loss Plot)是一种在机器学习和深度学习过程中用来监控模型训练进度的可视化工具。损失函数是衡量模型预测结果与实际结果之间差距的指标,训练损失图展示了模型在训练过程中,损失值随着训练迭代次数的变化情况。通过观察损失值的变化,我们可以评估模型的拟合效果,调整超参数,以及确定合适的训练停止条件。
2571 5
|
JavaScript
【登录界面】vue、element-ui登录界面模板
这里总结一个用vue、element-ui写的登录界面,为以后复制粘贴备用
2137 0
【登录界面】vue、element-ui登录界面模板
|
安全 网络安全 PHP
网络安全-RCE(远程命令执行)漏洞原理、攻击与防御
网络安全-RCE(远程命令执行)漏洞原理、攻击与防御
1650 0
网络安全-RCE(远程命令执行)漏洞原理、攻击与防御
用于演化博弈中,列出复制动态方程后,求解复制动态方程的均衡点
用于演化博弈中,列出复制动态方程后,求解复制动态方程的均衡点
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
详解三种常用标准化Batch Norm & Layer Norm & RMSNorm
通过本文的介绍,希望您能够深入理解Batch Norm、Layer Norm和RMSNorm的原理和实现,并在实际应用中灵活选择和使用,提升深度学习模型的性能和稳定性。
2719 5
|
机器学习/深度学习 人工智能 算法
极智AI | 一文看懂Img2Col卷积加速算法
本教程详细解释了直接卷积计算与Img2Col卷积加速算法的实现原理。
939 0
|
网络虚拟化 网络架构
网络技术基础(11)—— 生成树STP简单学习
【3月更文挑战第1天】网络基础笔记(加班了几天,中途耽搁了,预计推迟6天),这篇借鉴了之前师兄的笔记,边听边记笔记实在是太慢了。
|
存储 JavaScript C语言
【C++】String -- 详解(上)
【C++】String -- 详解(上)
|
机器学习/深度学习 算法 数据挖掘
逻辑回归(LR)----机器学习
逻辑回归(LR)----机器学习
459 0