2020-7-1 吴恩达DL学习-C3结构化ML项目-w1 ML策略1(1.6 开发集和测试集的大小--DL时代的设立方针)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

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

上一节了解了开发集和测试集为什么必须来自同一分布,但它们规模应该多大?在DL时代,设立开发集和测试集的方针也在变化,我们来看看一些最佳做法。
在这里插入图片描述

如上图。我们用 D D D T T T 缩写来表示开发集和测试集。

以前的课程中,你可能听说过一条经验法则,在ML中,把你取得的全部数据用70/30比例分成训练集和测试集。或者如果你必须设立训练集、开发集和测试集,你会这么分60%训练集,20%开发集,20%测试集。

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

但在现代ML中,我们更习惯操作规模大得多的数据集,比如说你有1百万个训练样本,这样分可能更合理,98%作为训练集,1%开发集,1%测试集。1%就是1万个样本,这对于开发集和测试集来说可能已经够了。

在DL学习时代,有时我们拥有大得多的数据集,所以使用小于20%的比例或者小于30%比例的数据作为开发集和测试集也是合理的。而且因为DL算法对数据的胃口很大,我们可以看到那些有海量数据集的问题,有更高比例的数据划分到训练集里,那么测试集呢?
在这里插入图片描述

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

对于某些应用,你也许不需要对系统性能有置信度很高的评估,只需要训练集和开发集,不需要测试集。我认为,不单独分出一个测试集也是可以的。

事实上,有时在实践中有些人会只分成训练集和测试集,然而他们实际上在测试集上迭代,所以可以认为他们有的是训练集和开发集,而没有测试集。如果你真按照这种方式测试迭代,这最好称为开发集。

不过在ML的历史里,不是每个人都把术语定义分得很清的,有时人们说的开发集,其实应该看作测试集。但如果你只要有数据去训练,有数据去调试,打算不管测试集,直接部署最终系统,不太担心它的实际表现,我觉得这也是很好的,就将它们称为训练集、开发集就好,然后说清楚你没有测试集。

我绝对不建议在搭建系统时省略测试集,有个单独的测试集比较令我安心,因为你可以使用不带偏差的数据来测量系统的性能。

但如果你的开发集非常大,这样你就不会对开发集过拟合得太厉害,这种情况,只有训练集和测试集也不是完全不合理的。不过我一般不建议这么做。

总结

在大数据时代旧的经验规则 70/30不再适用了。现在流行的是把大量数据分到训练集,然后少量数据分到开发集和测试集,特别是当你有一个非常大的数据集时。

旧的经验法则其实是为了确保开发集足够大,能够达到它的目的,就是帮你评估不同的想法,然后选出还是更好。测试集的目的是评估你最终的成本偏差,你只需要设立足够大的测试集,可以用来这么评估就行了,可能只需要远远小于总体数据量的30%。

希望通过本节课的指导和建议,让你们知道如何在DL时代设立开发和测试集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值