正则化L1,L2

一、正则化的本质:“给模型加约束,避免过拟合”

在机器学习中,模型过拟合的本质是参数过于复杂(比如权重w的值过大或过于 “极端”),导致模型 “记住” 了训练数据的噪声。

正则化的核心是在损失函数中加入 “惩罚项”,限制参数的复杂度,从而平衡 “拟合能力” 和 “泛化能力”。


二、L2 正则化(权重衰减,Ridge Regression)

1. 数学形式

在损失函数中加入参数的平方和

形式如下:

  • λ:正则化强度参数(λ越大,惩罚越强);
  • m:样本数量;
  • wj​:模型的权重参数(对偏置b一般不做正则化)。

2. 直观理解:“让权重尽可能小,模型更平滑”

L2 正则化会惩罚大的权重值迫使权重向 0 靠近(但不会完全为 0)。比如线性回归中,L2 正则化会让模型的 “曲线 / 直线” 更 “平滑”,避免因个别样本的噪声而剧烈波动。

举个例子:假设模型是预测房价,特征包括 “面积”“卧室数”“距离地铁站的距离” 等。

L2 正则化会让每个特征的权重都比较小,模型不会过度依赖某一个特征(比如不会因为 “卧室数” 的微小变化就大幅改变房价预测)。

3. 优化角度:“解的稳定性”

从优化理论看,L2 正则化相当于给参数空间加了一个“球面约束”(因为是球面)。在这种约束下,损失函数的最优解会更 “稳定”—— 即使训练数据有小的扰动,参数的变化也不会太大,从而提升泛化能力。

4. 适用场景

  • 数据维度高、样本量少,容易过拟合的场景(比如基因数据、文本特征);
  • 希望所有特征都对模型有 “温和” 贡献,不希望某几个特征主导预测的场景;
  • 后续需要解释模型(因为权重不会为 0,所有特征都有一定作用,便于分析)。

三、L1 正则化(Lasso Regression)

1. 数学形式

在损失函数中加入参数的绝对值和

形式如下:

(注意:L1 的正则项系数通常是λ​/m,和 L2 的λ​/2m形式略有不同,是为了优化时的数学便利)

2. 直观理解:“让不重要的特征权重直接为 0,实现特征选择”

L1 正则化的独特之处是会把很多不重要的特征的权重压缩到 0。

比如还是预测房价的例子,L1 正则化可能会直接让 “距离地铁站的距离” 这个特征的权重为 0,模型不再考虑它 —— 相当于自动完成了 “特征选择”,只保留最关键的特征。

3. 优化角度:“解的稀疏性”

从优化理论看,L1 正则化相当于给参数空间加了一个“立方体约束”(因为是立方体)。立方体的 “角点”(即某些wj​=0的点)更容易成为最优解,这就是 L1 能产生 “稀疏解”(很多权重为 0)的原因。

4. 适用场景

  • 特征维度极高,需要筛选出关键特征的场景(比如文本分类中,词汇表有几万个词,L1 能选出最有区分度的词);
  • 希望模型 “简洁高效”,只保留核心特征的场景;
  • 数据中存在大量冗余或无关特征的场景。


四、L1 vs L2:核心区别对比

维度L2 正则化(Ridge)L1 正则化(Lasso)
数学形式权重的平方和权重的绝对值和
对权重的影响权重缩小但不为 0权重可能被压缩为 0
优化后的解所有特征都有贡献(无稀疏性)仅关键特征有贡献(稀疏性)
适用场景需保留所有特征、防过拟合需筛选特征、简化模型
计算复杂度低(优化时可求导,计算稳定)高(绝对值不可导,需特殊优化方法如坐标轴下降)

五、扩展:弹性网络(Elastic Net)——L1+L2 的结合

为了结合 L1 和 L2 的优点,还可以使用弹性网络

其正则项是 L1 和 L2 的加权组合:

它既能像 L1 一样实现特征选择,又能像 L2 一样保证优化的稳定性,适合对稀疏性和泛化能力都有要求的场景。

### 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库实现L1和L2正则化的简单示例: ```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` 分别用于实现L1和L2正则化。通过调整 `alpha` 参数,可以控制正则化的强度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值