ML 系列:机器学习和深度学习的深层次总结(08)—欠拟合、过拟合,正确拟合
ML 系列赛:第 9 天 — Under、Over 和 Good Fit
文章目录
- 一、说明
- 二、了解欠拟合、过拟合和实现正确的平衡
- 三、关于泛化
- 四、欠拟合
- 五、过拟合
- 六、适度拟合
- 七、结论
一、说明
在有监督学习过程中,对于指定数据集进行训练,训练结果存在欠拟合、过拟合的情况,这两个情况都对模型的泛化是不利的,本篇对监督学习的训练的泛化问题进行解释。
二、了解欠拟合、过拟合和实现正确的平衡
在监督式学习中,数据集由输入和输出组成,监督式学习算法学习如何以最佳方式将输入示例映射到输出示例。这个函数是一个数学函数,也叫映射函数,监督学习算法试图找到最合适的函数,换句话说,监督学习被称为函数的近似。在监督学习问题中,我们假设输入和输出数据之间存在未知函数或关系,监督机器学习算法试图近似这个函数。虽然我们假设存在这样的映射函数,但我们对此一无所知,这就是为什么我们称它为近似值。
将输入映射到输出的 True 函数(实际函数)是未知的,通常称为目标(或目标)函数,学习过程的目标是仅使用可用数据(训练数据)来近似目标函数。如果我们知道目标函数,就不需要近似监督机器学习算法。
在机器学习中,从训练数据中学习目标函数被描述为归纳学习。归纳是指从具体示例中学习一般概念,是机器学习旨在解决的问题。同时,在演绎学习中,我们正在寻找从一般规则中学习特定概念。
三、关于泛化
泛化是一种抽象形式,其中特定实例的共同特征被表述为一般概念。机器学习中的泛化是指将模型在学习过程中学到的概念转移到学习过程中没有见过的例子中,机器学习模型的目标是将从训练过程中学到的知识泛化到模型从未见过的数据中。泛化在许多情况下与知识的传递直接相关,要传递的知识通常被称为抽象。
图 1 显示了泛化的一般概念。

图 1.泛化的一般形式
图 1 意味着我们希望算法对单个树不敏感,而是学习上图所示的树的抽象概念。
四、欠拟合
欠拟合是指我们的模型非常简单且几乎没有复杂性,可以近似一个可以在数据上训练并产生合适结果的函数。换句话说,我们关于数据分布的假设是错误的,而且过于简单化。例如,我们的数据需要 4 次多项式函数,但我们选择的模型是 1 次的函数。这种情况也称为高偏置。这意味着我们的数据太难了,模型无法正确预测,即使是在训练期间已经看到的样本上也是如此。
欠拟合是一个在训练和测试过程中都表现不佳的模型,并且它不能很好地泛化到新数据上。可能的解决方案包括:
• 选择功能更强大的模型,具有更多参数
• 为学习算法选择更好的特征(特征工程)
• 减少模型限制 (例如,减少 “正则化” 约束)
五、过拟合
过拟合也称为模型对于我们打算训练模型的数据来说过于复杂的情况。换句话说,我们关于数据分布的假设是错误的,而且非常复杂。例如,我们的数据是线性的,而我们选择的模型是高阶多项式。这种情况也称为高方差,这意味着算法无法做出准确的预测。
当模型不仅在训练数据上表现良好,而且在很大程度上学习了训练数据中的细节和噪声(对训练数据过度泛化),但模型在测试数据(模型看不到的数据)上的泛化性能非常弱时,就会发生过拟合。
换句话说,训练数据中的噪声或随机波动被模型选择并作为概念学习,问题是这些概念损害了模型的泛化能力。
当模型与数据的复杂度之比非常高时,就会发生过拟合,在可能的解决方案中可以提到以下内容:
• 简化模型并选择参数较少的模型 (例如,线性模型而不是高阶多项式)。
• 减少训练数据中的特征数量
• 限制模型并向模型添加限制,例如“正则化”技术
• 收集更多训练数据
• 减少训练数据中的噪声(例如,消除数据错误和去除异常值)
六、适度拟合
理想情况下,我们希望在过拟合和欠拟合之间的合适点选择一个模型,并且当训练数据和测试数据的误差最小时,调用适当的模型。
为了获得正确的观点,您可以同时查看模型在训练和测试数据上的加班性能。随着时间的推移,随着算法学会减少训练数据上的模型误差,测试数据集上的误差也会减少。如果我们长时间训练模型,模型在训练数据集上的性能可能会继续下降(因为模型过度拟合训练数据,训练数据集中不相关的细节和噪声学习),同时,随着模型的泛化能力下降,测试集误差再次开始增加。最佳点是在测试数据集上的误差开始增长之前,此时模型在训练数据集和测试数据集上都具有良好的技能。图 2 显示了根据误差图的过拟合、欠拟合和良好拟合的概念,其中横轴是指模型的复杂程度,纵轴是指误差量。此外,黄线表示测试数据中的错误,蓝线表示模型在训练过程中的错误。

图 2.根据误差图进行过拟合、欠拟合和正确拟合
图 3 显示了训练后过拟合、欠拟合和正确拟合的概念,以及如何预测模型。

图 3.训练后的过拟合、欠拟合和良好拟合以及如何预测模型
七、结论
在第 9 部分中,我们讨论了与模式泛化相关的三个重要概念 Underfit、Overfit 和 Good-fit;。在第 10 部分:机器学习系列:第 10 天 — 偏差方差权衡中,我们将定义并讨论偏差-方差权衡,它描述了模型的复杂性、预测的准确性以及它对以前未用于训练模型的数据进行预测的能力之间的关系。
相关文章:
ML 系列:机器学习和深度学习的深层次总结(08)—欠拟合、过拟合,正确拟合
ML 系列赛:第 9 天 — Under、Over 和 Good Fit 文章目录 一、说明二、了解欠拟合、过拟合和实现正确的平衡三、关于泛化四、欠拟合五、过拟合六、适度拟合七、结论 一、说明 在有监督学习过程中,对于指定数据集进行训练,训练结果存在欠拟合…...
Unity-物理系统-刚体加力
一 刚体自带添加力的方法 给刚体加力的目标就是 让其有一个速度 朝向某一个方向移动 1.首先应该获取刚体组件 rigidBody this.GetComponent<Rigidbody>(); 2.添加力 //相对世界坐标 //世界坐标系 Z轴正方向加了一个里 //加力过后 对象是否停止…...
深入探究PR:那些被忽视却超实用的视频剪辑工具
如果想要了解视频剪辑的工具,那一定听说过pr视频剪辑吧。如果你是新手其实我更推荐你从简单的视频剪辑工具入手,这次我就介绍一些简单好操作的视频剪辑工具来入门吧。 1.福晰视频剪辑 连接直达>>https://www.pdf365.cn/foxit-clip/ 这款工具操…...
Unity-麦克风输入相关
private AudioClip clip; 知识点一 获取设备麦克风信息 string[] strs Microphone.devices; for (int i 0; i < strs.Length; i) { print(strs[i]); } 知识点二 开始录制 参数一:设备名 传空使用默认设备 参数二:超过录…...
NLP--自然语言处理学习-day1
一.初步认识NLP 自然语言处理(Natural Language Processing, NLP)是计算机科学和人工智能(AI)的一个交叉领域,旨在使计算机能够理解、分析、生成和处理人类语言的能力。它结合了计算语言学、人工智能、机器学习和语言…...
ER论文阅读-Incomplete Multimodality-Diffused Emotion Recognition
基本介绍:NeurIPS, 2024, CCF-A 原文链接:https://proceedings.neurips.cc/paper_files/paper/2023/file/372cb7805eaccb2b7eed641271a30eec-Paper-Conference.pdf Abstract 人类多模态情感识别(MER)旨在通过多种异质模态&#x…...
Matlab自学笔记36:日期时间型的概念、分类和创建方法
1.概念 日期时间型(Dates and Time)数据具有灵活的显示格式和高达毫微秒的精度,并且可以处理时区、夏令时和平闰年等特殊因素 2.日期时间型数据有以下三种表示方式 (1)Datetime型,表示日期时间点&#x…...
Spring Boot自定义配置项
Spring Boot自定义配置项 配置文件 在application.properties文件添加需要的配置 比如: file.pathD:\\flies\\springboot\\ConfigurationProperties 注解 使用注解ConfigurationProperties将配置项和实体Bean关联起来,实现配置项和实体类字段的关联&…...
【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
文章目录 C类与对象前言读者须知RVO 与 NRVO 的启用条件如何确认优化是否启用? 1. 按值传递与拷贝省略1.1 按值传递的概念1.2 示例代码1.3 按值传递的性能影响1.3.1 完全不优化 1.4 不同编译器下的优化表现1.4.1 Visual Studio 2019普通优化1.4.2 Visual Studio 202…...
什么时候用synchronized,什么时候用Reentrantlock
文章目录 使用 synchronized 的场景使用 ReentrantLock 的场景综合考虑 使用 synchronized 的场景 synchronized 是 Java 内置的同步机制,使用起来比较简单且常用于如下场景: 1、简单的同步逻辑:当你的同步逻辑非常简单,比如只需…...
[ffmpeg]音频格式转换
本文主要梳理 ffmpeg 中的音频格式转换。由于采集的音频数据和编码器支持的音频格式可能不一样,所以经常需要进行格式转换。 API 调用 常用 API struct SwrContext *swr_alloc(void); int swr_init(struct SwrContext *s); struct SwrContext *swr_alloc_set_opt…...
SSRF工具类-SsrfTool
为了帮助开发人员和安全研究人员检测和修复SSRF(Server-Side Request Forgery)漏洞,存在 多种工具。这里我将给出一个简单的工具类示例,这个工具类可以用来检查一个给定的URL是否可 能引发SSRF攻击。请注意,这个工具类主要用于教育目的,并不意味着它可以完全防止所有的…...
python集合运算介绍及示例代码
Python 中的集合(set)是一种数据类型,用于存储唯一元素的无序集合。集合支持多种运算,如并集、交集、差集和对称差集,方便执行数学上的集合操作。 1. 创建集合 可以使用大括号 {} 或者 set() 函数创建集合࿱…...
『功能项目』按钮的打开关闭功能【73】
本章项目成果展示 我们打开上一篇72QFrameWork制作背包界面UGUI的项目, 本章要做的事情是制作打开背包与修改器的打开关闭按钮 首先打开UGUICanvas复制button按钮 重命名为ReviseBtn 修改脚本:UIManager.cs 将修改器UI在UGUICanvas预制体中设置为隐藏 运…...
Linux 常用命令 - more 【分页显示文件内容】
简介 more 命令源自英文单词 more, 表示 “更多”,它是一个基于文本的程序,用于查看文本文件的内容。该命令会逐页显示文件内容,允许用户按页浏览大型文本文件。当用户完成当前页的阅读后,可以通过按键(空格键或回车键…...
Kotlin Android 环境搭建
Kotlin Android 环境搭建 1. 引言 Kotlin 已成为 Android 开发的官方语言之一,因其简洁、表达性强和易于维护的特点而受到广大开发者的喜爱。在本教程中,我们将详细介绍如何在您的计算机上搭建 Kotlin Android 开发环境。 2. 系统要求 在开始搭建 Kotlin Android 开发环境…...
常见协议及其默认使用的端口号
在网络通信中,端口号用于标识特定的应用程序或服务。IANA(Internet Assigned Numbers Authority)负责分配和管理这些端口号。端口号分为三个范围: 熟知端口(Well-Known Ports):0到1023…...
04-Docker常用命令
04-Docker常用命令 启动类命令 启动docker systemctl start docker停止docker systemctl stop docker重启docker systemctl restart docker查看docker状态 systemctl status docker开机启动docker systemctl enable docker帮助类命令 查看docker版本 docker version查…...
数字化转型中的供应链管理优化
在当今全球化和数字化的浪潮下,企业供应链管理面临着前所未有的挑战和机遇,企业在数字化转型过程中,如何优化供应链管理成为提升竞争力的关键。通过应用先进技术如RPA机器人流程自动化、大数据分析、物联网等,企业可以显著提高物流…...
【Python报错已解决】SyntaxError: invalid syntax
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
