第一周 机器学习(ML)策略(1):1.6 开发集与测试集的大小

news/2024/8/26 16:28:27

目录

第一章、简介

第二章、开发集与测试集的大小

2.1、 数据集较小时 训练集/开发集/测试集 的划分规则。

2.2、数据集较大时 训练集/开发集/测试集 的划分规则。

2.3、 用置信度评估测试集的性能。

2.4、数据集较大情况下可考虑省略 测试集

2.5、小结


第一章、简介

  • 本文基于吴恩达人工智能课程做学习笔记、并融入自己的见解(若打不开请复制到浏览器中打开)https://study.163.com/courses-search?keyword=吴恩达。
  • 本文第二章介绍 1.6 开发集与测试集的大小。

第二章、开发集与测试集的大小

 

2.1、 数据集较小时 训练集/开发集/测试集 的划分规则。

 

  • 在上一个视频中,你们知道了你的开发集和测试集为什么必须来自同一分布,但它们规模应该多大呢?
  • 在深度学习时代,设立开发集和测试集的方针也在变化,我们来看看一些最佳做法。
  • 你可能听说过一条经验法则,在机器学习中把你取得的全部数据用 70/30 比例分成训练集和测试集。
  • 或者如果你必须设立训练集、开发集和测试集,你会这么分划分成60%训练集、20%开发集和20%测试集。
  • 在机器学习的早期,这样划分是相当合理的,特别是以前的数据集大小要小得多,所以如果你总共有 100 个例子,这样 70/30 或者 60/20/20 分的经验法则是相当合理的,如果你有几千个例子,或者有一万个例子,这些做法也还是合理的。

 

2.2、数据集较大时 训练集/开发集/测试集 的划分规则。

 

  • 但在现代机器学习中,我们更习惯操作规模大得多的数据集。
  • 比如说你有 1 百万个训练例子,这样分可能更合理,98%作为训练集,1%开发集 1%测试集。我们用 D 和 T 缩写来表示开发集和测试集,因为如果你有1百万个例子,那么1%就是10,000个例子,这对于开发集和测试集来说可能已经够了。
  • 所以在现代深度学习时代,有时我们拥有大得多的数据集,所以使用小于20%的比例,或者小于30%比例的数据作为开发集和测试集也是合理的。
  • 而且因为深度学习算法对数据的胃口很大,我们可以看到那些有海量数据集的问题,有更高比例的数据划分到训练集里。

 

2.3、 用置信度评估测试集的性能。

 

  • 那么测试集呢? 要记住测试集的作用是完成系统开发之后,测试集可以帮你评估投产系统的性能,
  • 测试集发挥作用的方法就是令你的测试集足够大,能够以高置信度评估系统整体性能。所以,除非你需要对最终投产系统有一个很精确的指标,否则一般来说,测试集不需要上百万个例子。
  • 对于你的应用程序,也许你想有10,000个例子就能给你足够的置信度来给出性能指标了,也许100,000个等等可能就够了。这数目可能远远小于整体数据集的30%或20%,例子数目多少的选取,取决于你有多少数据。

 

2.4、数据集较大情况下可考虑省略 测试集

  • 对于某些应用,你也许不需要对系统性能有置信度很高的评估,也许你只需要训练集和开发集,我认为不单独分出一个测试集也是可以的,即不需要测试也是可以的。
  • 事实上,有时在实践中,有些人会只分成训练集和开发集。他们实际上会在开发集上迭代,所以这里没有测试集(这部分内容,本文纠正了吴恩达视频的翻译不匹配问题)。
  • 他们有的是训练集和开发集,但没有测试集。
  • 不过在机器学习的历史里,不是每个人都把术语定义分得很清的。有时人们说的开发集,其实应该看做测试集,只要你有数据去训练,有数据去调试就够了。
  • 你打算不管测试集,直接部署最终系统,所以不用太担心它的实际表现。我觉得这也是很好的 就将它们称为训练集、开发集就好,然后说清楚你没有测试集,这是不是有点不正常呢?
  • 我绝对不建议在搭建系统时省略测试集,因为有个单独的测试集比较令我安心,因为你可以使用这组不带偏差的数据来测量系统的性能。
  • 但如果你的开发集非常大,这样你就不会对开发集过拟合得太厉害。这种情况 只有训练集和测试集也不是完全不合理的,不过我一般不建议这么做。

 

2.5、小结

  • 总结一下,在大数据时代,旧的经验规则比如70/30分不再适用了。
  • 现在流行的是把大量数据分到训练集、然后少量数据分到开发集和测试集,特别是当你有一个非常大的数据集时,以前的经验法则其实是为了确保开发集足够大,能够达到它的目的,即开发集的目的是帮你评估不同的想法,然后选出 A 还是 B 更好。
  • 测试集的目的是评估你最终的成本偏差,你只需要设立足够大的测试集,可以用来这么评估就行了,可能只需要远远小于总体数据量的 30%。
  • 所以我希望本视频能给你们一点指导和建议,让你们知道如何在深度学习时代设立开发和测试集。
  • 有时候在研究机器学习的问题途中,你可能需要更改评估指标,或者改动你的开发集和测试集,我们会讲什么时候需要这样做。

 


http://www.niftyadmin.cn/n/1895469.html

相关文章

服务器端跟踪和收集

SQL Server性能分析器只是少量系统存储过程中相当轻量的封装,这些系统存储过程显示了SQL跟踪的真正功能。 下列系统存储过程用来定义和管理跟踪: Sp_trace_create 用来定义一个跟踪,并和接下来将要讲的其他选项一样指定一个输出文件位置。这个…

74. 进程管理 - sar 收集、报告,或存储系统行为信息

开篇词 sar 是一个用于收集、报告,或存储系统活动信息的工具。 统计 页面 这里是页面字段的一些描述: 字段描述pgpgin/s在磁盘里每秒分页的总字节数。pgpgout/s从磁盘里每秒分页的总字节数。fault/s由系统产生的每秒页丢失故障(主要及…

第一周 机器学习(ML)策略(1):1.7 什么时候该改变开发集、测试集和指标

目录第一章、简介 第二章、什么时候该改变开发集、测试集的指标 2.1、什么情况下需要改变指标? 2.2、如何修改评估指标(增加权重) 2.3、增加权重后,归一化评估指标 2.4、设定指标是第一步,优化指标是第二步 2.5、 举例,两个猫分类…

Baeldung Java 周评 | 第七十三弹(关键词:Spring Data JPA 教程、Java 的二十年、了解垃圾收集日志、Hibernate 事物缓存并发策略工作原理、JVM 的反应式流)

开篇词 尤金的第 73 篇 Java 周评,诞生了! Spring 以及 Java 相关 Spring Data JPA 教程:查询方法简介 Petri 的 Spring Data JPA 系列的坚实部分 - 介绍查询方法。Spring 4 及 Java 8 的采用情况 我上周进行的调查对 Spring 4、Spring …

H264/AVC 解码时POC的计算

POC用于标识图像的播放顺序,同时还用于在对帧间预测片解码时,标记参考图像的初始图象序号,表明下列情况下帧或场之间的图像序号差别:使用直接预测模式的运动矢量推算时;B片中使用固有模式加权预测时;解码器…

程序员在囧途之越级汇报篇

不知道大家有没有发现过这样的问题。我们总觉得顶头上司很蠢,而顶头上司的上司相反看起来很睿智,所以我们有情况经常喜欢来个“越级“发邮件或者在电梯口碰到上上司,我们的苦衷如滔滔江水般的喷涌而出。 所以,今天给大家看个真实案…

H264/AVC 宏块片组映射图的产生

(这一届内容不太友好,没看懂,后面会回顾重新理解) 解码器在对每个片解码之前,首先需要基于当前有效图像参数集和需解码的片头,产生“宏块片组映射图”变量MbToSliceGroupMap,该变量对于一个接入…

第一周 机器学习(ML)策略(1):1.8 为什么是人的表现

目录 第一章、简介 第二章、AI智能与人类智能的对比 2.1、AI智能与人能行为的比较 2.2、AI智能可达到的理论水平(贝叶斯最优误差) 2.3、举例说明AI智能为什么不可超越理论水平 2.4、在AI智能低于人类水平情况下,有三种策略可以提升AI智能。 第一章、简介 本文…