L1和L2正则化原理及分析

正则化

是指在优化目标函数或代价函数是,在目标函数后面加上一个正则项。正则项通常有L1正则项和L2正则项。

1. L1正则 
L1正则是基于L1范数和项,即参数的绝对值和参数的积项,即: 

C=C0+λn∑w|w|C=C0+λn∑w|w|


其中C0代表原始的代价函数,n是样本的个数,λ就是正则项系数,权衡正则项与C0项的比重。后面那一项即为L1正则项。 
在计算梯度时,w的梯度变为: 

∂C∂w=∂C0∂w+λnsgn(w)∂C∂w=∂C0∂w+λnsgn(w)


其中,sgn是符号函数,那么便使用下式对参数进行更新: 

w:=w+α∂C0∂w+βλnsgn(w)w:=w+α∂C0∂w+βλnsgn(w)


对于有些模型,如线性回归中(L1正则线性回归即为Lasso回归),常数项b的更新方程不包括正则项,即: 

b:=b+α∂C0∂bb:=b+α∂C0∂b


其中,梯度下降算法中,α<0,β<0,而在梯度上升算法中则相反。

 

从上式可以看出,当w为正时,更新后w会变小;当w为负时,更新后w会变大;因此L1正则项是为了使得那些原先处于零(即|w|≈0)附近的参数w往零移动,使得部分参数为零,从而降低模型的复杂度(模型的复杂度由参数决定),从而防止过拟合&#

### L1 L2 正则化的数学原理 #### 定义与形式 在机器学习中,为了防止模型过拟合并提高泛化能力,在损失函数基础上加入正则化项是一种常见做法。具体来说: - **L1 正则化**通过向损失函数添加绝对值惩罚因子 \(\sum |w_i|\),其中 \(w_i\) 表示权重参数[^2]。 对应的优化目标变为最小化下述表达式: \[ J(w) = E_{in}(w)+\lambda \|w\|_1=\frac{1}{N}\sum_{i=1}^{N}[y(x_n)-f(x_n)]^2+\lambda\sum_{j}|w_j| \] - **L2 正则化**则是通过对所有权重平方求再乘以一个小常数 λ 实现,即 \(\sum w_i^2\) 形式的二次型约束[^4]。 这样一来,新的成本函数表示如下: \[ J(w)=E_{in}(w)+\lambda \|w\|^2_2=\frac{1}{N}\sum_{i=1}^{N}[y(x_n)-f(x_n)]^2+\lambda\sum_{j}w_j^2 \] #### 几何解释 从几何角度看,这两种正则化方式对应着不同形状的可行域边界。对于给定相同的误差表面(Ein),两者寻找最优解的方式有所不同: - 使用 L1 正则化时,由于其形成的决策面为菱形或多边形结构,这增加了坐标轴方向上的尖角处找到最佳解的可能性,因此更容易产生稀疏解——部分维度上的权值被压缩至零[^5]。 - 而采用 L2 正则化,则会形成圆形或椭球体状的限制空间;因为这些图形较为光滑且无明显棱角,所以最终获得的结果倾向于使各个分量都保持较小而非完全消失的状态。 #### 特征选择机制 基于上述差异,L1 正则化能够实现自动特征筛选的效果,即将不重要的变量对应的系数设为0,从而简化了原始输入数据集中的冗余信息[^3]。相比之下,尽管 L2 不具备同样的显式降维功能,但它依然有助于缓解多重共线性其他可能导致数值不稳定性的因素。 ```python import numpy as np from sklearn.linear_model import Lasso, Ridge # 创建模拟数据 X = np.random.rand(100, 5) y = X[:, 0]*2 + X[:, 1]*(-3) + np.random.randn(100) # 应用L1正则化(Lasso) lasso_reg = Lasso(alpha=0.1).fit(X, y) # 应用L2正则化(Ridge) ridge_reg = Ridge(alpha=1.0).fit(X, y) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值