当前位置: 首页 > news >正文

机器学习——L1 L2 范数 —>L1 L2正则化

1、L1范数和L2范数是机器学习和数据分析中经常使用的两种范数,它们之间存在多个方面的区别。

以下是关于L1范数和L2范数区别的详细解释:

一、定义差异

  • L1范数:也被称为曼哈顿范数,是向量元素的绝对值之和。对于一个n维向量x,其L1范数表示为:||x||₁ = |x₁| + |x₂| + ... + |xₙ|
  • L2范数:也被称为欧几里得范数,是向量元素的平方和的平方根。对于一个n维向量x,其L2范数表示为:||x||₂ = √(x₁² + x₂² + ... + xₙ²)。

二、几何特性

  • 在二维空间中,L1范数的单位球是一个菱形,而L2范数的单位球是一个圆。这种几何形状的差异反映了两种范数在向量空间中的不同约束方式。

三、稀疏性

  • L1范数:由于其性质,L1范数在某些优化问题中会导致解向量的稀疏性,即解的许多组件为零。这种特性使得L1范数常用于特征选择,因为它可以自动将不重要的特征系数置为零
  • L2范数:不具有稀疏性特点。L2范数倾向于选择更多的特征,但这些特征的系数都会接近于零,而不是完全为零。

四、对异常值的敏感度

  • L1范数:相对于L2范数,L1范数对异常值更具有鲁棒性。因为L1范数是通过绝对值求和来计算的,所以它对大数值的敏感度较低
  • L2范数:对异常值更敏感。由于L2范数计算了每个元素的平方,因此大数值的元素会对其产生更大的影响。

五、求解难度

  • L1范数:在某些情况下,L1范数的优化问题可能更难求解,尤其是在高维空间中。然而,L1范数的稀疏性特点使得它在某些特定问题(如特征选择)中具有优势。
  • L2范数:通常更容易求解,尤其是当使用像梯度下降这样的优化算法时。L2范数的平滑性使得其优化问题更加稳定。

六、在正则化中的应用

  • L1正则化:常用于Lasso回归中,可以导致特征选择,即让某些特征的系数变为零。这有助于降低模型的复杂度并提高模型的解释性
  • L2正则化:常用于Ridge回归中,可以防止过拟合,提升模型的泛化能力。L2正则化通过约束模型参数的平方和来限制模型的复杂度,使得模型的参数不会过大

2、正则化是一种防止机器学习模型过拟合的技术,常见的正则化方法包括L1正则化、L2正则化和dropout。

以下是它们的详细介绍:

L1 正则化(Lasso Regularization)

L1 正则化通过损失函数中加入权重绝对值的和来约束模型的复杂度,其公式为:

其中,λ 是正则化强度的超参数,wi​ 是模型的权重。

特点:

  • 能够产生稀疏权重矩阵,适合特征选择
  • 某些权重可能会变成零,从而将不重要的特征移除

L2 正则化(Ridge Regularization)

L2 正则化通过损失函数中加入权重平方和来约束模型的复杂度,其公式为:

特点:

  • 更倾向于使权重变小,但不会将权重变成零
  • 保持所有特征的影响,但减少过拟合

Dropout

Dropout 是一种在训练过程中随机忽略部分神经元的技术,以减少过拟合训练时每个神经元以一定的概率p被忽略(即设置为零),而在测试时所有神经元都被使用,但其输出按比例缩放,以反映训练时的忽略。

特点:

  • 强化模型的鲁棒性,因为模型不能依赖某个特定的神经元
  • 可以有效减少过拟合,尤其在深度神经网络中。

公式: 假设有一个隐藏层向量 h,dropout后的向量 h~ 可以表示为:

其中,r 是一个与 h 维度相同的向量,每个元素以概率 p 为 0,概率 1−p 为 1。

实施方法:

这种方法有效地减少了模型对某个特定神经元的依赖,从而提高了模型的泛化能力

比较和应用场景

  • L1 正则化 适用于希望得到稀疏模型(即少数重要特征,特征选择)的情况。
  • L2 正则化 适用于希望保持所有特征的贡献,同时避免权重过大,适用于大多数线性模型
  • Dropout 适用于深度神经网络,特别是在大规模数据集上的应用,可以显著减少过拟合

在实际应用中,常常会结合使用这些正则化方法,例如在神经网络中同时使用L2正则化和dropout。

http://www.lryc.cn/news/399853.html

相关文章:

  • 大模型时代,还需要跨端framework吗?
  • ASP.NET Core----基础学习05----将数据传递给视图文件的五种情况
  • Flutter实现局部刷新的几种方式
  • 力扣题解(回文子串)
  • 对数的基本概念
  • C双指针滑动窗口算法
  • WPF学习(6) -- WPF命令和通知
  • 升级到LVGL9的一些变化(后续发现再补充)
  • 当在多线程环境中使用 C++进行编程时,怎样确保线程安全以及如何处理线程之间的同步和通信?
  • 博物馆地图导航系统:高精度地图引擎与AR/VR融合,实现博物馆数字化转型
  • liunx作业笔记1
  • 大话C语言:第31篇 指针和数组的关系
  • Mysql-索引应用
  • Facebook 开源计算机视觉 (CV) 和 增强现实 (AR) 框架 Ocean
  • 【接口自动化_13课_接口自动化总结】
  • 安防管理平台LntonCVS视频汇聚融合云平台智慧火电厂安全生产管理应用方案
  • 【Web性能优化】在Vue项目中使用defer优化白屏,秒加载!
  • springboot上传图片
  • python入门:python及PyCharm安装
  • 链接追踪系列-04.linux服务器docker安装elk
  • 深入探讨微服务架构设计模式与常见实践
  • 【java】合并数组的两种方法
  • [图解]分析模式-01-概述1
  • 【网络安全】Oracle:SSRF获取元数据
  • Android Bitmap
  • 2024 年全国青少年信息素养大赛 Python 小学组复赛真题
  • C语言——流程控制:if...else、switch...case
  • 小白的OS Copilot 产品测评
  • 使用Scikit-Learn决策树:分类问题解决方案指南
  • E12.【C语言】练习:求两个数的最大公约数