今天与朋友交流的时候,我竟然把验证集和测试集搞反了.....另外还有就是数据划分的问题,我也是忘了,所以再次复习一下....


问题一:什么是训练集、验证集、测试集以及它们的作用?

1、训练集

参与训练,模型从训练集中学习经验,从而不断减小训练误差。这个最容易理解,一般没什么疑惑。

2、验证集

不参与训练,用于在训练过程中检验模型的状态,收敛情况。验证集通常用于调整超参数,根据几组模型验证集上的表现决定哪组超参数拥有最好的性能。

同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说验证集表现稳定后,若继续训练,训练集表现还会继续上升,但是验证集会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也用来判断何时停止训练。

3、测试集

不参与训练,用于在训练结束后对模型进行测试,评估其泛化能力。在之前模型使用【验证集】确定了【超参数】,使用【训练集】调整了【可训练参数】,最后使用一个从没有见过的数据集来判断这个模型的好坏。 需要十分注意的是:测试集仅用于最终评价模型的好坏,在测试集上得到的指标可以用来和别人训练的模型做对比,或者用来向别人报告你的模型效果如何。切记千万不能根据模型在测试集上的指标调整模型超参数(这是验证集应该干的事情),这会导致模型对测试集过拟合,使得测试集失去其测试效果的客观性和准确性。

三者区别

为了方便理解,人们常常把这三种数据集类比成学生的课本、作业和期末考:

  • 训练集——课本,学生根据课本里的内容来学习知识
  • 验证集——作业,通过作业可以知道不同学生实时的学习情况、进步的速度快慢
  • 测试集——考试,考的题是平常都没有见过,考察学生举一反三的能力

验证集参与训练了吗?

训练集是拿来训练模型参数的,对于所有的训练集,训练一个epoch之后,我们会用验证集来测试一下模型在上面的性能,由于训练集和验证集的不可交性,所以在验证集上面的结果是有参考意义的。

但是重点是:

  1. 验证集并没有参与训练过程梯度下降过程的,狭义上来讲是没有参与模型的参数训练更新的。
  2. 但是广义上来讲,验证集存在的意义确实参与了一个“人工调参”的过程,我们根据每一个epoch训练之后模型在valid data上的表现来决定是否需要训练进行early stop,或者根据这个过程模型的性能变化来调整模型的超参数,如学习率,batchsize等等。
  3. 因此,我们也可以认为,验证集也参与了训练,但是并没有使得模型去overfit验证集

问题二:能不能只要训练集和测试集,不要验证集呢?

在机器学习中,开发模型时人们总需要手动调节模型的参数,比如改变权重、选择层数或每层的大小,这个调节过程需要在训练的模型上通过验证集数据的表现来提供一个反馈信号(例如验证集上的损失大小、生成的图像质量如何),去修改网络模型及参数。

因为如果你只看训练集上的信息(例如验证集上的损失大小、生成的图像质量如何),可能效果很好了(因为模型可以“看得到”训练集的数据,然后一直根据训练集更新参数,然后过拟合),此时你将一个模型从来没有见过的数据“验证集”丢给模型,然后看模型在验证集上的表现,就可以在一定程度上知道模型的泛化能力,然后你根据这个结果再去手动调整超参数(自动机器学习除外)。


训练集、验证集、测试集的划分比例?

数据划分的方法并没有明确的规定,不过可以参考3个原则:

  1. 对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
  2. 对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。
  3. 超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。

能不能只要训练集和测试集,不要验证集呢? - 知乎

训练集、验证集、测试集(附:分割方法+交叉验证) - 腾讯云开发者社区-腾讯云

训练集、验证集、测试集的作用和划分比例?相关推荐

  1. 【小白学PyTorch】 2.浅谈训练集验证集和测试集

    文章目录: 经验误差与过拟合 评估方法 经验误差与过拟合 关键词:错误率(error rate),精度(accuracy). 错误率好理解,就是m个样本中,a个样本分类错误,则错误率E = a/m . ...

  2. 训练集 验证集_训练与验证、测试集数据分布不同的情况

    在不同分布的数据集上进行训练与验证.测试 深度学习需要大量的数据,但是有时我们可获得的满足我们真实需求分布的数据并不是那么多,不足以对我们的模型进行训练.这时我们就会收集大量相关的数据加入到训练集中, ...

  3. 机器学习中训练集、验证集和测试集的作用

    通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集.验证集合测试集,划分比例一般为0.6:0.2:0.2.对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的.泛化能力 ...

  4. 【入门篇】如何正确使用机器学习中的训练集、验证集和测试集?

    [注] ·本文为转载文章,原文作者是王树义老师,原文链接为 https://zhuanlan.zhihu.com/p/71961236 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎 ...

  5. 机器学习中训练集、验证集和测试集的区别

    通常,在训练有监督的机器学习模型的时候,会将数据划分为训练集.验证集合测试集,划分比例一般为0.6:0.2:0.2.对原始数据进行三个集合的划分,是为了能够选出效果(可以理解为准确率)最好的.泛化能力 ...

  6. 训练集、验证集和测试集这三个名词的区别

    训练集.验证集和测试集这三个名词在机器学习领域极其常见,但很多人并不是特别清楚,尤其是后两个经常被人混用. 在有监督(supervise)的机器学习中,数据集常被分成2~3个,即:训练集(train ...

  7. 如何正确使用机器学习中的训练集、验证集和测试集?

    王树义 读完需要 19 分钟 速读仅需7分钟 训练集.验证集和测试集,林林总总的数据集合类型,到底该怎么选.怎么用?看过这篇教程后,你就能游刃有余地处理它们了. 1 问题 审稿的时候,不止一次,我遇到 ...

  8. 什么是训练集、验证集和测试集?

    在机器学习中,训练集.验证集和测试集是数据集的三个重要部分,用于训练.评估和测试机器学习模型的性能.它们的定义和作用如下: 什么是训练集.验证集和测试集? 训练集:训练集是机器学习模型用于训练和学习的 ...

  9. 【神经网络】学习笔记十五——训练集,验证集和测试集

    以前一直知道神经网络划分数据集时要分为训练集,测试集和验证集,但不知道并且一般以6:2:2的比例划分,到头来不知道这三者各是啥,以及他们的作用是什么.本片文档解释一下三者的作用. 重点在于验证集和测试 ...

最新文章

  1. excel函数FREQUENCY、COUNTIFS、COUNTIF
  2. App Builder 2020中文版
  3. java虚拟机规范-加载、链接与初始化
  4. 堆栈溢出回答了我们不知道的Java首要问题
  5. 高价买的博客网站织梦模板
  6. qt qtableview插入进度条_Qt之QSqlTableModel的使用
  7. SQL Server2008官方下载地址
  8. 达州2022年9大科技计划项目申报方向、周期、要求汇编大全
  9. nginx企业级优化
  10. CTF练习题——bugkuCTF 网站被黑题目思路分析
  11. 如何清除电脑桌面图标蓝底
  12. STM32F7+STM32CubeMX5.21+SD+FATFS
  13. BZOJ1507 [NOI2003]Editor
  14. 如何巧妙实现文字变语音?其实文字转语音助手就很好
  15. 数字游戏ABCD*E=DCBA-第11届蓝桥杯Scratch选拔赛真题精选
  16. Orthogonal Convolutional Neural Networks
  17. SQL--超键、候选键、主键、外键的认识和区分
  18. 20200228视频播放器的字幕支持
  19. 白加黑加载方式_AVG中国实验室发现“白加黑”型恶意程序
  20. 【愚公系列】2022年01月 攻防世界-进阶题-MISC-76(warmup)

热门文章

  1. 如何参与到GitHub开源项目中
  2. 杰理之音频测试说明【篇】
  3. 16求计算机科学与技术鲁嘉华第三章作业
  4. HackTools————3、简易Web端口扫描
  5. 如何看待2020校招数据分析岗位招聘情况?
  6. 风控ML[1] | 风控建模老司机的几点思考与总结
  7. 电商项目数据库设计 | 第一篇:规范篇
  8. 关于Node.js后端架构的一点后知后觉
  9. [华语][张国荣][16CD][1978-1987][APE+CUE][3.94G][115][sqhhj0622#HD2PT]
  10. 智能交通综合管理平台组成