L1正则化与L2正则化的区别

本文解析了正则化如何防止模型过拟合,通过引入L1和L2正则化,分别产生稀疏模型和平滑权重,有效降低复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

正则化的本质是在Cost Function中添加的p-范数。本文从正则化的本质p-范数入手,解释了L1正则化L2正则化的区别。

正则化

Cost Function上添加了正则化项,就能降低模型的过拟合程度,这就是正则化的作用。
关于正则化更细节的讲述,请参考为什么正则化能减少模型过拟合程度

正则化项的不同,就产生了L1正则化L2正则化L1正则化L2正则化的表达式,其实就是1-范数与2-范数

在这里插入图片描述

范数

正则化项的实质就是叠加到Cost Function中的范数。下面是p-范数的表达式:

在这里插入图片描述

在上图中(x,y)相同的情况下,随着p值的增加,p-范数的值趋向于更大,对较大权重的惩罚力度加大(就是说W大的,p-范数的值也更大,所以表现在Cost Function的值变小)。

L1正则化

下面是整个Cost Function的表达式,红色部分就是L1正则化的表达式。

在这里插入图片描述

L1正则化对所有参数的惩罚力度都一样,可以让一部分权重变为零,因此产生稀疏模型,能够去除某些特征(权重为0则等效于去除)。

L2正则化

下面是整个Cost Function的表达式,红色部分就是L2正则化的表达式。

在这里插入图片描述

L2正则化减少了权重的固定比例,使权重平滑。L2正则化不会使权重变为0(不会产生稀疏模型),所以选择了更多的特征。

区别

  • L1减少的是一个常量,L2减少的是权重的固定比例
  • L1使权重稀疏,L2使权重平滑
  • L1优点是能够获得sparse模型,对于large-scale的问题来说这一点很重要,因为可以减少存储空间
  • L2优点是实现简单,能够起到正则化的作用。缺点就是L1的优点:无法获得sparse模型

参考

### L1正则化L2正则化区别 在机器学习中,L1正则化(Lasso)L2正则化(Ridge)是两种常用的正则化技术,用于防止模型过拟合。它们通过不同的方式对模型参数进行约束,适用于不同的场景。 #### 1. L1正则化(Lasso) L1正则化通过在损失函数中添加一个权重绝对值成比例的惩罚项来实现正则化。其核心特点是能够生成稀疏的权重向量,即将某些特征的权重归零,从而实现特征选择。这种特性使得模型更具解释性可解释性,并且有助于减少特征维度,提高模型的计算效率[^1]。 - **特征选择**:L1正则化有助于选择对预测目标具有重要影响的特征,使得模型更具解释性可解释性[^2]。 - **稀疏性**:L1正则化倾向于生成稀疏权重向量,即将某些特征的权重归零。这有助于减少特征维度,提高模型的可解释性计算效率。 - **鲁棒性**:Lasso正则化对于异常值噪声具有一定的鲁棒性,可以减少其对模型的影响。 - **系数简化**:L1正则化可以导致模型的系数变得更加简单,易于解释理解[^2]。 L1正则化假设权重 $ w $ 的先验分布为拉普拉斯分布,由最大后验概率估计导出。这是因为拉普拉斯分布的尖锐峰在零点附近,使得某些权重趋近于零[^3]。 #### 2. L2正则化(Ridge) L2正则化通过在损失函数中添加一个权重平方成比例的惩罚项来实现正则化。其核心特点是将权重值平均分散在各个特征上,从而避免某个特征对模型的影响过大。 - **权重分布**:L2正则化倾向于将权重值平均分散在各个特征上,避免某个特征对模型的影响过大。 - **稳定性**:由于L2正则化对权重的惩罚是连续的,因此在权重变化时模型更加稳定。 - **抗多重共线性**:L2正则化可以有效处理特征之间的多重共线性问题,即当特征之间存在高度相关性时,L2正则化可以保持模型的稳定性。 L2正则化假设权重 $ w $ 的先验分布为高斯分布,由最大后验概率估计导出。这是因为高斯分布在零点附近较为平滑,使得权重不会过于集中[^3]。 #### 3. 适用场景 - **L1正则化适用场景**: - 当特征数量较多且存在大量不重要的特征时,L1正则化可以通过将这些特征的权重归零来实现特征选择。 - 当需要模型具有较高的可解释性时,L1正则化是一个更好的选择。 - **L2正则化适用场景**: - 当特征之间存在多重共线性问题时,L2正则化可以有效缓解这一问题。 - 当需要模型具有较高的稳定性时,L2正则化是一个更好的选择。 #### 4. 数学表达 L1正则化的损失函数通常表示为: $$ J(w) = \text{Loss}(w) + \lambda \sum_{i=1}^{n} |w_i| $$ 其中,$\lambda$ 是正则化参数,控制正则化的强度。 L2正则化的损失函数通常表示为: $$ J(w) = \text{Loss}(w) + \lambda \sum_{i=1}^{n} w_i^2 $$ 其中,$\lambda$ 同样是正则化参数,控制正则化的强度。 #### 5. 代码示例 以下是一个使用Scikit-learn库实现L1L2正则化的简单示例: ```python from sklearn.linear_model import Lasso, Ridge from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split # 生成随机数据集 X, y = make_regression(n_features=10, noise=0.1) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # L1正则化(Lasso) lasso = Lasso(alpha=0.1) lasso.fit(X_train, y_train) print("Lasso Coefficients:", lasso.coef_) # L2正则化(Ridge) ridge = Ridge(alpha=0.1) ridge.fit(X_train, y_train) print("Ridge Coefficients:", ridge.coef_) ``` 在这个示例中,`Lasso` `Ridge` 分别用于实现L1L2正则化。通过调整 `alpha` 参数,可以控制正则化的强度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值