模型选择+过拟合+欠拟合

2023-11-18

模型选择

当我们训练模型时,我们只能访问数据中的小部分样本。 最大的公开图像数据集包含大约一百万张图像。 而在大部分时候,我们只能从数千或数万个数据样本中学习。

将模型在训练数据上拟合的比在潜在分布中更接近的现象称为过拟合(overfitting), 用于对抗过拟合的技术称为正则化(regularization)。 在前面的章节中,你可能在用Fashion-MNIST数据集做实验时已经观察到了这种过拟合现象。 在实验中调整模型架构或超参数时,你会发现: 如果有足够多的神经元、层数和训练迭代周期, 模型最终可以在训练集上达到完美的精度,此时测试集的准确性却下降了。

训练误差和泛化误差

训练误差(training error): 模型在训练数据集上计算得到的误差。
泛化误差(generalization error): 模型应用在同样从原始样本的分布中抽取的无限多数据样本时,模型误差的期望。

在实际中,对于泛化误差,我们只能通过将模型应用于一个独立的测试集来估计泛化误差, 该测试集由随机选取的、未曾在训练集中出现的数据样本构成。

一个简单的思维实验: 假设一个大学生正在努力准备期末考试。 一个勤奋的学生会努力做好练习,并利用往年的考试题目来测试自己的能力。 尽管如此,在过去的考试题目上取得好成绩并不能保证他会在真正考试时发挥出色。 例如,学生A可能试图通过死记硬背考题的答案来做准备。 他甚至可以完全记住过去考试的答案。 学生B可能会通过试图理解给出某些答案的原因来做准备。 在大多数情况下,后者会考得更好。

再例如考虑一个简单地使用查表法来回答问题的模型。 如果允许的输入集合是离散的并且相当小, 那么也许在查看许多训练样本后,该方法将执行得很好。 但当这个模型面对从未见过的例子时,它表现的可能比随机猜测好不到哪去。 这是因为输入空间太大了,远远不可能记住每一个可能的输入所对应的答案。 例如,考虑 28×28 的灰度图像。 如果每个像素可以取 256 个灰度值中的一个, 则有 256^784 个可能的图像。 这意味着指甲大小的低分辨率灰度图像的数量比宇宙中的原子要多得多。 即使我们可能遇到这样的数据,我们也不可能存储整个查找表。

统计学习理论

在我们目前已探讨、并将在之后继续探讨的监督学习情景中, 我们假设训练数据和测试数据都是从相同的分布中独立提取的。 这通常被称为独立同分布假设(i.i.d. assumption), 这意味着对数据进行采样的过程没有进行“记忆”。 换句话说,抽取的第2个样本和第3个样本的相关性, 并不比抽取的第2个样本和第200万个样本的相关性更强。

这很容易找出假设失效的情况。 如果我们根据从加州大学旧金山分校医学中心的患者数据训练死亡风险预测模型, 并将其应用于马萨诸塞州综合医院的患者数据,结果会怎么样? 这两个数据的分布可能不完全一样。 此外,抽样过程可能与时间有关。 比如当我们对微博的主题进行分类时, 新闻周期会使得正在讨论的话题产生时间依赖性,从而违反独立性假设。

有时候我们即使轻微违背独立同分布假设,模型仍将继续运行得非常好。 比如,我们有许多有用的工具已经应用于现实,如人脸识别、语音识别和语言翻译。 毕竟,几乎所有现实的应用都至少涉及到一些违背独立同分布假设的情况。

有些违背独立同分布假设的行为肯定会带来麻烦。 比如,我们试图只用来自大学生的人脸数据来训练一个人脸识别系统, 然后想要用它来监测疗养院中的老人。 这不太可能有效,因为大学生看起来往往与老年人有很大的不同。

模型复杂性

当我们有简单的模型和大量的数据时,我们期望泛化误差与训练误差相近。 当我们有更复杂的模型和更少的样本时,我们预计训练误差会下降,但泛化误差会增大。 模型复杂性由什么构成是一个复杂的问题。 一个模型是否能很好地泛化取决于很多因素。 例如,具有更多参数的模型可能被认为更复杂, 参数有更大取值范围的模型可能更为复杂。 通常对于神经网络,我们认为需要更多训练迭代的模型比较复杂, 而需要“早停”(early stopping)的模型(即较少训练迭代周期)就不那么复杂。

影响模型泛化的因素:
1.可调整参数的数量。当可调整参数的数量(有时称为自由度)很大时,模型往往更容易过拟合。
2.参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。
3.训练样本的数量。即使你的模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。

模型选择

在机器学习中,我们通常在评估几个候选模型后选择最终的模型。 这个过程叫做模型选择。 有时,需要进行比较的模型在本质上是完全不同的(比如,决策树与线性模型)。 又有时,我们需要比较不同的超参数设置下的同一类模型。

验证集

原则上,在我们确定所有的超参数之前,我们不希望用到测试集。 如果我们在模型选择过程中使用测试数据,可能会有过拟合测试数据的风险,因此,我们决不能依靠测试数据进行模型选择。 然而,我们也不能仅仅依靠训练数据来选择模型,因为我们无法估计训练数据的泛化误差。

在实际应用中,情况变得更加复杂。 虽然理想情况下我们只会使用测试数据一次, 以评估最好的模型或比较一些模型效果,但现实是测试数据很少在使用一次后被丢弃。 我们很少能有充足的数据来对每一轮实验采用全新测试集。

解决此问题的常见做法是将我们的数据分成三份, 除了训练和测试数据集之外,还增加一个验证数据集(validation dataset), 也叫验证集(validation set)。 但现实是验证数据和测试数据之间的边界模糊得令人担忧。 除非另有明确说明,否则在这本书的实验中, 我们实际上是在使用应该被正确地称为训练数据和验证数据的数据集, 并没有真正的测试数据集。 因此,书中每次实验报告的准确度都是验证集准确度,而不是测试集准确度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模型选择+过拟合+欠拟合 的相关文章

  • ref 在 React 中的使用方法和说明

    react标签中ref的写法在 React 中 ref 属性用于引用组件中的某个元素或组件实例 以便在需要时对其进行操作 ref 属性的应用场景很多 比如直接访问 DOM 节点 管理 focus 状态 嵌套子组件等等 下面 我们来详细了解一
  • 递归求逆序

    Description 输入多行文字 输出其逆序 Input 多个文字 Output 其逆序 Sample Input 1 abcd wdwe Sample Output 1 ewdw dcba Hint int main recursiv
  • Qt5自定义状态栏QStatusBar外观(背景)和状态栏基本用法(显示普通消息、临时消息、永久消息)

    本文主要总结Qt状态栏QSatatuBar用法 通过继承状态栏 自定义状态栏背景图形 以及状态栏三种基本用法 状态栏类QStatusBar主要有显示普通消息 显示定时消息 显示永久消息三种功能 三种都十分常用 下面先总结自定义状态栏外观用法
  • 【JavaScript】正则表达式 VS 正规式

    在看JS之前没有怎么接触过正则表达式 只是知道有这么个东西 而在软考学习的时候 在编译原理这块有一个正规式 当时只知道这两个东西不是一个概念 具体哪里不同不太清楚 现在正好学到这里了 在此对比总结一下 一 正规式 一种表示正规集的工具 正规

随机推荐

  • 飞马D2000 激光雷达LVX数据文件解析

    解析出来的结果如下图
  • LVGL V9.0基于VS2022仿真搭建(2)

    完整Demo lvgl lvgl drivers相关资料下载 链接 https pan baidu com s 1h3OKCIBQRX0Hn7KjZsynqg 提取码 sc2l 下载的lv drivers中的win32drv c及win32
  • 云链商城连锁门店新零售O20系统以零售商城

    云链商城连锁门店新零售O20系统以零售商城 门店收银 多渠道进销存 客户管理 互动营销 导购助手 多种奖励模式和数据分析等功能 赋能多品牌连锁门店实现线上线下商品 会员 场景的互联互通 助推企业快速实现营销 服务 效率转型升级 为实体零售企
  • Idea中Java项目修改项目名

    1 修改项目文件夹名称 下面是在Idea中改 也可以直接找到项目文件夹重命名 2 关闭项目 Idea会默认生成原项目名的文件夹 将其删除 3 导入重命名后的项目文件夹 4 导入成功后 在Idea中修改模块名称 大功告成 修改项目名总共有三处
  • 【Java】用do-while循环,实现猜数字。

    package TcmStudy day05 import java util Scanner public class DoWhileText01 public static void main String args Scanner i
  • git revert讲解

    git的工作流 工作区 即自己当前分支所修改的代码 git add xx 之前的 不包括 git add xx 和 git commit xxx 之后的 暂存区 已经 git add xxx 进去 且未 git commit xxx 的 本
  • Pandas基本数据对象及操作

    1 Series 创建Series import pandas as pd countries 中国 美国 澳大利亚 countries s pd Series countries print type countries s print
  • HTTP Connection 头(header)说明:keep-alive和closer的区别

    HTTP Connection 头 header 说明 keep alive和closer的区别 前言 在http请求时 我们一般会在request header 或 response header 中看到 Connection Keep
  • IntelliJ IDEA创建Spring Initializr项目!

    目录 1 创建项目 2 点击选择Spring Initializr创建项目 编辑 3 选择项目所需的依赖 4 进入项目后等待加载完成 注意 5 整个项目架构图 编辑 6 项目启动 1 创建项目 一共有两种打开方式 一 在项目里创建Modul
  • 我朋友月薪5w,跟他聊过之后,才知道差距在哪里!

    当我开始工作的时候 年薪50万对于我来说是一个遥不可及的幻想 我认为作为一名普通的软件测试工程师 月薪2w已经是天花板了 然而随着时间的推移和经验的积累 看到越来越多的同行拿到高薪时 我才意识到束缚我薪水的不是行业的天花板 而是我自身技术能
  • 跑pytorch报错: The NVIDIA driver on your system is too old

    今天运行pytorch代码发现报错 The NVIDIA driver on your system is too old found version 8000 Please update your GPU driver by downlo
  • 计算机网络基础应用课程标准,王建波《计算机网络基础》课程标准.doc

    文档介绍 设计者 王建波指导老师 蒋本立廖兴张光清设计时间 2013年7月适用专业 计算机网络专业 计算机应用专业 计算机网络基础 课程标准设计者 王建波指导老师 蒋本立廖兴张光清设计时间 2013年7月适用专业 计算机网络专业 计算机应用
  • 在Raspberry Pi上使用PySimpleGUI创建图表

    PySimpleGUI python库在本地GUI和Web界面具有相同代码的能力中脱颖而出 PySimpleGUI并非以图表包为重点 而是具有画布和图形元素 可让您创建实时条形图和实时趋势图 图形元素入门 图形元素可以具有不同的坐标方向 例
  • 用Dockerfile制作一个python环境案例,值得收藏

    Dockerfile文件 无后缀 FROM python 3 7 设置 python 环境变量 ENV PYTHONUNBUFFERED 1 创建 code 文件夹并将其设置为工作目录 RUN mkdir code WORKDIR code
  • 史上最完美的Android沉浸式状态导航栏攻略

    前言 最近我在小破站开发一款新App 叫高能链 我是一个完美主义者 所以不管对架构还是UI 我都是比较抠细节的 在状态栏和导航栏沉浸式这一块 我还是踩了挺多坑 费了挺多精力的 这次我将我踩坑 适配各机型总结出来的史上最完美的Android沉
  • 傻瓜电梯项目实现

    目录 文档介绍 package lift entity Elevator java Entity java Floor java package lift Pretreatment Pretreatment java package lif
  • Elasticsearch——document相关原理

    1 document数据路由原理 1 1 document路由到shard上是什么意思 一个index的数据会被分为多片 每片都在一个shard中 所以说 一个document 只能存在于一个shard中 当客户端创建document的时候
  • [计算机毕业设计]大数据疫情分析与可视化系统

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • mysql报错 -- (errno: 13 - Permission denied)

    重启服务器后 mysql没有自启动 手动启动的时候报错 后面经一番折腾后强行用root身份启动后又发现原有的数据库表都不见了 mysql 报错 ERROR 1018 HY000 Can t read dir of db translator
  • 模型选择+过拟合+欠拟合

    模型选择 当我们训练模型时 我们只能访问数据中的小部分样本 最大的公开图像数据集包含大约一百万张图像 而在大部分时候 我们只能从数千或数万个数据样本中学习 将模型在训练数据上拟合的比在潜在分布中更接近的现象称为过拟合 overfitting