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

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:那些被忽视却超实用的视频剪辑工具

如果想要了解视频剪辑的工具&#xff0c;那一定听说过pr视频剪辑吧。如果你是新手其实我更推荐你从简单的视频剪辑工具入手&#xff0c;这次我就介绍一些简单好操作的视频剪辑工具来入门吧。 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]); } 知识点二 开始录制 参数一&#xff1a;设备名 传空使用默认设备 参数二&#xff1a;超过录…...

NLP--自然语言处理学习-day1

一.初步认识NLP 自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是计算机科学和人工智能&#xff08;AI&#xff09;的一个交叉领域&#xff0c;旨在使计算机能够理解、分析、生成和处理人类语言的能力。它结合了计算语言学、人工智能、机器学习和语言…...

ER论文阅读-Incomplete Multimodality-Diffused Emotion Recognition

基本介绍&#xff1a;NeurIPS, 2024, CCF-A 原文链接&#xff1a;https://proceedings.neurips.cc/paper_files/paper/2023/file/372cb7805eaccb2b7eed641271a30eec-Paper-Conference.pdf Abstract 人类多模态情感识别&#xff08;MER&#xff09;旨在通过多种异质模态&#x…...

Matlab自学笔记36:日期时间型的概念、分类和创建方法

1.概念 日期时间型&#xff08;Dates and Time&#xff09;数据具有灵活的显示格式和高达毫微秒的精度&#xff0c;并且可以处理时区、夏令时和平闰年等特殊因素 2.日期时间型数据有以下三种表示方式 &#xff08;1&#xff09;Datetime型&#xff0c;表示日期时间点&#x…...

Spring Boot自定义配置项

Spring Boot自定义配置项 配置文件 在application.properties文件添加需要的配置 比如&#xff1a; file.pathD:\\flies\\springboot\\ConfigurationProperties 注解 使用注解ConfigurationProperties将配置项和实体Bean关联起来&#xff0c;实现配置项和实体类字段的关联&…...

【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略

文章目录 C类与对象前言读者须知RVO 与 NRVO 的启用条件如何确认优化是否启用&#xff1f; 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 内置的同步机制&#xff0c;使用起来比较简单且常用于如下场景&#xff1a; 1、简单的同步逻辑&#xff1a;当你的同步逻辑非常简单&#xff0c;比如只需…...

[ffmpeg]音频格式转换

本文主要梳理 ffmpeg 中的音频格式转换。由于采集的音频数据和编码器支持的音频格式可能不一样&#xff0c;所以经常需要进行格式转换。 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 中的集合&#xff08;set&#xff09;是一种数据类型&#xff0c;用于存储唯一元素的无序集合。集合支持多种运算&#xff0c;如并集、交集、差集和对称差集&#xff0c;方便执行数学上的集合操作。 1. 创建集合 可以使用大括号 {} 或者 set() 函数创建集合&#xff1…...

『功能项目』按钮的打开关闭功能【73】

本章项目成果展示 我们打开上一篇72QFrameWork制作背包界面UGUI的项目&#xff0c; 本章要做的事情是制作打开背包与修改器的打开关闭按钮 首先打开UGUICanvas复制button按钮 重命名为ReviseBtn 修改脚本&#xff1a;UIManager.cs 将修改器UI在UGUICanvas预制体中设置为隐藏 运…...

Linux 常用命令 - more 【分页显示文件内容】

简介 more 命令源自英文单词 more, 表示 “更多”&#xff0c;它是一个基于文本的程序&#xff0c;用于查看文本文件的内容。该命令会逐页显示文件内容&#xff0c;允许用户按页浏览大型文本文件。当用户完成当前页的阅读后&#xff0c;可以通过按键&#xff08;空格键或回车键…...

Kotlin Android 环境搭建

Kotlin Android 环境搭建 1. 引言 Kotlin 已成为 Android 开发的官方语言之一,因其简洁、表达性强和易于维护的特点而受到广大开发者的喜爱。在本教程中,我们将详细介绍如何在您的计算机上搭建 Kotlin Android 开发环境。 2. 系统要求 在开始搭建 Kotlin Android 开发环境…...

常见协议及其默认使用的端口号

在网络通信中&#xff0c;端口号用于标识特定的应用程序或服务。IANA&#xff08;Internet Assigned Numbers Authority&#xff09;负责分配和管理这些端口号。端口号分为三个范围&#xff1a; 熟知端口&#xff08;Well-Known Ports&#xff09;&#xff1a;0到1023&#xf…...

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查…...

数字化转型中的供应链管理优化

在当今全球化和数字化的浪潮下&#xff0c;企业供应链管理面临着前所未有的挑战和机遇&#xff0c;企业在数字化转型过程中&#xff0c;如何优化供应链管理成为提升竞争力的关键。通过应用先进技术如RPA机器人流程自动化、大数据分析、物联网等&#xff0c;企业可以显著提高物流…...

【Python报错已解决】SyntaxError: invalid syntax

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...