AI模型训练【偏差/方差】与【欠拟合/过拟合】

在我们拿到一个数据集,高高兴兴准备训练一个模型时,会遇到欠拟合或过拟合的问题,业内也喜欢用偏差和方差这两指标去定义它们,那这些词什么意思呢?有什么方法能避免/解决 欠拟合和过拟合呢?
这其实是非常非常基础的概念,但是其实即使是业内人士很难一下子把它们完全讲明白,并列出全面的解决方法,本文为你最通俗地解答。

目录

  • 欠拟合(Underfit)& 过拟合 (Overfit)
  • 偏差(bias)& 方差(variance)
  • 避免欠拟合/过拟合的技术!
    • 欠拟合
    • 过拟合

欠拟合(Underfit)& 过拟合 (Overfit)

先解释一下模型欠拟合和过拟合。假设大家已经知道训练集,验证集,测试集这个概念,不清楚的童鞋可以去康康我之前的博客哦 《无废话的机器学习笔记》

下面两个图(来自吴恩达机器学习课的PPT)解释得其实很清楚。
欠拟合:模型在训练集上没有得到足够好的拟合
过拟合:模型在训练集上得到过分好的拟合。
过分好有什么坏处呢,就比如训练集数据里都是白天的熊猫,模型把白天也作为特征学习了(对训练数据中的每个小细节都进行了学习,包括噪声和异常值),那么给一张黑夜的熊猫图,模型判断这不是熊猫。所以模型在训练集上表现完美,一到测试集就拉胯。(训练集上猛如虎,测试集上很离谱)

下面图的最靠右情况就是过拟合,这时模型往往变得非常复杂(有高次项,如x三次方和四次方)

在这里插入图片描述
 
在这里插入图片描述
 

偏差(bias)& 方差(variance)

偏差和方差数学里就是描述数据的特征嘛,大家觉得这有什么需要解释的,但机器学习里面,我们不是要求出一堆数据的偏差和方差,而是把它们当作一种指标来衡量模型的性能。
很多教程一上来给出这个图来理解偏差/方差,很直观,但其实这图很容易迷惑初学者,比如这里面的蓝点,到底是模型基于训练集还是验证集的预测,还是都有?如果都有,右下角那个图,落在红心附近的蓝点如果是基于训练集,那么这个模型应该是low bias。如果都是训练集,那么是及说明不了方差的,因为方差是衡量模型在不同集的表现波动,所以有点乱,我自己当时也是理解得模模糊糊。也可能是我理解有误,欢迎大家留言指教。
在这里插入图片描述
 
我个人理解它们在机器学习里的含义应该是这样:

偏差:训练集/验证集数据(模型预测)与红心(真实结果)的差距。重点在模型对训练集的损失函数。
(偏差衡量模型的预测结果与真实结果之间的差距,即模型的准确性。高偏差意味着模型的预测结果通常偏离正确值)

方差:模型对训练集与测试集的性能差别。重点在模型对训练集和测试集的损失函数之间的差别。若训练集和测试集的损失函数都很大,也叫低方差。
总的来说,方差衡量模型对于给定数据的小波动的敏感度,即模型在训练集和验证集上的表现波动。

 
下面这图将 欠拟合/过拟合 与 偏差/方差 的关系解释得完美。

在这里插入图片描述

λ是正则化项,它越大模型越被限制,变得越简单。后面会解释。总得来说,
欠拟合时,高偏差,低方差,模型较简单。(因为模型对于训练集和验证集误差都很大,所以低方差;如果模型在训练集上已经偏差很大,在验证集上更加离谱,偏差更大,那么这时可以说模型是高方差,不过这种情况极少发生。)
过拟合时,低偏差,高方差,模型较复杂。
理想的模型应该在偏差和方差之间找到良好的平衡。这就是所谓的偏差-方差权衡(Bias-Variance Tradeoff),追求偏差和方差都比较低!

下面这图解释得也不错,靠左边就是模型较简单时,模型对于训练集和验证集误差都很大,所以低方差;靠右边就是模型较复杂时,低偏差,高方差。
 
在这里插入图片描述

 

避免欠拟合/过拟合的技术!

欠拟合

  1. 增加模型复杂度
  2. 改进数据质量(增加数据量,数据清洗)
  3. 特征选择(选择更有代表性和信息量的特征)
  4. 增加训练时间
  5. 减少正则化(减小λ)
  6. 集成学习(结合多个模型的预测来提高整体的性能)

过拟合

  1. 减少模型复杂度
  2. 数据增强(Data Augmentation),对训练数据进行变换,如旋转、缩放、裁剪或颜色变化,白天和黑夜的熊猫图都要有,以增加数据多样性。
  3. 减少输入的特征(人为去除一些冗余的特征)
  4. 正则化!(误差函数中加入权重的L1或L2范数)(L1/L2正则可以去康康这篇 正则)
  5. 批量归一化(Batch Normalization):对每一层的输入进行归一化处理,稳定训练过程。(减少输入间变化对模型产生的影响,让每个隐藏层输出值均值与方差稳定在0和1,后面层的训练会更加稳定)(不过这招对缓解过拟合来说作用比较轻微)
  6. 提前停止(Early Stopping):如上面那图,在中间就停止,就完美,继续训练,方差会变大。
  7. 集成学习:结合多个模型的预测结果,如通过投票或平均,可以降低过拟合风险
  8. Dropout(在训练过程中随机丢弃一部分神经元,防止模型过于依赖训练数据中的特定样本)(Dropout可以理解为将集成学习效果通过一个网络模拟地实现,测试时神经元输出乘以删除比例,达到平均/集成的效果)其实Dropout也算正则化的一招,这里分开来讲。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【测试基础】构造测试数据之 MySQL 篇

构造测试数据之 MySQL 篇 作为一名测试工程师,我们经常会构造测试数据进行一些功能验证。为了暴露更多的问题,在测试数据的构造上,我们应该尽可能的构造不同类型的字段数据,且一张表的字段最好不低于 10 10 10 个。 对于 MySQL …

UDP信号多个电脑的信息传输测试、配置指南

最近要做一个东西,关于一个软件上得到的信号,如何通过连接的局域网,将数据传输出去。我没做过相关的东西,但是我想应该和软件连接数据库的过程大致是差不多的,就一个ip和一个端口号啥的。 一.问题思路 多个设备同时连…

自动化测试系列 之 Python单元测试框架unittest

一、概述 什么是单元测试 单元测试是一种软件测试方法,是测试最小的可测试单元,通常是一个函数或一个方法。 在软件开发过程中,单元测试作为一项重要的测试方法被广泛应用。 为什么需要单元测试 单元测试是软件开发中重要的一环&#xf…

微服务系列之分布式事务理论

概述 事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。 分类 大多数情况下,分类是没有意义的一件事。但是分类可以一定程度上,加深理解。 实现 从实现角度来看&#xff0…

c语言函数篇——递归函数

递归函数的工作原理 递归函数的工作原理基于两个主要部分:基本情况和递归情况。基本情况是函数不再调用自身的条件,当达到基本情况时,递归停止并返回结果。递归情况是函数调用自身的部分,它将问题分解为更小的、相似的子问题。 …

【Matlab】基于遗传算法优化BP神经网络 (GA-BP)的数据时序预测

资源下载: https://download.csdn.net/download/vvoennvv/88682033 一,概述 基于遗传算法优化BP神经网络 (GA-BP) 的数据时序预测是一种常用的机器学习方法,用于预测时间序列数据的趋势和未来值。 在使用这种方法之前,需要将时间序…

微信小程序开发系列-07组件

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…

【FileZilla】的基本使用

一、FileZilla的使用 1.1 FileZilla简介 1.2 软件下载 到官方网站下载 FileZilla 的服务端和客户端程序 FileZilla - The free FTP solution 自行下载即可 1.3 软件安装 (1)先安装服务端【傻瓜式安装】,一直下一步下一步安装即可 &#xf…

uniapp中组件库的丰富NumberBox 步进器的用法

目录 基本使用 #步长设置 #限制输入范围 #限制只能输入整数 #禁用 #固定小数位数 #异步变更 #自定义颜色和大小 #自定义 slot API #Props #Events #Slots 基本使用 通过v-model绑定value初始值,此值是双向绑定的,无需在回调中将返回的数值重…

【linux】head的用法 输出文件开头的内容

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

SpringMVC源码解析——DispatcherServlet初始化

在Spring中,ContextLoaderListener只是辅助功能,用于创建WebApplicationContext类型的实例,而真正的逻辑实现其实是在DispatcherServlet中进行的,DispatcherServlet是实现Servlet接口的实现类。Servlet是一个JAVA编写的程序&#…

STM32——F407定时器概述

1 定时器分类 定时器类型数量位号位宽时钟捕获/比较输出DMA请求计数互补输出基本2TIM6,TIM716bitAPB1-有递增-通用2TIM2,TIM532bitAPB14通道有递增、递减、中心对齐-通用2TIM3,TIM432bitAPB14通道有递增、递减、中心对齐-通用1TIM916bitAPB14通道有递增-通用2TIM10、TIM1116bi…

图像分割实战-系列教程3:unet医学细胞分割实战1(医学数据集、图像分割、语义分割、unet网络、代码逐行解读)

🍁🍁🍁图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 上篇内容: Unet系列算法 下篇内容: unet医学细胞分割实战2 1、医学细胞数据…

STM32——通用计时器

通用计时器框图 1.时钟源 1)内部时钟(CK_INT) 2)外部时钟模式 1:外部输入引脚(TIx),x1,2(即只能来自于通道 1 或者通道 2) 3)外部时钟模式 2:外部触发输入(ETR) 4&#…

androidStudio 没有新建flutter工程的入口?

装了flutter dart 插件 执行了 flutter doctor 也执行了 flutter doctor --android-license 最后重启了 androidStudio 还是没发现在哪新建flutter项目工程 原来 plugins 下的 Android APK Support没有勾选

[C#]C# winform实现imagecaption图像生成描述图文描述生成

介绍: 地址:C#https://github.com/ruotianluo/ImageCaptioning.pytorch 效果: 测试环境: vs2019 onnxruntime1.16.3 opencvsharp4.8 代码: using System; using System.Collections.Generic; using System.Comp…

win11出现安全中心空白和IT管理员已限制对某些区域的访问(不一样的解决方式),真实的个人经历,并且解决经过

1、个人的产生问题的经历 2023年12月22日,由于我买了一块电脑的固态硬盘1T,想要扩容,原来电脑自带512G(由于个人是一个程序员,导致512G实在太古鸡肋)装好以后,想要重装一下系统,来个大清理。结果不出意料&…

二叉树BFS

前置知识 二叉树节点的定义 二叉树是递归定义的 /*** Definition for a binary tree node.(LeetCode)*/public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode…

自然语言处理2——轻松入门情感分析 - Python实战指南

目录 写在开头1.了解情感分析的概念及其在实际应用中的重要性1.1 情感分析的核心概念1.1.1 情感极性1.1.2 词汇和上下文1.1.3 情感强度1.2 实际应用中的重要性 2. 使用情感分析库进行简单的情感分析2.1 TextBlob库的基本使用和优势2.1.1 安装TextBlob库2.1.2 文本情感分析示例2…

小程序面试题 | 17.精选小程序面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…