秘籍0x01建立开发集和测试集

机器学习训练秘籍笔记

1-12章

  1. 监督学习(supervised learning)是指使用已标记(labeled)的训练样本 来学习一个从 映射到 的函数。监督学习算法主要包括线性回归(linear regression)、对数几率回归(logistic regression,又译作逻辑回归)和神经网络(neural network)。虽然机器学习的形式有许多种,但当前具备实用价值的大部分机器学习算法都来自于监督学习。
  2. 训练集(training set)用于运行你的学习算法。 开发集(development set)用于调整参数,选择特征,以及对学习算法作出其它决定。有时也称为留出交叉验证集(hold-out cross validation set)测试集(test set)用于评估算法的性能,但不会据此决定使用什么学习算法或参数。
  3. 开发集和测试集的使命就是引导你的团队对机器学习系统做出最重要的改变。 合理地设置开发集和测试集,使之近似模拟可能的实际数据情况,并处理得到一个好的结果。
  4. 开发集和测试集应该服从同一分布。
  5. 开发集的规模应该大到足以区分出你所尝试的不同算法间的性能差异。 通常来说,开发集的规模应该在 1,000 到 10,000 个样本数据之间,而当开发集样本容量为 10,000 时,你将很有可能检测到 0.1% 的性能提升。
  6. 那么测试集的大小又该如何确定呢?它的规模应该大到使你能够对整体系统的性能进行一个高度可信的评估。
  7. 所谓的单值评估指标(single-number evaluation metric)有很多,分类准确率就是其中的一种:你在开发集(或测试集)上运行分类器后,它将返回单个的数据值,代表着被正确分类的样本比例。根据这个指标,如果分类器 A 的准确率为 97%,而分类器 B 的准确率为 90%,那么我们可以认为分类器 A 更优秀。
  8. 查准率(Precision,又译作精度)和查全率(Recall,又译作召回率)均不是单值评估指标,因为它给出了两个值来对你的分类器进行评估。多值评估指标将使算法之间的优劣比较变得更加困,算法团队需要在之间做取舍权衡。 取平均值或者加权平均值是将多个指标合并为一个指标的最常用方法之一。
  9. 优化指标和满意度指标, 利用一定的算法对多个指标进行合并。
  10. 通过开发集和度量指标加速迭代。1.尝试一些关于系统构建的想法(idea)。 2.使用代码(code)实现想法。 3.根据实验(experiment)结果判断想法是否行得通。(第一个想到的点子一般都行不通!)在此基础上学习总结,从而产生新的想法,并保持这一迭代过程。
  11. 何时修改开发集、测试集和度量指标: 开展一个新项目时,我会尽快选好开发集和测试集,因为这可以帮团队制定一个明确的目标。 我通常会要求我的团队在不到一周(一般不会更长)的时间内给出一个初始的开发集、测试集和度量指标,提出一个不太完美的方案并迅速采取行动 ,比花过多时间去思考要好很多。但是一周的时间要求并不适用于成熟的应用程序,譬如垃圾邮件过滤。我也见到过一些团队在已经成熟的系统上花费数月的时间来获得更好的开发集和测试集。 如果你渐渐发现初始的开发集、测试集和度量指标设置与期望目标有一定差距,快速想方法去改进它们。例如你的开发集与度量指标在排序时将分类器 A 排在 B 的前面,然而你的团队认为分类器 B 在实际产品上的表现更加优异,这个时候就需要考虑修改开发集和测试集,或者是你的评估指标了。 a. 你需要处理的实际数据的分布和开发集/测试集数据的分布情况不同。 b.你在开发集上过拟合了。 c. 该指标所度量的不是项目应当优化的目标。
  12. 什么是过拟合? 举个栗子: 不知道大家在学车的时候教练教倒库和侧方停车的时候有没有教一串口诀:类似于在车窗的XX框切XX杆的时候打满,切XX的时候回正等等,这个口诀可以顺利让你通过科目二,然而换个车或者换个场地,你就发现并没有卵用... 我们说这只是overfit了某个车和某个场地(训练数据),在新的测试集(新车新场地)上的泛化性能为0。

image

1. 小结:建立开发集和测试集

- 选择作为开发集和测试集的数据,应当与你预期在将来获取并良好处理的数据有着相同的分布,但不需要和训练集数据的分布一致。
- 开发集和测试集的分布应当尽可能一致。
- 为你的团队选择一个单值评估指标进行优化。需要考虑多项目标时,不妨将它们整合到一个表达式里(比如对多个误差指标取平均),或者定义满意度指标和优化指标。
- 机器学习是一个高速迭代的过程:在最终令人满意的方案出现前,你可能要尝试很多想法。
- 拥有开发集、测试集和单值评估指标可以帮你快速评估一个算法,从而加速迭代过程。
- 当你探索一个全新的应用时,尽可能在一周内建立你的开发集、测试集和指标,而在成熟的应用上则可以花费更长的时间。
- 传统的 70% / 30% 训练集/测试集划分对大规模数据并不适用,实际上开发集和测试集的比例会远低于 30%。
- 开发集的规模应当大到能够检测出算法精度的细微改变,但也不用太大;测试集的规模应该大到能够使你对系统的最终性能作出一个充分的估计。
- 当开发集和评估指标不再能给团队一个正确的导向时,就尽快修改它们:(i) 如果你在开发集上过拟合,则获取更多的开发集数据。(ii) 如果开发集和测试集的数据分布和实际关注的数据分布不同,则获取新的开发集和测试集。 (iii) 如果评估指标不能够对最重要的任务目标进行度量,则需要修改评估指标 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

学界 | 离「脑机接口」再近一步,日本研究员根据大脑fMRI重建看到的图像

AI 科技评论按:位于日本的国际电气通信基础技术研究所(ATR)的计算神经科学实验室和京都大学日前联合发布了一篇论文,他们可以借助 fMRI(功能性磁共振成像)...

39490
来自专栏机器之心

学界 | 批训练、注意力模型及其声纹分割应用,谷歌三篇论文揭示其声纹识别技术原理

53460
来自专栏新智元

【10亿+数据集,ImageNet千倍】深度学习未来,谷歌认数据为王

【新智元导读】数据重要还是算法重要?一篇新的论文或许给出了答案。使用一个 300 倍于 ImageNet 的新数据集,谷歌研究人员发现,随着数据增长,模型完成计...

42440
来自专栏AI科技大本营的专栏

课程 | 工程大咖带你入门深度学习+TensorFlow

《深度学习基础与TensorFlow实践》 AI100学院有幸邀请到《深度学习原理与TensorFlow实践》作者之一、百纳信息公司AI方向负责人王琛老师6月...

35150
来自专栏Spark学习技巧

Emdedding向量技术在蘑菇街推荐场景的应用

39930
来自专栏机器之心

CoNLL 2018 | 最佳论文揭晓:词嵌入获得的信息远比我们想象中的要多得多

昨日,CoNLL 公布了最佳论文,由来自西班牙巴斯克大学 IXA NLP 组的 Mikel Artetxe 等人获得。该论文展示了词嵌入模型能够捕获不同层面的信...

9410
来自专栏企鹅号快讯

Yann LeCun:深度学习已死,可微分编程万岁!

昨天,Yann LeCun在Facebook个人主页上写到:深度学习已死,可微分编程万岁!这让不少人大吃一惊,莫非我们一直坚信的深度学习技术是假的“炒作概念”?...

25790
来自专栏新智元

DeepMind AI 关系推理超越人类:深度神经网络模块即插即用

【新智元导读】DeepMind 今天发表官博介绍了他们的两篇最新论文,称其都在理解“关系推理”这一挑战方面展示出了令人可喜的结果。一个是视觉互动网络 VIN,能...

601140
来自专栏AI科技评论

学界 | 好奇心驱动学习,让强化学习更简单

雷锋网 AI 科技评论按:强化学习在最近几年中都是最热门的研究领域之一,但是复杂环境中难以训练、训练后难以泛化的问题始终没有得到完全的解决。好奇心驱动的学习是一...

10230
来自专栏ATYUN订阅号

在机器学习项目中,如何使预测建模问题的数据收益最大化

预测建模的成功与否,可能取决于你使用的数据,以及你使用这些数据的方法。问题的数据和框架可能是你完成项目的最大筹码。

9230

扫码关注云+社区

领取腾讯云代金券