L1正则化和L2正则化讲解

article/2025/9/21 7:53:26

L1正则化和L2正则化讲解

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

  L1正则化L2正则化都可以看做是损失函数的惩罚项,所谓惩罚项是指对损失函数中的一些参数进行限制,让参数在某一范围内进行取值。L1正则化的模型叫做LASSO回归,L2正则化的模型叫做岭回归

  • LASSO回归公式
    m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 1 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{1} min2m1Σi=1m(f(x)y(i))2+λw1

  • 岭回归公式
    m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{2}^{2} min2m1Σi=1m(f(x)y(i))2+λw22

L1正则化项和L2正则化项的说明如下:

  1. L1正则化项是指权重向量 w w w中各元素的绝对值之和,表示为 ∣ ∣ w ∣ ∣ 1 ||w||_{1} w1
  2. L2正则化项是指权重向量 w w w中个元素的平方和,表示为 ∣ ∣ w ∣ ∣ 2 2 ||w||_{2}^{2} w22

L1正则化和L2正则化的作用

   1. L1正则化用于进行稀疏化(会令权重向量w中某一些参数等于0)处理,通常用于在多特征中进行特征选择
   2. L2正则化用于避免模型发生过拟合现象,L1正则化也可用于避免过拟合

L1正则化的直观理解

  • L1正则化的损失函数

m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 1 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{1} min2m1Σi=1m(f(x)y(i))2+λw1

  在上述的公式中, 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 \frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2} 2m1Σi=1m(f(x)y(i))2是原始的损失函数,也称为经验误差,在此基础上,加入了L1正则项 λ ∣ ∣ w ∣ ∣ 1 \lambda||w||_{1} λw1,L1正则项是权重向量中各元素的绝对值之和,所造成的一个后果就是损失函数不是完全可微。模型训练的目的是令损失函数达到全局最小值,当在原始的损失函数之后加入L1正则项之后,相当于对权重向量做了约束,此时我们的任务变为了在L1约束条件下求得损失函数的最小值。由于高维的情况无法用图像形象的描述出来,我们这里考虑二维的情况,即只有两个权重值 w 1 w_{1} w1 w 2 w_{2} w2,此时对损失函数应用梯度下降法,求解过程中可以画出等值线,如下图所示:
在这里插入图片描述
  图中等值线是原始损失函数的等值线,黑色方形是L1正则化项的图形。在图中,当彩色等值线与黑色图形首次相交的地方就是最优解。上图中原始损失函数与L1在一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L函数有很多突出的顶点(二维情况下四个,多维情况下更多),彩色等值线与这些角接触的机率会远大于与黑色图形其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏效果,进而可以用于特征选择。
  正则化系数 λ \lambda λ可以控制黑色图形的大小, λ \lambda λ越大,黑色图形越小, λ \lambda λ越小,黑色图形越大。 λ \lambda λ越大,表示对权重向量的限制作用越强。

L2正则化的直观理解

  • L2正则化的损失函数
    m i n 1 2 m Σ i = 1 m ( f ( x ) − y ( i ) ) 2 + λ ∣ ∣ w ∣ ∣ 2 2 min\frac{1}{2m}\Sigma_{i=1}^{m}\left(f(x) - y^{(i)}\right)^{2}+\lambda||w||_{2}^{2} min2m1Σi=1m(f(x)y(i))2+λw22

  不管是L1正则化还是L2正则化,在拟合的过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型,因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,抗干扰能力强。

  考虑损失函数在二维的情况,即只有两个权重值 w 1 w_{1} w1 w 2 w_{2} w2,此时对损失函数应用梯度下降法,求解过程中可以画出等值线,如下图所示:
在这里插入图片描述
  二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此J0与L相交时使得w1或w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。


http://chatgpt.dhexx.cn/article/gcWDt8fv.shtml

相关文章

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…

微信小程序 自定义弹框组件

话不多说直接上代码 目录 1、wxml 2、js 3、wxss 4、json 5、效果展示&#xff08;具体内容可以自定义&#xff09; 1、wxml <!--pages/components/confirmBox/confirmBox.wxml--> <wxs src"../../../filter/urlFilter.wxs" module"filter"…

微信小程序——点击某个按钮实现下面弹窗的出现

效果图:(真的是图) wxml(代码里面有解释&#xff09; <button type"primary" bindtap"Popup">点我</button> <!--点击后灰色背景的设置--> <view wx:if"{{now_state}}" class"background" bindtap"hideM…

微信小程序实现底部向上弹框

本文转自 作者&#xff1a;smallzip 链接&#xff1a;https://www.jianshu.com/p/bd9a4f4b8e6a 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 效果 小程序自定义底部弹出modal框组件&#xff0c;仿照小程序sheet-action的效果&#xff0…

uniapp微信小程序的各种弹框提示(轻提示)

您直接复制粘贴即可使用不需要做特殊的处理。 如您满意请给莫成尘点个Fabulous 1&#xff1a; 纯文字提示框 uni.showToast({title: 只有文字弹窗,icon: none, //如果要纯文本&#xff0c;不要icon&#xff0c;将值设为noneduration: 2000 //持续时间为 2秒 }) 2&…

小程序实现弹出输入框

1.微信自带组件 样式&#xff1a; wxml <view class"close" bindtap"close">拒绝</view>js Page({//拒绝close(e) {wx.showModal({editable:true,//显示输入框placeholderText:输入拒绝原因,//显示输入框提示信息success: res > {if (re…

微信小程序提示弹窗大全

wx.showToast(OBJECT) 显示消息提示框 OBJECT参数说明&#xff1a; 示例代码&#xff1a; ? 1 2 3 4 5 wx.showToast({ title: 成功 , icon: success , duration: 2000 }) wx.hideToast() 隐藏消息提示框 ? 1 2 3 4 5 6 7 8 9 wx.showToast({ title: 加载中 , icon: lo…

微信小程序 四种弹窗方式

微信小程序弹窗 一、wx.showToast(Object object)二 、wx.showModal(Object object)三、wx.showLoading(Object object)四、wx.showActionSheet(Object object)五、官方文档 一、wx.showToast(Object object) 显示消息提示框 wx.showToast({title: 内容, //提示的内容duration…

微信小程序弹出框详解

[html] view plain copy <span style"font-family:Comic Sans MS;font-size:18px;color:#333333;"><view class"container" class"zn-uploadimg"> <button type"primary"bindtap"showok">消息提示…