开发集和测试集的大小(Size of dev and test sets)

在上一个笔记中你们知道了你的开发集和测试集为什么必须来自同一分布,但它们规模应该多大?在深度学习时代,设立开发集和测试集的方针也在变化,我们来看看一些最佳做法。

你可能听说过一条经验法则,在机器学习中,把你取得的全部数据用70/30比例分成训练集和测试集

或者如果你必须设立训练集、开发集和测试集,你会这么分60%训练集,20%开发集,20%测试集。

在机器学习的早期,这样分是相当合理的,特别是以前的数据集大小要小得多。所以如果你总共有100个样本,这样70/30或者60/20/20分的经验法则是相当合理的。如果你有几千个样本或者有一万个样本,这些做法也还是合理的。

但在现代机器学习中,我们更习惯操作规模大得多的数据集,比如说你有1百万个训练样本,这样分可能更合理,98%作为训练集,1%开发集,1%测试集,我们用D和T缩写来表示开发集和测试集。

因为如果你有1百万个样本,那么1%就是10,000个样本,这对于开发集和测试集来说可能已经够了。所以在现代深度学习时代,有时我们拥有大得多的数据集,所以使用小于20%的比例或者小于30%比例的数据作为开发集和测试集也是合理的。

而且因为深度学习算法对数据的胃口很大,我们可以看到那些有海量数据集的问题,有更高比例的数据划分到训练集里,那么测试集呢?

要记住,测试集的目的是完成系统开发之后,测试集可以帮你评估投产系统的性能

方针就是,令你的测试集足够大,能够以高置信度评估系统整体性能

所以除非你需要对最终投产系统有一个很精确的指标,一般来说测试集不需要上百万个例子。对于你的应用程序,也许你想,有10,000个例子就能给你足够的置信度来给出性能指标了,也许100,000个之类的可能就够了,这数目可能远远小于比如说整体数据集的30%,取决于你有多少数据。

对于某些应用,你也许不需要对系统性能有置信度很高的评估,也许你只需要训练集和开发集。我认为,不单独分出一个测试集也是可以的。事实上,有时在实践中有些人会只分成训练集和测试集,他们实际上在测试集上迭代,所以这里没有测试集,他们有的是训练集和开发集,但没有测试集。如果你真的在调试这个集,这个开发集或这个测试集,这最好称为开发集。

不过在机器学习的历史里,不是每个人都把术语定义分得很清的,有时人们说的开发集,其实应该看作测试集。但如果你只要有数据去训练,有数据去调试就够了。

你打算不管测试集,直接部署最终系统,所以不用太担心它的实际表现,我觉得这也是很好的,就将它们称为训练集、开发集就好。然后说清楚你没有测试集,这是不是有点不正常?

我绝对不建议在搭建系统时省略测试集,因为有个单独的测试集比较令我安心。因为你可以使用这组不带偏差的数据来测量系统的性能。但如果你的开发集非常大,这样你就不会对开发集过拟合得太厉害,这种情况,只有训练集和测试集也不是完全不合理的。不过我一般不建议这么做。

总结一下,在大数据时代旧的经验规则,这个70/30不再适用了。现在流行的是把大量数据分到训练集,然后少量数据分到开发集和测试集,特别是当你有一个非常大的数据集时。以前的经验法则其实是为了确保开发集足够大,能够达到它的目的,就是帮你评估不同的想法,然后选出A还是B更好。测试集的目的是评估你最终的成本偏差,你只需要设立足够大的测试集,可以用来这么评估就行了,可能只需要远远小于总体数据量的30%。

样本分成训练集和测试集_吴恩达深度学习笔记(64)-开发集和测试集的大小分配...相关推荐

  1. 训练softmax分类器实例_吴恩达深度学习笔记(56)-训练一个 Softmax 分类器

    训练一个 Softmax 分类器(Training a Softmax classifier) 上一个笔记中我们学习了Softmax层和Softmax激活函数,在这个笔记中,你将更深入地了解Softm ...

  2. 吴恩达深度学习代码_吴恩达深度学习笔记(58)-深度学习框架Tensorflow

    TensorFlow 有很多很棒的深度学习编程框架,其中一个是TensorFlow,很期待帮助你开始学习使用TensorFlow,我想在这个笔记中向你展示TensorFlow程序的基本结构,然后让你自 ...

  3. 深度学习如何提高训练集准确率_吴恩达深度学习笔记(61)-训练调参中的准确率和召回率...

    单一数字评估指标(Single number evaluation metric) 无论你是调整超参数,或者是尝试不同的学习算法,或者在搭建机器学习系统时尝试不同手段,你会发现,如果你有一个单实数评估 ...

  4. 准确率 召回率_吴恩达深度学习笔记(61)-训练调参中的准确率和召回率

    单一数字评估指标(Single number evaluation metric) 无论你是调整超参数,或者是尝试不同的学习算法,或者在搭建机器学习系统时尝试不同手段,你会发现,如果你有一个单实数评估 ...

  5. yolo算法_吴恩达深度学习笔记(100)-目标检测之YOLO 算法讲解

    YOLO 算法(Putting it together: YOLO algorithm) 你们已经学到对象检测算法的大部分组件了,在这个笔记里,我们会把所有组件组装在一起构成YOLO对象检测算法. 我 ...

  6. 创建一列矩阵数字一样吗_吴恩达深度学习笔记(122) | NLP | 嵌入矩阵Embedding Matrix...

    嵌入矩阵(Embedding Matrix) 接下来我们要将学习词嵌入这一问题具体化,当你应用算法来学习词嵌入时,实际上是学习一个嵌入矩阵,我们来看一下这是什么意思. 和之前一样,假设我们的词汇表含有 ...

  7. 吴恩达深度学习笔记(四)

    吴恩达深度学习笔记(四) 卷积神经网络CNN-第二版 卷积神经网络 深度卷积网络:实例探究 目标检测 特殊应用:人脸识别和神经风格转换 卷积神经网络编程作业 卷积神经网络CNN-第二版 卷积神经网络 ...

  8. 吴恩达深度学习笔记——结构化机器学习项目(Structuring Machine Learning Projects)

    深度学习笔记导航 前言 传送门 结构化机器学习项目(Machine Learning Strategy) 机器学习策略概述 正交化(orthogonalization) 评价指标 数字评估指标的单一性 ...

  9. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  10. 吴恩达深度学习笔记——神经网络与深度学习(Neural Networks and Deep Learning)

    文章目录 前言 传送门 神经网络与深度学习(Neural Networks and Deep Learning) 绪论 梯度下降法与二分逻辑回归(Gradient Descend and Logist ...

最新文章

  1. JavaDoc注释的使用
  2. 【数论】[CF258C]Little elephant and LCM
  3. php起始符大全,PHP 符号大全
  4. linux延迟绑定,php延迟绑定和非延迟绑定解析
  5. 为什么我切换到React Native来创建超级简单的底页
  6. [swift] LeetCode 35. Search Insert Position
  7. Eclipse用法和技巧十五:自动添加未实现方法1
  8. ssm提交post_SSM中get和post乱码笔记
  9. 管理:49个终身受用的职场“顶级思维”!
  10. 全景图像拼接(一)关于全景拼接论文推荐
  11. APP安装与卸载测试点
  12. 我的工具箱-Office
  13. 【图像处理】图像拼接——图像配准、图像融合
  14. Python 量化投资实战教程(6) — 交易平均收益率
  15. UML总结—包图(Package Diagram)
  16. VS2008在WIN10下安装失败:ISetupComponent::Pre/Post/Install() failed ISetupManager 解决方法(-2147023293)
  17. 用友t3服务器怎么修改密码,用友T3软件修改密码
  18. 【资讯】福布斯:金融科技革命开端的尾声
  19. 5款Java性能分析工具的对比
  20. 证券市场基本法律法规

热门文章

  1. 365RSS.cn = Web3.0?
  2. 通过反射访问private的属性或方法
  3. Java之mybatis详解(非原创)
  4. prune研究记录(二)
  5. 树莓派GPIO点亮第一个led
  6. Delphi中怎么结束线程(这个线程是定时执行的)(方案一)
  7. spring+ibatis+注解开发
  8. 【初学者】10个例子带你了解机器学习中的线性代数
  9. 【Paper】AAAI 2020 故事生成模型 之 角色一致性
  10. 谁是杨强?首位AAAI华人主席,身兼5大顶级组织Fellow,也是华为诺亚方舟实验室开创者...