第一周 机器学习(ML)策略(1):1.5 训练 / 开发 / 测试集划分

news/2024/7/17 7:26:49

目录

第一章、简介

第二章、训练 / 开发 / 测试集划分

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的例子中设立开发集和测试集时存在一个问题,你的团队可能会花上几个月时间在开发集上迭代优化,结果发现,当你们最终在测试集上测试系统时和开发集里的数据可能差异很大。
  • 你可能会收获”意外惊喜” 并发现,花了那么多个月的时间去针对开发集优化,但是在测试集上的表现却不佳。
  • 也就是说,如果你的开发集和测试集来自不同的分布,最后很有可能导致测试集的识别猫的效果不佳。
  • 所以 为了避免这种情况,我建议的是你将所有数据随机洗牌 放入开发集和测试集,所以开发集和测试集都有来自八个地区的数据,并且开发集和测试集都来自同一分布,这分布就是你的所有数据混在一起。

 

此图像的alt属性为空;文件名为1-15.png

图 2-1

 

2.3、开发集和测试集划分的典型例子

 

  • 这里有另一个例子,这是个真实的故事,但有一些细节变了。
  • 我知道有一个机器学习团队,花了好几个月在开发集上优化。开发集里面有中等收入邮政编码的贷款审批数据。
  • 那么具体的机器学习问题是,“输入 x 为贷款申请,你是否可以预测输出 y 表示他们有没有还贷能力,所以这系统能帮助银行判断是否批准贷款。
  • 开发集来自贷款申请,这些贷款申请来自中等收入邮政编码,zip code就是美国的邮政编码。
  • 但是在这上面训练了几个月之后,团队突然决定要在低收入邮政编码数据上测试一下。当然,这个分布数据里面,中等收入和低收入邮政编码数据是很不一样的。
  • 显然,他们花了大量时间针对中等那组数据优化分类器,导致系统在低收入那组数据中效果很差。
  • 结果,这个特定团队实际上浪费了 3 个月的时间,不得不退回去重新做很多工作。

 

2.4、开发集和测试集划分的重要意义

 

  • 在设立开发集和测试集时,要选择这样的开发集和测试集——能够反映你未来会得到的数据、认为很重要的数据、必须得到好结果的数据,特别是这里的开发集和测试集尽可能来自同一个分布。
  • 所以不管你未来会得到什么样的数据,一旦你的算法效果不错,要尝试收集类似的数据,而且不管那些数据是什么,都要随机分配到开发集和测试集上。
  • 因为这样你才能将瞄准想要的目标,让你的团队高效迭代来逼近同一个目标,希望最好是同一个目标。
  • 我们还没提到如何设立训练集,我们会在之后的视频里谈谈如何设立训练集,但这个视频的重点在于设立开发集以及评估指标,真的就定义了你要瞄准的目标,我们希望通过在同一分布中设立开发集和测试集,你就可以瞄准你所希望的机器学习团队瞄准的目标,而设立训练集的方式,则会影响你逼近那个目标有多快,但我们可以在另一个讲座里提到。

 

2.5、小结

 

  • 我知道有一些机器学习团队,他们如果能遵循这个方针 就可以省下几个月的工作。
  • 所以,我希望这些方针也能帮到你们,接下来你的开发集和测试集的规模大小如何选取,在深度学习时代也在变化,我们会在下一个视频里提到这些内容。

 


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

相关文章

H264/AVC 句法

在编码器输出的码流中,数据的基本单位是句法元素,每个句法元素由若干比特构成,它表示某个特定的物理意义,例如:宏块类型、量化参数等。句法表示句法元素的组织结构。 句法元素的分层结构 码流是由一个个句法元素依次衔…

H264/AVC 解码器原理

264包括VCL(视频编码层)和NAL(网络提取层),VCL包括核心压缩引擎和块、宏块和片的语法级别定义,它的设计目标是尽可能地独立于网络进行高效编码;NAL则负责将VCL产生的比特字符串适配到各种各样地…

H264/AVC NAL单元和解码

在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的;它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口。网络层和传输层的…

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

目录 第一章、简介 第二章、开发集与测试集的大小 2.1、 数据集较小时 训练集/开发集/测试集 的划分规则。 2.2、数据集较大时 训练集/开发集/测试集 的划分规则。 2.3、 用置信度评估测试集的性能。 2.4、数据集较大情况下可考虑省略 测试集 2.5、小结 第一章、简介 本…

服务器端跟踪和收集

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 …