L1正则化、L2正则化的多角度分析和概率角度的解释

本文详细比较了L1和L2正则化的数学形式、梯度更新特性,解释了它们为何分别对应拉普拉斯和高斯先验。通过最大后验概率,阐述了两者在机器学习中作为权重分布的体现。

L1正则化、L2正则化的公式如下

min ⁡ w L 1 ( w ) = min ⁡ w f ( w ) + λ n ∑ i = 1 n ∣ w i ∣ min ⁡ w L 2 ( w ) = min ⁡ w f ( w ) + λ 2 n ∑ i = 1 n w i 2 \min_wL_1(w)=\min_w f(w)+\frac{\lambda}{n}\sum_{i=1}^n|w_i|\\ \min_wL_2(w)=\min_wf(w)+\frac{\lambda}{2n}\sum_{i=1}^nw_i^2 wminL1(w)=wminf(w)+nλi=1nwiwminL2(w)=wminf(w)+2nλi=1nwi2

从优化问题的视角来看

min ⁡ x L ( w ) < = > min ⁡ w f ( w ) s . t . ∑ i = 1 n ∣ w i ∣ < C \min_xL(w)<=> \min_w f(w)\\ s.t. \sum_{i=1}^n|w_i|<C xminL(w)<=>wminf(w)s.t.i=1nwi<C

L1正则的限制条件,在坐标轴上显示则是一个正方形,与坐标轴的交点分别是(0,C),(C,0),(0,-C),(-C,0)

L2正则的限制条件,在坐标轴上显示则是一个圆,与坐标轴的交点分别是(0,C),(C,0),(0,-C),(-C,0)

在这里插入图片描述

从梯度视角来看

∂ L 1 ( w ) ∂ w i = ∂ f ( w ) ∂ w i + λ n s i g n ( w i ) w i ′ = w i − η ∂ L 1 ( w ) ∂ w i w i ′ = w i − η ∂ f ( w ) ∂ w i − η λ n s i g n ( w i ) \frac{\partial L_1(w)}{\partial w_i}=\frac{\partial f(w)}{\partial w_i}+\frac{\lambda}{n}sign(w_i)\\ w_i^{'}=w_i - \eta \frac{\partial L_1(w)}{\partial w_i}\\ w_i^{'}=w_i - \eta \frac{\partial f(w)}{\partial w_i} - \eta \frac{\lambda}{n}sign(w_i) wiL1(w)=wif(w)+nλsign(wi)wi=wiηwiL

### L1正则化与L2正则化的定义及区别 #### 1. 定义 L1正则化L2正则化是机器学习中常用的两种正则化方法,用于防止模型过拟合。 - **L1正则化**:也称为Lasso Regression,其定义为权值向量 \( w \) 中各个元素的绝对值之[^3]。数学表达式为: \[ R(w) = \sum_{i=1}^{n} |w_i| \] 这种正则化方式倾向于生成稀疏解,即将某些特征的权重置为0[^2]。 - **L2正则化**:也称为Ridge Regression,其定义为权值向量 \( w \) 中各个元素的平方的开方值[^4]。数学表达式为: \[ R(w) = \frac{1}{2} \sum_{i=1}^{n} w_i^2 \] 这种正则化方式倾向于将权重值平均分散在各个特征上,避免某个权重过大[^2]。 #### 2. 区别 L1正则化L2正则化的主要区别体现在以下几个方面: - **稀疏性**:L1正则化倾向于生成稀疏解,即通过将部分特征的权重置为0来实现特征选择[^2]。而L2正则化不会将权重置为0,而是让所有权重都接近于0。 - **优化问题**:从几何角度来看,L1正则化对应的约束区域是一个多边形(如二维空间中的菱形),最优解更可能出现在坐标轴上,导致某些权重为0。而L2正则化对应的约束区域是一个圆形(或高维球体),最优解更可能分布在非坐标轴位置,因此不会产生稀疏解[^3]。 - **对异常值的敏感性**:L1正则化对异常值噪声具有一定的鲁棒性,因为它通过绝对值惩罚权重,减少了异常值对模型的影响[^2]。而L2正则化由于使用平方项惩罚权重,对异常值更为敏感。 - **适用场景**:L1正则化适用于特征之间存在关联的情况,能够自动进行特征选择[^3]。L2正则化则适用于需要利用所有特征但避免过拟合的场景。 #### 3. Python实现示例 以下是L1正则化L2正则化在Python中的简单实现: ```python from sklearn.linear_model import Lasso, Ridge import numpy as np # 数据准备 X = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([7, 8, 9]) # L1正则化(Lasso) lasso = Lasso(alpha=0.1) lasso.fit(X, y) print("L1正则化系数:", lasso.coef_) # L2正则化(Ridge) ridge = Ridge(alpha=0.1) ridge.fit(X, y) print("L2正则化系数:", ridge.coef_) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值