目录
第一章、简介
第二章、训练 / 开发 / 测试集划分
2.1、训练集 / 开发集 / 测试集 的概念
2.2、如何划分开发集和测试集
2.3、开发集和测试集划分的典型例子
2.4、开发集和测试集划分的重要意义
2.5、小结
第一章、简介
- 本文基于吴恩达人工智能课程做学习笔记、并融入自己的见解(若打不开请复制到浏览器中打开)https://study.163.com/courses-search?keyword=吴恩达。
- 本文第二章介绍 训练 / 开发 / 测试集划分。
第二章、训练 / 开发 / 测试集划分
2.1、训练集 / 开发集 / 测试集 的概念
- 设立训练集 开发集和测试集的方式,大大影响了你或者你的团队在建立机器学习应用方面取得进展的速度。
- 同样的团队,即使是大公司里的团队,在设立这些数据集的方式不合理的话,真的会让团队的进展变慢而不是加快。
- 我们看看应该如何设立这些数据集,让你的团队效率最大化。在这个视频中 我想集中讨论如何设立开发集和测试集。
- dev 集也叫做开发集,有时称为保留交叉验证集。
- 机器学习中的工作流程是:
- 首先,你尝试很多思路用训练集训练不同的模型。
- 然后,使用开发集来评估不同的思路,并选择一个思路。
- 最后,不断迭代去改善开发集的性能,直到最后你可以得到一个令你满意的成本后,你再用测试集去评估。
2.2、如何划分开发集和测试集
- 现在举个例子,你要开发一个猫分类器,然后你在这些区域里运营美国、英国其他欧洲国家、南美洲、印度、中国其他亚洲国家和澳大利亚。
- 那么你应该如何设立开发集和测试集呢?其中一种做法是使用US/UK/Other Europe/South America这四个区域作为开发集。India/China/Other Asia/Australia这四个区域构成测试集。
- 事实证明,这个想法非常糟糕。因为这个例子中,你的开发集和测试集来自不同的分布。
- 我建议你们不要这样做, 而是让你的开发集和测试集来自同一分布。我的意思是这样设立你的开发集,并加上一个单实数评估指标,这就是像是定下目标。
- 然后告诉你的团队,那就是你要瞄准的靶心,因为你一旦建立了这样的开发集和指标,团队就可以快速迭代、尝试不同的想法、跑实验,可以很快地使用开发集和指标,去评估不同分类器,然后尝试选出最好的那个。
- 所以,机器学习团队一般都很擅长使用不同方法去逼近目标,然后不断迭代 不断逼近靶心。
- 所以针对开发集上的指标优化,然后在图2-1的例子中设立开发集和测试集时存在一个问题,你的团队可能会花上几个月时间在开发集上迭代优化,结果发现,当你们最终在测试集上测试系统时和开发集里的数据可能差异很大。
- 你可能会收获”意外惊喜” 并发现,花了那么多个月的时间去针对开发集优化,但是在测试集上的表现却不佳。
- 也就是说,如果你的开发集和测试集来自不同的分布,最后很有可能导致测试集的识别猫的效果不佳。
- 所以 为了避免这种情况,我建议的是你将所有数据随机洗牌 放入开发集和测试集,所以开发集和测试集都有来自八个地区的数据,并且开发集和测试集都来自同一分布,这分布就是你的所有数据混在一起。
图 2-1
2.3、开发集和测试集划分的典型例子
- 这里有另一个例子,这是个真实的故事,但有一些细节变了。
- 我知道有一个机器学习团队,花了好几个月在开发集上优化。开发集里面有中等收入邮政编码的贷款审批数据。
- 那么具体的机器学习问题是,“输入 x 为贷款申请,你是否可以预测输出 y 表示他们有没有还贷能力,所以这系统能帮助银行判断是否批准贷款。
- 开发集来自贷款申请,这些贷款申请来自中等收入邮政编码,zip code就是美国的邮政编码。
- 但是在这上面训练了几个月之后,团队突然决定要在低收入邮政编码数据上测试一下。当然,这个分布数据里面,中等收入和低收入邮政编码数据是很不一样的。
- 显然,他们花了大量时间针对中等那组数据优化分类器,导致系统在低收入那组数据中效果很差。
- 结果,这个特定团队实际上浪费了 3 个月的时间,不得不退回去重新做很多工作。
2.4、开发集和测试集划分的重要意义
- 在设立开发集和测试集时,要选择这样的开发集和测试集——能够反映你未来会得到的数据、认为很重要的数据、必须得到好结果的数据,特别是这里的开发集和测试集尽可能来自同一个分布。
- 所以不管你未来会得到什么样的数据,一旦你的算法效果不错,要尝试收集类似的数据,而且不管那些数据是什么,都要随机分配到开发集和测试集上。
- 因为这样你才能将瞄准想要的目标,让你的团队高效迭代来逼近同一个目标,希望最好是同一个目标。
- 我们还没提到如何设立训练集,我们会在之后的视频里谈谈如何设立训练集,但这个视频的重点在于设立开发集以及评估指标,真的就定义了你要瞄准的目标,我们希望通过在同一分布中设立开发集和测试集,你就可以瞄准你所希望的机器学习团队瞄准的目标,而设立训练集的方式,则会影响你逼近那个目标有多快,但我们可以在另一个讲座里提到。
2.5、小结
- 我知道有一些机器学习团队,他们如果能遵循这个方针 就可以省下几个月的工作。
- 所以,我希望这些方针也能帮到你们,接下来你的开发集和测试集的规模大小如何选取,在深度学习时代也在变化,我们会在下一个视频里提到这些内容。