L1正则化和L2正则化(从解空间角度)

article/2025/9/21 6:54:49

文章目录

  • 一、什么是过拟合?
  • 二、为什么模型会过拟合?
  • 三、如何防止模型过拟合?
  • 四、L1正则和L2正则
    • 4.1 L1、L2的区别
    • 4.2 为什么正则化能够防止过拟合?
    • 4.3 为什么L1正则具有稀疏性或者说L1正则能够进行特征选择?
  • 最后,放大招

一、什么是过拟合?

过拟合与欠拟合问题

过拟合(overfitting)——就是学习器把训练样本学得“太好了”,以至于对测试样本“不知所措”。更形象的说就是,考试之前把模拟卷翻来覆去做,模拟题倒是做得非常好,结果考试拉胯了~拐求

欠拟合(underfitting)则刚好相反——学习器"hold不住"训练样本(模拟卷都做得不好,还考个屁式~)


来几张图片~图片来源:百度图片
在这里插入图片描述

在这里插入图片描述

二、为什么模型会过拟合?

导致模型过拟合的情况有很多种原因,其中最为常见的情况是模型复杂度太高,导致模型学习到了训练数据的方方面面,学习到了一些细枝末节的规律。

即在统计模型中,由于使用的参数过多导致模型对训练数据过度拟合,以至于用该模型来预测其他测试样本的时候,预测输出与实际输出或者期望值相差很大的现象。

比如在下面的图片中,参数逐渐增多,模型也变得越复杂,导致模型泛化能力下降,在后期应用过程中很容易输出错误的预测结果。

在这里插入图片描述

三、如何防止模型过拟合?

呐,如何防止过拟合?

引用《百面机器学习》,降低“过拟合”的方法

(1)从数据入手,获得更多的样本数据。比如可以通过一定的规则来扩充训练数据

(2)降低模型复杂度。例如,在神经网络模型中减少网络层数、神经元个数等;在决策树模型中降低树的深度、进行剪枝等。
(3)减少数据维度;降噪

(4)L1正则化和L2正则化方法,给模型的参数加上一定的正则约束。

(5)集成学习方法。集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging方法。


上面的几种方法, L1正则化和L2正则化是比较常用降低过拟合的方法

可以把正则化理解为对模型参数的一种约束,或者说对损失函数的惩罚

我们知道

在机器学习中,模型误差 = 偏差 + 方差 + 不可避免的误差,而偏差和方差又是鱼和熊掌的关系,对模型中参数的惩罚力度越大,模型的复杂度越低,特征变化越简单,方差越小,即模型复杂度与模型方差呈正比关系。

==》解决过拟合的问题,也就是降低模型的方差

==》模型正则化是减小方差,从而减小模型的泛化误差,而不是训练误差
在这里插入图片描述

四、L1正则和L2正则

前面提到:当使用的参数过多,模型复杂度太高==》会导致模型对训练数据过度拟合

因此,比较直接的就是,减少一些参数,不就可以避免过拟合了吗?问题是,怎么样让参数个数减少呐?==> 让一些参数等于0

L1正则化,就是可以让一些参数变为0,减少参数个数,相当于一个特征选择的过程,即可理解为抛弃掉一些不重要的特征,来降低模型的复杂度。

这里,让一些参数变为0 == 》L1正则化具有稀疏性


4.1 L1、L2的区别

可以把正则化理解为对模型参数的一种约束,或者说对损失函数的惩罚

  • L1是模型各个参数的绝对值之和。
  • L2是模型各个参数的平方和的开方值。

在这里插入图片描述


比如,在线性回归中,使用L1正则化的模型叫做Lasso回归
在这里插入图片描述

使用L2正则化的模型叫做Ridge回归(岭回归)
在这里插入图片描述


4.2 为什么正则化能够防止过拟合?

假设,我们的损失函数为均方误差MSE
J = ∑ i = 1 n e i 2 n = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 = 1 n ∑ i = 1 n ( f ( x i , ω i ) − y ^ i ) 2 J=\frac{\sum_{i=1}^n{e_{i}^{2}}}{n}=\frac{1}{n}\sum_{i=1}^n{\left( y_i-\hat{y}_i \right) ^2}=\frac{1}{n}\sum_{i=1}^n{\left( f\left( x_i,\omega _i \right) -\hat{y}_i \right) ^2} J=ni=1nei2=n1i=1n(yiy^i)2=n1i=1n(f(xi,ωi)y^i)2

我们的目标是使损失函数最小化

任意一组参数组合 ω 1 , w 2 , ⋯ , ω n \omega _1,w_2,\cdots ,\omega _n ω1,w2,,ωn 都可以得到一个损失值,并且可能有多组参数的结果为同一个损失值

假设以二维为例: ω 1 , w 2 \omega _1,w_2 ω1,w2 J = ω 1 2 + ω 2 2 J=\omega _{1}^{2}+\omega _{2}^{2} J=ω12+ω22 的图形如下

有点像一个碗

在这里插入图片描述
从上往下看,可以得到损失函数的等高线,最中间的即为损失值最小,同一个圈,任意一点,损失是一样的
在这里插入图片描述
或者,可以结合这个图,就好理解了

在这里插入图片描述


正则化即在损失函数后加入惩罚,如 L1泛数 ∥ ω ∥ 1 \lVert \omega \rVert _1 ω1

L 1 = J + α ∥ ω ∥ 1 = J + α ∑ i = 1 n ∣ ω 1 ∣ L1=J+\alpha \lVert \omega \rVert _1=J+\alpha \sum_{i=1}^n{\left| \omega _1 \right|} L1=J+αω1=J+αi=1nω1

这种惩罚,也就是对参数进行了限制

二维为例,参数w被限制到一定的区域内,如下图

在这里插入图片描述

可以看成一个最优化问题

{ min ⁡ L = J s . t ∣ ω 1 ∣ + ∣ ω 2 ∣ + ⋯ + ∣ ω n ∣ ≤ m \left\{ \begin{array}{l} \min\text{\ }L=J\\ \\ s.t\ \left| \omega _1 \right|+\left| \omega _2 \right|+\cdots +\left| \omega _n \right|\le m\\ \end{array} \right. min L=Js.t ω1+ω2++ωnm
或者

{ min ⁡ L = J s . t ω 1 2 + ω 2 2 + ⋯ + ω n 2 ≤ m \left\{ \begin{array}{l} \min\text{\ }L=J\\ \\ s.t\ \omega _{1}^{2}+\omega _{2}^{2}+\cdots +\omega _{n}^{2}\le m\\ \end{array} \right. min L=Js.t ω12+ω22++ωn2m

不等式约束最优化问题==》KKT

KKT,假设最优化问题满足KKT条件,那么解空间必定满足一下这些公式
在这里插入图片描述
用到拉格朗日函数

在这里插入图片描述

因此,可以通过KKT公式,和拉格朗日求解法,求偏导得到未知数

4.3 为什么L1正则具有稀疏性或者说L1正则能够进行特征选择?

所谓稀疏性,说白了就是模型的很多参数是0

一般,数据特征数量很多,但是大部分特征可能对模型的预测都没有作用,甚至让模型变得很复杂,影响模型预测,

只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,即使去掉对模型也没有什么影响,此时我们就可以只关注系数是非零值的特征。

这相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力,降低过拟合的可能。


所以, 从解空间的形状角度来看

例子(二维)

目标损失函数为凸函数,其等高线如下,每一个圈相当于一个损失值,圈越小,损失值越小,也就是追求的损失函数最小化,最好就是得到最小圈的参数值(结合那个碗)

在这里插入图片描述

前面提到,二维的L1正则 ∣ ω 1 ∣ + ∣ ω 2 ∣ \left| \omega _1 \right|+\left| \omega _2 \right| ω1+ω2 或者L2正则 ω 1 2 + ω 2 2 \omega _{1}^{2}+\omega _{2}^{2} ω12+ω22 的图是这样

L1 ==》菱形
L2 ==》圆形

在这里插入图片描述

因为加入正则,不管是L1,还是L2,w1和w2的取值范围只能是这个圈圈内,或者边上

也就是参数被限制到这个区域内(本来是任意区域)

首先,来看一下不加正则的情况,使用梯度下降法去优化损失函数,随机选择一点,沿着梯度方向下降,得到一个近似的最优解M

在这里插入图片描述

接下来,加入正则

正则限制和损失最小分别代表两个优化问题,对原始的损失函数J添加了正则像之后,优化问题就变成了两个子优化问题的博弈。


二维情况下,L1正则的等高线因为是有棱有角的,所以更可能在顶点处与损失函数相交(概率更大),也有可能不在顶点,是在线上相切,或在其他位置,但是通常最优的参数值很大概率会出现在坐标轴上,这样就会导致某一维的权重为0 ,也就是使得其中一个参数w为0,比如这里第二种情况w2=0(相交点就是最优解),产生稀疏权重矩阵,这就是为什么L1正则化倾向于让模型得到一个稀疏解,即参数会有很多0。

(1)这是一种情况

只有一个交点,L1正则 在顶点上,L2正则 在切线上

两个相交点或相切点处既满足损失函数,又满足正则项的参数限制
在这里插入图片描述
(2)这是另外一种情况

可以看到,在顶点处的参数组合,是损失值最低的,可以得到最优的参数组合是顶点处。

然后,扩展到多个参数,那么这个图形就更加有棱有角,相交的点大概率是顶点,使得参数为0
在这里插入图片描述

(3)或者这种情况

引自:https://zhuanlan.zhihu.com/p/113373391
在这里插入图片描述
在这里插入图片描述


来看,L2正则

因为这里 L2正则 的参数取值空间是圆形,比较平滑,很难与损失函数的曲线相交在顶点上,但是它会使得w1和w2更接近与0,

最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。当最小化||w||时,就会使每一项趋近于0。

所以,L2正则化的解相对来说会平滑许多,L2正则化会选择更多的特征,这些特征都会比较接近于0。

在这里插入图片描述

最后,放大招

理解L1、L2正则化的正确姿势

看完,绝对能对 L1正则 和 L2正则 有更深刻的理解


http://chatgpt.dhexx.cn/article/7clJsHEy.shtml

相关文章

机器学习之L1正则化和L2正则化(附源码解析)

前言 今天还是机器学习的基础知识内容,也是最基础的哈。首先说一下什么是正则化,其实它就是一个减少方差的策略。那么什么是方差呢?在这里也引入一个和方差相辅相成的概念--偏差。 偏差度量了学习算法的期望预测与真实结果的偏离程度&#…

L2正则化(Regularization)

正则化(Regularization) 深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取…

pytorch实现L2和L1正则化regularization的方法

pytorch实现L2和L1正则化的方法 目录 目录 pytorch实现L2和L1正则化的方法 1.torch.optim优化器实现L2正则化 2. 如何判断正则化作用了模型? 2.1 未加入正则化loss和Accuracy 2.1 加入正则化loss和Accuracy 2.3 正则化说明 3.自定义正则化的方法 3.1 自定…

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

摘要 正则化的本质是在Cost Function中添加的p-范数。本文从正则化的本质p-范数入手,解释了L1正则化和L2正则化的区别。 正则化 在Cost Function上添加了正则化项,就能降低模型的过拟合程度,这就是正则化的作用。 关于正则化更细节的讲述&…

正则化的作用以及L1和L2正则化的区别

0 正则化的作用 正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。 常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些…

详解L1和L2正则化

大纲: L1和L2的区别以及范数相关知识对参数进行L1和L2正则化的作用与区别pytorch实现L1与L2正则化对特征进行L2正则化的作用 L1和L2的区别以及范数 使用机器学习方法解决实际问题时,我们通常要用L1或L2范数做正则化(regularization&#xf…

L1正则化和L2正则化的详细直观解释

正则化(Regularization) 转自:此处 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm和ℓ2ℓ2-norm,中文称作L1正则化和L2正则化,或者…

L1正则化和L2正则化讲解

L1正则化和L2正则化讲解 在机器学习实践过程中,训练模型的时候往往会出现过拟合现象,为了减小或者避免在训练中出现过拟合现象,通常在原始的损失函数之后附加上正则项,通常使用的正则项有两种:L1正则化和L2正则化。 L1…

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

文章目录 前言一、L1和L2正则化是什么?二、区别三、其他问题 前言 在防止过拟合的方法中有L1正则化和L2正则化,那么这两者有什么区别呢? 一、L1和L2正则化是什么? L1和L2是正则化项,又叫做惩罚项,是为了限…

数据预处理之L1,L2正则化

一、L1、L2正则化概述 1. L1和L2的定义 L1正则化,又叫Lasso Regression 如下图所示,L1是向量各元素的绝对值之和 L2正则化,又叫Ridge Regression 如下图所示,L2是向量各元素的平方和,然后再求平方根 2.L1和L2的异同点 …

L1正则化和L2正则化

在机器学习以及深度学习中我们经常会看到正则化这一名词,下面就浅谈一下什么是正则化?以及正则化的意义所在? 一、什么是正则化? 正则化项 (又称惩罚项),惩罚的是模型的参数,其值恒为非负 λ是正则化系数&…

【应用】【正则化】L1、L2正则化

L1正则化的作用:特征选择从可用的特征子集中选择有意义的特征,化简机器学习问题。著名的LASSO(Least Absolute Shrinkage and Selection Operator)模型将L1惩罚项和线性模型结合,使用最小二乘代价函数。L1正则化导致模…

机器学习中正则化项L1和L2的直观理解

文章目录 正则化(Regularization)稀疏模型与特征选择的关系 L1和L2正则化的直观理解正则化和特征选择的关系为什么梯度下降的等值线与正则化函数第一次交点是最优解? L2正则化和过拟合的关系 正则化参数的选择L1正则化参数L2正则化参数 Refer…

微信小程序自定义授权弹框

前言 最近微信获取用户信息的接口有调整&#xff0c;就是这货&#xff1a;wx.getUserInfo(OBJECT)&#xff0c;文档描述如下&#xff1a; 此接口有调整&#xff0c;使用该接口将不再出现授权弹窗&#xff0c;请使用 <button open-type"getUserInfo"></but…

微信小程序组件 - 中间底部弹出输入弹框

GitHub Demo 地址: jh-weapp-demo 实现一些常用效果、封装通用组件和工具类 小程序码 一、 jh-input-alert 中间输入弹框&#xff0c;可设置最大输入长度&#xff0c;单行多行显示 单行 <jh-input-alert title输入框标题 placeholder请输入 maxlength10 bind:cancelcancel …

微信小程序展示弹窗的几种方式

小程序中展示弹窗有四种方式&#xff1a;showToast、showModal、showLoading、showActionSheet 官方文档链接 效果图 wxml <!-- 1.消息提示框 --> <button size"mini" bindtap"handleShowToast">ShowToast</button><!-- 2.模态对话…

微信小程序——小程序自己的页面弹框

微信小程序——小程序自己的页面弹框 1. 页面样式: 2.代码块 在这里插入代码片 &#xff08;一&#xff09;.wxml文件中给一个触发事件 <image src"../../img/icon-delete.png" bindtapdeleteCar data-id{{car.platecard}} class"icon"></imag…

微信小程序底部弹出框

微信小程序的底部弹出框 wxml <!-- 弹出框 start --> <view class"dialog_screen" bindtap"hideModal" wx:if"{{showModalStatus}}"></view> <view animation"{{animationData}}" class"dialog_attr_bo…

【微信小程序】小程序中的各种弹窗API

前言&#xff1a;小程序中提供了很多种快捷方便的弹窗API供开发者使用&#xff0c;例如wx.showToast&#xff0c;wx.showModal&#xff0c;wx.showActionSheet&#xff0c;wx.showLoading还有wxml中的loading标签。 一、直接上代码 <!-- test.wxml --> <view class&q…

小程序带输入框的弹窗

老规矩&#xff0c;直接上代码 <block wx:if"{{isShowConfirm}}"><view classtoast-box><view classtoastbg></view><view classshowToast><view classtoast-title><text>确认支付</text></view><view cla…