机器学习-正则化技术

embedded/2024/12/22 23:43:59/

文章目录

  • 拟合
  • 正则化
  • 正则项
      • L1 正则化(Lasso)
      • L2 正则化(Ridge)
  • 多元线性回归的正则化回归形式
  • 代码

拟合

过拟合:参数(特征)过多(理解为考虑很多因素)或者说过多专注于原来的训练数据,导致模型过于复杂
欠拟合:参数太少,太不专注于原来的训练数据,导致模型过于简单

在这里插入图片描述

随着模型复杂度增加(可以认为与训练数据的拟合程度)训练误差越来越小,泛化误差(就是与测试数据的误差)先小后大

复杂度的低中高分别对应 欠拟合 拟合 过拟合

正则化

正则化的方法通常是在损失函数中添加一个正则化项,这个正则化项会根据模型参数的大小来惩罚模型的复杂度
在这里插入图片描述

正则项

在这里插入图片描述
L1 和 L2 正则化之所以会导致不同的权重效果,主要是由于它们对权重施加的惩罚方式不同(就是让权重变化的方式)

L1 正则化(Lasso)

L1 正则化在损失函数中加入了权重绝对值的和作为惩罚项。这意味着它会惩罚较大的权重值,并且对于较小的权重值也会产生显著的影响。因为它是基于绝对值的惩罚,所以当优化过程试图最小化整个损失函数时,它倾向于将一些权重直接缩小到零。这是因为:

  • 对于非常小的权重 ( w ),L1 惩罚 ( |w| ) 与 ( w ) 成线性关系,即使 ( w ) 接近于0,其导数仍然是一个非零常数。
  • 这导致了优化算法在更新这些权重时有持续的压力使其进一步趋近于0,最终可能达到完全为0的情况。
  • 一旦某个权重被设为0,由于L1惩罚不再对其产生影响(因为0的绝对值还是0),该权重就保持不变,相当于从模型中移除了相应的特征。

L2 正则化(Ridge)

另一方面,L2 正则化在损失函数中加入了权重平方和的惩罚项。这会产生以下效果:

  • 对于任何非零权重 ( w ),L2 惩罚 ( w^2 ) 总是正的,并且随着 ( w ) 的增大而迅速增加。
  • 但是,对于接近零的 ( w ),( w^2 ) 增长得非常缓慢,因此L2惩罚对这些小权重的影响相对较小。
  • 在优化过程中,L2 惩罚会对所有非零权重施加一个趋向于减小但不为零的压力,使得它们都变得比较小,但通常不会变成零。

简而言之,L1 正则化通过绝对值惩罚鼓励稀疏解(即许多权重为0),而L2 正则化通过平方惩罚鼓励所有权重的小值分布,而不是让它们变为零。这种差异来源于两者数学形式的不同以及它们如何影响梯度下降等优化算法的行为。

多元线性回归的正则化回归形式

在这里插入图片描述

代码

https://github.com/FULLK/AI_Study/blob/main/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E6%AD%A3%E5%88%99%E5%8C%96%E6%8A%80%E6%9C%AF/20newsgroups_logistic_regressuib.py


http://www.ppmy.cn/embedded/147932.html

相关文章

mysql的事务和存储引擎+备份

mysql的事务和存储引擎备份 一. mysql的事务1.1 mysgl支持事务四种隔离级别1.2 事务控制语句1.3 行锁和死锁1.3.1 行锁1.3.2 死锁1.3.3 如何避免死锁的发生 二. msyql的备份和还原以及日志管理2.1 数据库备份的分类2.2 备份策略2.2.1 物理冷备份(全量)2.…

RabbitMQ消息队列的笔记

Rabbit与Java相结合 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 在配置文件中编写关于rabbitmq的配置 rabbitmq:host: 192.168.190.132 /…

汇编语言下的移位指令和串传送指令

移位指令 SHL&#xff08;Shift Left Logical&#xff09;&#xff1a;逻辑左移。SHR&#xff08;Shift Right Logical&#xff09;&#xff1a;逻辑右移。SAL&#xff08;Shift Arithmetic Left&#xff09;&#xff1a;算术左移&#xff08;与SHL相同&#xff09;。SAR&…

Java重要面试名词整理(一):性能调优

文章目录 MySQL篇联合索引最左前缀法则索引下推并发事务处理带来的问题事务隔离级别Read Uncommitted&#xff08;读取未提交内容&#xff09;Read Committed&#xff08;读取提交内容 RC&#xff09;Repeatable Read&#xff08;可重读 RR&#xff09;Serializable&#xff08…

Onvif服务端开发

实现了Onvif服务端的设备搜索和RTSP流的功能。用 ONVIF Device Manager 测试工具可以成功搜索到设备和获取到RTSP流&#xff0c;有的路由器可能不支持239.255.255.250组播&#xff0c;我一开始用的电信的那种光猫路由器二合一的&#xff0c;一直搜不到设备&#xff0c;后面用So…

PyTorch实现的猫狗图像分类项

猫狗图像分类项目 这是一个使用PyTorch实现的猫狗图像分类项目。 项目结构 model.py: 定义了CNN模型结构train.py: 训练模型的脚本predict.py: 使用训练好的模型进行预测requirements.txt: 项目依赖 环境配置 创建虚拟环境&#xff08;推荐&#xff09; python -m venv v…

C# 6.0 连接elasticsearch数据库

在 C# 6.0 中连接 Elasticsearch 数据库,您可以使用官方的 Elasticsearch 客户端库 NEST。NEST 是一个高性能的 .NET 客户端,用于与 Elasticsearch 进行交互。以下是一个详细的步骤指南,帮助您在 C# 6.0 项目中连接和操作 Elasticsearch。 1. 安装 NEST 包 首先,您需要在您…

Fgui世界坐标转ui坐标的问题

在做玩家与3d物体交互的时候遇到一个问题&#xff0c;就是3d物体的世界坐标转换成Fgui的UI坐标&#xff0c;会有一点问题&#xff0c;在fgui的官方文档中是这么描述一个3d物体的世界坐标转换为fgui的ui坐标是这么描述的 这个应该是一个比较普遍的方案&#xff0c;在我的实际项目…