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参数控制正则化的强度。通过调整这个参数,可以观察到模型在训练集和验证集上的性能变化,从而选择最佳的正则化强度。

相关文章
|
3月前
|
机器学习/深度学习 算法
XGBoost中正则化的9个超参数
本文探讨了XGBoost中多种正则化方法及其重要性,旨在通过防止过拟合来提升模型性能。文章首先强调了XGBoost作为一种高效算法在机器学习任务中的应用价值,并指出正则化对于缓解过拟合问题的关键作用,具体包括降低模型复杂度、改善泛化能力和防止模型过度适应训练数据。随后,文章详细介绍了四种正则化方法:减少估计器数量(如使用`early_stopping_rounds`)、使用更简单的树(如调整`gamma`和`max_depth`)、采样(如设置`subsample`和`colsample`)以及收缩(如调节`learning_rate`, `lambda`和`alpha`)。
48 0
XGBoost中正则化的9个超参数
|
3月前
|
机器学习/深度学习
|
4月前
|
机器学习/深度学习
过拟合
【7月更文挑战第25天】过拟合。
103 2
|
3月前
|
机器学习/深度学习 存储 数据可视化
2.8.4 加入正则化项,避免模型过拟合
这篇文章详细探讨了在深度学习中避免模型过拟合的方法,包括加入正则化项和使用暂退法(Dropout),并介绍了如何通过可视化工具如Matplotlib和VisualDL来分析模型训练过程,以便更好地理解和优化模型性能。
|
5月前
|
机器学习/深度学习 算法
损失函数
【6月更文挑战第14天】损失函数。
43 2
|
机器学习/深度学习 自然语言处理
正则化
机器学习中的正则化(regularization)是一种常用的方法,用于防止模型过拟合(overfitting)。过拟合是指模型在训练集上表现很好,但在测试集或新数据上表现较差的情况。正则化通过在模型的目标函数中加入一个惩罚项(penalty term),来对模型的复杂度进行限制,从而避免模型在训练集上过于拟合。
80 0
|
机器学习/深度学习 Python
神经网络中的损失函数正则化和 Dropout 并手写代码实现
神经网络中的损失函数正则化和 Dropout 并手写代码实现
186 0
神经网络中的损失函数正则化和 Dropout 并手写代码实现
|
机器学习/深度学习 数据可视化 PyTorch
使用梯度下降训练线性模型
使用梯度下降训练线性模型
104 0
使用梯度下降训练线性模型
|
机器学习/深度学习 人工智能 算法
dropout 算法是如何防止过拟合的
dropout在训练的过程中,可以很好的防止过拟合,是因为它可以随机性的让一些神经元不处于激活状态。