机器学习_正则化、欠拟合和过拟合

news2024/11/14 20:07:56

文章目录

  • 正则化
  • 欠拟合和过拟合
  • 正则化参数


正则化

机器学习中的正则化是在损失函数里面加惩罚项,增加建模的模糊性,从而把捕捉到的趋势从局部细微趋势,调整到整体大概趋势。虽然一定程度上地放宽了建模要求,但是能有效防止过拟合的问题,增加模型准确性。它影响的是模型的权重。

normalization 和 standardization :标准化、规范化,以及归一化,是调整数据,特征缩放;
regularization:而正则化,是调整模型,约束权重。

欠拟合和过拟合

正则化技术所要解决的过拟合问题,连同欠拟合(underfit)一起,都是机器学习模型调优(找最佳模型)、参数调试(找模型中的最佳参数)过程中的主要阻碍。

下面用图来描述欠拟合和过拟合。这是针对一个回归问题的3个机器学习模型,如下图所示。
在这里插入图片描述
发现上图第1个简单的函数模型不如复杂一点的模型拟合效果好,所以调整模型之后,有可能会得到更小的均方误差(上图第2个)。如果继续追求更完美的效果,甚至接近于0的损失,可能会得到类似于上图第3个函数图形。

不能主要看训练集上的损失,更重要的是看测试集上的损失。让我们画出机器学习模型优化过程中的误差图像,如下图所示。
在这里插入图片描述
看得出来,一开始模型“很烂”的时候,训练集和测试集的误差都很大,这是欠拟合。随着模型的优化,训练集和测试集的误差都有所下降,其中训练集的误差值要比测试集的低。这很好理解,因为函数是根据训练集拟合的,泛化到测试集之后表现会稍弱一点。但是,如果此处继续增加模型对训练集的拟合程度,会发现测试集的误差将逐渐升高。这个过程就被称作过拟合

模型的复杂度可以代表迭代次数的增加(内部参数的优化),也可以代表模型的优化(特征数量的增多、函数复杂度的提高,比如从线性函数到二次、多次函数,或者说决策树的深度增加,等等)。

所以,过拟合就是机器学习的模型过于依附于训练集的特征,因而模型泛化能力降低的体现。泛化能力,就是模型从训练集移植到其他数据集仍然能够成功预测的能力。

分类问题也会出现过拟合,如下图所示,过于细致的分类边界也造成了过拟合。
在这里插入图片描述

过拟合现象是机器学习过程中怎么甩都甩不掉的阴影,影响着模型的泛化功能,因此我们几乎在每一次机器学习实战中都要和它作战!

刚才用逻辑回归模型进行心脏病预测的时候,我们也遇见了过拟合问题。那么,有什么方法解决吗?
降低过拟合现象通常有以下几种方法。

  • 增加数据集的数据个数。数据量太小时,非常容易过拟合,因为小数据集很容易精确拟合。
  • 找到模型优化时的平衡点,比如,选择迭代次数,或者选择相对简单的模型。
  • 正则化。为可能出现过拟合现象的模型增加正则项,通过降低模型在训练集上的精度来提高其泛化能力,这是非常重要的机器学习思想之一。

正则化参数

机器学习中的正则化通过引入模型参数λ(lambda)来实现。

加入了正则化参数之后的线性回归均方误差损失函数公式被更新成下面这样:
在这里插入图片描述

加入了正则化参数之后的逻辑回归均方误差损失函数公式被更新成下面这样:
在这里插入图片描述

现在的训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度;另一个是正则化项,用于调解模型的复杂度。

从直观上不难看出,将正则化机制引入损失函数之后,当权重大的时候,损失被加大,λ值越大,惩罚越大。这个公式引导着机器在进行拟合的时候不会随便增加权重。

正则化的目的是帮助我们减少过拟合的现象,而它的本质是约束(限制)要优化的参数。
正则化的本质,就是崇尚简单化。同时以最小化损失和复杂度为目标,这称为结构风险最小化

选择λ值的目标是在简单化和训练集数据拟合之间达到适当的平衡。

  • 如果λ值过大,则模型会非常简单,将面临数据欠拟合的风险。此时模型无法从训练数据中获得足够的信息来做出有用的预测。而且λ值越大,机器收敛越慢。
  • 如果λ值过小,则模型会比较复杂,将面临数据过拟合的风险。此时模型由于获得了过多训练数据特点方面的信息而无法泛化到新数据。
  • 将λ设为0可彻底取消正则化。在这种情况下,训练的唯一目的是最小化损失,此时过拟合的风险较高。

正则化参数通常有L1正则化和L2正则化两种选择。

  • L1正则化,根据权重的绝对值的总和来惩罚权重。在依赖稀疏特征(后面会讲什么是稀疏特征)的模型中,L1正则化有助于使不相关或几乎不相关的特征的权重正好为0,从而将这些特征从模型中移除。
  • L2正则化,根据权重的平方和来惩罚权重。L2正则化有助于使离群值(具有较大正值或较小负值)的权重接近于0,但又不会正好为0。在线性模型中,L2正则化比较常用,而且在任何情况下都能够起到增强泛化能力的目的。

刚才给出的正则化公式实际上是L2正则化,因为权重w正则化时做了平方。

正则化不仅可以应用于逻辑回归模型,也可以应用于线性回归和其他机器学习模型,应用L1正则化的回归又叫 Lasso Regression(套索回归),应用L2正则化的回归又叫Ridge Regression(岭回归)。

而最佳λ值则取决于具体数据集,需要手动或自动进行调整。


学习机器学习的参考资料:
(1)书籍
利用Python进行数据分析
西瓜书
百面机器学习
机器学习实战
阿里云天池大赛赛题解析(机器学习篇)
白话机器学习中的数学
零基础学机器学习
图解机器学习算法

(2)机构
光环大数据
开课吧
极客时间
七月在线
深度之眼
贪心学院
拉勾教育
博学谷

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

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

相关文章

【GitHub项目推荐--一个语音机器人项目】【转载】

推荐一个腾讯大佬开源的语音对话机器人:wukong-robot ,悟空机器人在 GitHub 上斩获 3.2K 的 Star。 这是一个简单灵活的中文语音对话机器人项目,目的是让中国的开发者也能快速打造个性化的智能音箱,同时,该项目还是第…

科技云报道:金融大模型落地,还需跨越几重山?

科技云报道原创。 时至今日,大模型的狂欢盛宴仍在持续,而金融行业得益于数据密集且有强劲的数字化基础,从一众场景中脱颖而出。 越来越多的公司开始布局金融行业大模型,无论是乐信、奇富科技、度小满、蚂蚁这样的金融科技公司&a…

【XR806开发板试用】系列之一 - Linux环境下Ubuntu完全开发流程

前言 为了让极术社区开发者体验搭载安谋科技STAR-MC1处理器的面向IoT领域的全志XR806开发板,极术社区联合全志在线开发者社区共同推出XR806开发板免费试用活动。 极术社区特准备了200块XR806开发板作为2022年社区新年活动,申请的人数有600多&#xff0c…

���恒峰|配网行波型故障预警定位装置:电力系统的守护神

���在电力系统中,设备的正常运行对于保障供电至关重要。而配网行波型故障预警定位装置就是电力系统的守护神,它能够实时监测设备状态,提前发现故障,确保电力供应的稳定。本文将详细介绍配网行波…

【前端可视化】postcss-px-to-viewport 适配怎么限制最大宽度?使用 postcss-mobile-forever

需求原因 自己用 nuxt3 写官网发现用 postcss-px-to-viewport 这个插件虽然能够实现基于 vw 的响应式,但是无法做到限制宽度,比如设计稿 1920p,我只想让最大缩放比例为 1920p,不能超过,就无法实现了。 方案参考 纯 c…

记一次低级且重大的Presto运维事故

本文纯属虚构,旨在提醒各位别犯类似低级错误。 如有雷同,说的就是你! 文章目录 前言事件回顾后续总结 前言 首先,要重视运维工作和离职人员的交接工作,这个不必多说。一将无能,累死三军! 接下来…

Xilinx MicroBlaze 告警提示解决方案

告警: [BD 41-2559] AXI interface port /M02_AXI_0 is not associated to any clock port. It may not work correctly. Please update ASSOCIATED_BUSIF parameter of a clock port to include this interface port in an external clock port. If no external cl…

Java 设计者模式以及与Spring关系(五) 策略和观察者模式

目录 简介: 23设计者模式以及重点模式 策略模式(Strategy Pattern) 示例 spring中应用 观察者模式(Observer) 示例 spring中应用 简介: 本文是个系列一次会出两个设计者模式作用,如果有关联就三个,…

一键去除图片背景——background-removal-js

一些JavaScript库和工具可以帮助实现背景去除: OpenCV.js:OpenCV的JavaScript版本,提供了许多计算机视觉功能,包括背景去除。Jimp:一个用于处理图像的JavaScript库,提供了许多图像处理功能,包括…

Vue.js 3 项目开发:迈向现代化前端开发的必经之路

文章目录 一、Vue.js 3简介二、Vue.js 3新特性1. Composition API2. 更好的性能3. 更好的TypeScript支持4. 更多的生命周期钩子5. 更好的自定义指令API 三、Vue.js 3项目开发实践1. 搭建开发环境2. 项目结构规划3. 组件开发4. 路由管理5. 状态管理6. 测试与部署 《Vue.js 3企业…

VSCode Python Windows环境下创建虚拟环境,隔离每个项目的依赖pip包,推荐使用!

VSCode Python Windows环境下创建虚拟环境 Visual Studio Code 可以隔离不同项目的pip依赖包,防止不同版本的干扰**(推荐使用)** 先在python官网https://www.python.org/downloads/下载需要的python版本(我选择了3.9.8&#xff09…

基于springboot+vue新能源汽车充电管理系统

摘要 新能源汽车充电管理系统是基于Spring Boot和Vue.js技术栈构建的一款先进而高效的系统,旨在满足不断增长的新能源汽车市场对充电服务的需求。该系统通过整合前后端技术,实现了用户注册、充电桩管理、充电订单管理等核心功能,为用户提供便…

centos 7 增加临时路由及永久路由

centos 7 增加临时路由及永久路由 如果增加临时路由,要先安装net-tools , sudo yum install net-tools route add -net 10.1.0.0 gw 10.1.1.1 netmask 255.255.0.0 意思是增加了一条动态路由,网关10.1.1.1 ,10.1.x.x 的所有ip都走这个网关 此种方式&am…

Wireshark的捕获接口设置

通过Wireshark菜单栏的“捕获”-“选项”和工具栏的“捕获选项”按钮,可以进入接口捕获接口的设置。 打开捕获接口设置界面,首先设置“Input”标签。 进行接口选择,关掉不必要的接口。 选择使用接口模式,选择“混杂模式”&#x…

proxy 代理的接口报错301问题

项目系统里仅仅这个接口报错,反向代理错误导致。 默认情况下,不接受运行在HTTPS上,且使用了无效证书的后端服务器。如果你想要接受,修改配置:secure: false(简单意思:如果本地没有进行过https相…

PaddleNLP 如何打包成Windows环境可执行的exe?

当我们使用paddleNLP完成业务开发后,需要将PaddleNLP打包成在Windows操作系统上可执行的exe程序。操作流程: 1.环境准备: python环境:3.7.4 2.安装Pyinstaller pip install pyinstaller 3.目录结构,main.py为可执…

Jmeter 设置全局请求 重点cook

原因 在使用jmeter 过程中为了方便 ,会设置很多公众信心 比如请求头 请求cook 还会设置多个线程组 在同一个线程组中 我们只需要设置一个请求请求cook 就可以了 但是 有逆骨 就是喜欢多个线程组所以出现问题了 解决方案 设置一个全局变量 步骤 在测试计划中设…

正点原子RV1126编译环境搭建+rkmedia编译

备注: 1)如果想成功编译rkmedia可执行程序,必须一步不差的这么操作。 1.编译环境搭建 1.1设置ubuntu 1)右上角 设置->系统设置->软件和更新->下载自(“选择阿里云”) 2)提交之后…

LabVIEW电路板插件焊点自动检测系统

LabVIEW电路板插件焊点自动检测系统 介绍了电路板插件焊点的自动检测装置设计。项目的核心是使用LabVIEW软件,开发出一个能够自动检测电路板上桥接、虚焊、漏焊和多锡等焊点缺陷的系统。 系统包括成像单元、机械传动单元和软件处理单元。首先,利用工业相…

《WebKit 技术内幕》之十一(2):多媒体

2 视频 2.1 HTML5视频 在HTML5规范定义中,Web开发者可以使用“video”元素来播放视频资源。视频中有个重要的问题就是视频编码格式,对此,目前标准中包含了三种编码格式,它们分别是Ogg、MPEG4和WebM。其中Ogg是由Xiph.org组织开…