L1、L2范数理解--Ridge以及Lasso回归


一:范数对比

L0范数: 指向量中非0的元素的个数。(L0范数很难优化求解)

L1范数: 指向量中各个元素绝对值之和

L2范数: 指向量各元素的平方和然后求平方根
在这里插入图片描述
注: L0范数,指向量中非零元素的个数。无穷范数,指向量中所有元素的最大绝对值。


二:范数作用

L1范数: 可以进行特征选择,即让特征的系数变为0.

L2范数: 可以防止过拟合,提升模型的泛化能力,有助于处理 condition number不好下的矩阵(数据变化很小矩阵求解后结果变化很大)(核心:L2对大数,对outlier离群点更敏感!)

下降速度:最小化权值参数L1比L2变化的快

模型空间的限制:L1会产生稀疏 L2不会。L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。


三:L0范数和L1范数之间的比较

L0范数: 指向量中非零元素的个数。
L1范数: 是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。现在我们来分析下这个价值一个亿的问题:
1.为什么L1范数会使权值稀疏?
      :任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。
2.既然L0可以实现稀疏,为什么不用L0,而要用L1呢?
      :一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。
3.总结
      :L1范数和L0范数可以实现稀疏,L1因具有比L0更好的优化求解特性而被广泛应用。
理解备注:
1.不可微的理解:
在w1/w2=0的地方因为是|w1|,所以其是不可导的。
解决方法:LARS、FIST、坐标轴下降法。
2.为什么要特征选择/稀疏:
在这里插入图片描述


四:L1范数和L2范数的比较

L1范数: 是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。
L2范数: 它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫“岭回归”(Ridge Regression),有人也叫它“权值衰减weight decay”。注意,其一般会在L2的范数基础上在平方!!!

注:L1范数的理解见前面,L2范数的理解如下
      L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0, 这里是有很大的区别的哦。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。
1.为什么越小的参数说明模型越简单?
我的理解是:限制了参数很小,实际上就限制了多项式某些分量的影响很小(看上面线性回归的模型的那个拟合的图),这样就相当于减少参数个数。这里可以想象只有两者参数w1、w2,对于y= w1x1+w2x2,如果w1和w2越小,当x1、x2发生变化的时候,y的值变化不是很大,所以比较平滑,模型也就越简单。
2.L2范数的好处
在这里插入图片描述
3.两者的差距
1)下降速度:
在这里插入图片描述
如上图:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。

2)模型空间的限制:
我们将模型空间限制在w的一个L1-ball 中。为了便于可视化,我们考虑两维的情况,在(w1, w2)平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:
在这里插入图片描述
     可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。
     相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。
     因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。


五:L1范数和L2范数之反向传播的理解

L1范数: 因为存在不可导的地方,其解决方法参见:LARS、FIST、坐标轴下降法
     LARS:https://blog.csdn.net/xbinworld/article/details/44284293
     FIST:https://www.cnblogs.com/louisanu/p/12045861.html
     坐标轴下降法:https://blog.csdn.net/qq_32742009/article/details/81735274
L2范数:
在这里插入图片描述


参考链接:
https://zhuanlan.zhihu.com/p/28023308

  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
L2正则化和L1正则化都是为了防止模型的过拟合,但是它们的实现方式不同。L2正则化(Ridge回归)通过在损失函数中添加L2范数的平方来惩罚模型的复杂度,而L1正则化(Lasso回归)则是通过在损失函数中添加L1范数来惩罚模型的复杂度。相比于L1正则化,L2正则化有以下好处: 1. L2正则化对异常值不敏感,而L1正则化对异常值非常敏感。这是因为L2正则化是平方项,而L1正则化是绝对值,所以L1正则化会将某些系数压缩到0,从而使得模型更加稀疏,而L2正则化则不会。 2. L2正则化可以解决特征之间相关的问题,而L1正则化不能。这是因为L2正则化是平方项,可以将权重分散到所有特征上,而L1正则化是绝对值,只能将权重分散到部分特征上。 下面是一个使用Ridge回归L2正则化的例子: ```python from sklearn.linear_model import Ridge from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 加载数据集 boston = load_boston() X, y = boston.data, boston.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练模型 ridge = Ridge(alpha=1.0) ridge.fit(X_train, y_train) # 预测并计算均方误差 y_pred = ridge.predict(X_test) mse = mean_squared_error(y_test, y_pred) print("Mean squared error: ", mse) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Studying_swz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值