机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet

L1正则化和L2正则化是机器学习中常用的两种正则化方法,用于防止模型过拟合。它们的区别主要体现在数学形式、作用机制和应用效果上。以下是详细对比:

1. 数学定义

  • L1正则化(也叫Lasso正则化):
    在损失函数中加入权重参数的绝对值之和,即 λ ∑ ∣ w i ∣ \lambda \sum |w_i| λwi
    公式:
    L o s s = L o s s 原始 + λ ∑ ∣ w i ∣ Loss = Loss_{原始} + \lambda \sum |w_i| Loss=Loss原始+λwi
    其中 w i w_i wi 是模型的权重参数, λ \lambda λ 是正则化强度的超参数。

  • L2正则化(也叫Ridge正则化):
    在损失函数中加入权重参数的平方和,即 λ ∑ w i 2 \lambda \sum w_i^2 λwi2
    公式:
    L o s s = L o s s 原始 + λ ∑ w i 2 Loss = Loss_{原始} + \lambda \sum w_i^2 Loss=Loss原始+λwi2

2. 几何解释

  • L1正则化
    在参数空间中,L1正则化对应一个菱形(或高维的绝对值约束)。优化时,损失函数的最优解倾向于落在菱形的顶点上,导致部分权重被精确地压缩到0,具有稀疏性。

  • L2正则化
    对应一个圆形(或高维球面约束)。优化时,权重倾向于均匀缩小,但不会精确到0,而是变得很小。

3. 作用效果

  • L1正则化

    • 倾向于产生稀疏解,即部分权重变为0。
    • 适合特征选择,因为它可以自动剔除不重要的特征。
  • L2正则化

    • 倾向于让所有权重变小但不为0,保持权重分布更平滑。
    • 更适合处理多重共线性(特征之间高度相关)的情况。

4. 计算复杂度

  • L1正则化
    由于绝对值函数不可导,优化时需要特殊的算法(如次梯度下降或坐标下降法),计算复杂度稍高。

  • L2正则化
    平方项是连续可导的,可以直接用梯度下降等方法优化,计算上更简单。

5. 应用场景

  • L1正则化

    • 当特征数量很多且你怀疑只有少部分特征重要时(如高维数据降维)。
    • 示例:Lasso回归。
  • L2正则化

    • 当所有特征都可能有贡献,但需要控制权重大小以避免过拟合时。
    • 示例:Ridge回归、神经网络中的权重衰减。

6. 组合使用

在实践中,L1和L2正则化可以结合使用,称为Elastic Net,公式为:
L o s s = L o s s 原始 + λ 1 ∑ ∣ w i ∣ + λ 2 ∑ w i 2 Loss = Loss_{原始} + \lambda_1 \sum |w_i| + \lambda_2 \sum w_i^2 Loss=Loss原始+λ1wi+λ2wi2
这种方法兼具L1的稀疏性和L2的平滑性。

总结

特性L1正则化L2正则化
惩罚项绝对值 w w w平方 w 2 w^2 w2
权重结果稀疏(部分为0)小但非0
几何形状菱形圆形
主要用途特征选择权重平滑、防止过拟合
计算难度稍高较低

简单来说,L1更像“选择性淘汰”,L2更像“整体削弱”。根据具体任务需求选择合适的正则化方法!


补充: L 21 n o r m L_{21}norm L21norm范数正则化与Elastic Net 的区别

Elastic Net和L21范数正则化是两种不同的正则化方法,它们的主要区别如下:

  • 原理不同
    • Elastic Net:结合了L1和L2正则化的特点,在损失函数中同时引入L1范数和L2范数作为正则化项,通过一个混合参数来平衡两者的贡献。其正则化项的表达式为(R(\boldsymbol{w})=\lambda_1|\boldsymbol{w}|_1+\lambda_2|\boldsymbol{w}|_2^2),其中(\boldsymbol{w})是模型的参数,(\lambda_1)和(\lambda_2)是正则化参数。
    • L21范数正则化:是对矩阵的每一行或每一列的L2范数进行求和,然后将其作为正则化项添加到损失函数中。对于一个矩阵(\boldsymbol{W}),其L21范数正则化项的表达式为(R(\boldsymbol{W})=\sum_{i}|\boldsymbol{w}_i|_2),其中(\boldsymbol{w}_i)表示矩阵(\boldsymbol{W})的第(i)行或第(i)列。
  • 应用场景不同
    • Elastic Net:常用于线性回归、逻辑回归等模型中,当数据存在多个相关特征时,它可以有效地选择出重要的特征,并对模型进行正则化,防止过拟合。
    • L21范数正则化:在一些需要对矩阵结构进行约束的场景中更为常用,如图像处理、信号处理等领域,它可以用于特征选择、矩阵分解等任务。
  • 效果不同
    • Elastic Net:由于同时包含L1和L2正则化的特性,它既能够实现特征的稀疏性,又能够对模型的参数进行平滑处理,使得模型具有较好的泛化能力。
    • L21范数正则化:主要作用是促进矩阵的行或列的稀疏性,使得一些行或列的元素趋近于零,从而实现特征选择或矩阵结构的简化。

Elastic Net和L21范数正则化在原理、应用场景和效果等方面都存在一定的区别,在实际应用中,需要根据具体的问题和数据特点选择合适的正则化方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt+opengl 播放yuv视频

一、实现效果 二、pro文件 Qt widgets opengl 三、主要代码 #include "glwidget.h"GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent) {connect(&m_timer, &QTimer::timeout, this,[&](){this->update();});m_timer.start(1000/33); }v…

Android开源库——RxJava和RxAndroid

RxJava和RxAndroid是什么? RxJava是基于JVM的响应式扩展,用于编写异步代码 RxAndroid是关于Android的RxJava绑定 RxJava和RxAndroid使用 依赖 implementation io.reactivex.rxjava3:rxjava:3.1.0 implementation io.reactivex.rxjava3:rxandroid:3.…

并发基础—三大问题:可见性、原子性、有序性

文章目录 可见性原子性有序性(指令重排)经典的指令重排案例:单例模式的双重检查锁volatile和synchronize都可以保证有序性并发压测工具Jcstress证明指令重排会在多线程下出现问题(了解)CPU缓存分为三个级别&#xff1a…

PyTorch 入门学习

目录 PyTorch 定义 核心作用 应用场景 Pytorch 基本语法 1. 张量的创建 2. 张量的类型转换 3. 张量数值计算 4. 张量运算函数 5. 张量索引操作 6. 张量形状操作 7. 张量拼接操作 8. 自动微分模块 9. 案例-线性回归案例 PyTorch 定义 PyTorch 是一个基于 Python 深…

Hive SQL 精进系列:REGEXP_REPLACE 函数的用法

目录 一、引言二、REGEXP_REPLACE 函数基础2.1 基本语法参数详解2.2 简单示例 三、REGEXP_REPLACE 函数的应用场景3.1 去除特殊字符3.2 统一字符串格式 四、REGEXP_REPLACE 与 REPLACE 函数的对比4.1 功能差异4.2 适用场景 五、REGEXP_REPLACE 与 REGEXP 函数的对比5.1 功能差异…

从0开始搭建微服务架构特别篇SpringCloud网关聚合knife4j

前言:总所周知项目开发接口测试需要knife4j,但是,微服务架构中微服务很多,模块地址很多,需要统一管理api测试,就需要聚合在网关统一调用,本章,就说明如何通过网关聚合使用knife4j。 …

Spring Cloud 中的服务注册与发现: Eureka详解

1. 背景 1.1 问题描述 我们如果通过 RestTamplate 进行远程调用时,URL 是写死的,例如: String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 当机器更换或者新增机器时,这个 URL 就需要相应地变…

网页制作15-Javascipt时间特效の记录网页停留时间

01效果图: 02运用: window.setTimeout()刷新function()函数document.forms():表单if条件语句window.alert()窗口警示 03、操作代码:…

【Rust基础】排序和分组

排序 简单排序 整数排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];list.sort(); //✔assert_eq!(list, vec![1, 2, 3, 4, 5]); }小数排序 #[test] fn test_sort(){let mut list vec![1, 5, 3, 2, 4];//❌ 不能直接使用sort,因为f32和f64未实现O…

C++ std::list超详细指南:基础实践(手搓list)

目录 一.核心特性 1.双向循环链表结构 2.头文件:#include 3.时间复杂度 4.内存特性 二.构造函数 三.list iterator的使用 1.学习list iterator之前我们要知道iterator的区分 ​编辑 2.begin()end() 3.rbegin()rend() 四.list关键接口 1.empty() 2. size…

996引擎 - 红点系统

996引擎 - 红点系统 总结NPC 红点(TXT红点)Lua 红点1. Red_Point.lua2. UI_Ex.lua参考资料以下内容是在三端 lua 环境下测试的 总结 红点系统分几个部分组成。 M2中设置变量推送。 配置红点表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填写 ids 列。 主界面挂载…

C语言——变量与常量

C语言中的变量与常量:简洁易懂的指南 在C语言编程中,变量和常量是最基本的概念之一。理解它们的区别和使用方法对于编写高效、可维护的代码至关重要。本文将详细介绍C语言中的变量和常量,并通过图表和代码示例帮助你更好地理解。 目录 什么…

PySide(PyQt),使用types.MethodType动态定义事件

以PySide(PyQt)的图片项为例,比如一个视窗的场景底图是一个QGraphicsPixmapItem,需要修改它的鼠标滚轮事件,以实现鼠标滚轮缩放显示的功能。为了达到这个目的,可以重新定义一个QGraphicsPixmapItem类,并重写它的wheelE…

K8S学习之基础三十一:k8s中RBAC 的核心概念

Kubernetes (k8s) 中的 RBAC(Role-Based Access Control,基于角色的访问控制)是一种用于管理用户和服务账户对集群资源访问权限的机制。RBAC 允许管理员通过定义角色(Role)和角色绑定(RoleBinding&#xff…

【eNSP实战】三层交换机使用ACL实现网络安全

拓图 要求: vlan1可以访问Internetvlan2和vlan3不能访问Internet和vlan1vlan2和vlan3之间可以互相访问PC配置如图所示,这里不展示 LSW1接口vlan配置 vlan batch 10 20 30 # interface Vlanif1ip address 192.168.40.2 255.255.255.0 # interface Vla…

软考系统架构师 — 1 考点分析

目录 1 考点总结 1 考点总结 章节 内容 真题考察 绪论 1. 绪论 不考 计算机相关知识 2. 计算机系统基础知识,新增计算机硬件、嵌入式、计算机语言、系统工程 对应计算机组成结构、操作系统、数据库、计算机网络、多媒体等知识点,整体分值在 10 …

在Eclipse 中使用 MyBatis 进行开发,通常需要以下步骤:

在Eclipse 中使用 MyBatis 进行开发,通常需要以下步骤: 1. 创建 Maven 项目 首先,在 Eclipse 中创建一个 Maven 项目。如果你还没有安装 Maven 插件,可以通过 Eclipse Marketplace 安装 Maven 插件。 打开 Eclipse,选…

错误记录: git 无法连接到github

错误记录: git 无法连接到github 今天, 新建了一个github仓库, 但从本地怎么都push不上去.并报错 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository e…

k8s 配置两个deployment主机级别互斥部署

在 Kubernetes 中,要实现两个 Deployment 的 Pod 在主机级别互斥部署,可以使用 podAntiAffinity 配置。通过设置 podAntiAffinity,可以确保两个 Deployment 的 Pod 不会被调度到同一节点上。 实现步骤 定义 Deployment: 为每个…

Unity中WolrdSpace下的UI展示在上层

一、问题描述 Unity 中 Canvas使用World Space布局的UI,想让它不被3d物体遮挡,始终显示在上层。 二、解决方案 使用shader解决 在 UI 的材质中禁用深度测试(ZTest),强制 UI 始终渲染在最上层。 Shader "Custo…