Mechine Learning Yearning 13-19 阅读笔记:错误分析

13.快速构建第一个系统,然后迭代

即使是我(吴恩达)这样经验丰富的人,也很难选择一个正确的前进方向,所以不要试图设计和构建完美的系统,而应该快速构建第一个系统,然后迭代。PS:对研究人不适用。

14.通过查看开发集样本来评估idea

当你决定将接下来的时间投入到某个idea时,强烈建议你首先评估它实际上会提高多少系统的准确率,具体来说,你可以做以下事情:
1.收集100个系统错误分类的样例。
2.手动查看这些样本,当中有多少是会被你的idea所影响的。

15.错误分析过程中并行评估多个想法

通常,我(吴恩达)会将错误分类的样本填写在电子表格里,标注错误类别,甚至注释每个样本,。
这个过程能启发你提出新的idea。

16.清理标错的开发和测试集样本

这里的标错是指的标注人员错标的样本,它们也许也很重要,不妨在错误分析的表格里添加上这一类。
在项目的开始阶段,容忍一些标错的数据十分常见,随着系统的完善,在去除标错数据的时候,记得将同样的行为应用到测试集。当你决定提升标签质量时,最好同时改正那些被正确分类的错误样本(吴恩达的意思应该是,验证集里有的样本被错标,但是模型预测的结果和标注人员的结果相同),不如会引入bias。当然只检查那些错误分类的样本比较简单,但是会引入偏差,如果你是开发产品,那么这种偏差或许可以忍受,但是在学术研究中这会是一个问题。

17.如果你的开发集比较大,那么将其分成两个子集,并只着眼于其中一个

当你的开发集比较大,那么你可以将其分为两个子集,只关注其中一个(eyeball dev set)。通过eyeball dev set来进行错误分析,那么很容易你就会对其过拟合,这时候就需要用另一个数据集(blackbox dev set)来判断你是否对这个数据集过拟合了(意思应该是,当你使用方法改进验证集上的错误时,实际上是有可能对验证集过拟合的)。

18.eyeball和blackbox开发集应该多大?

以下是一些粗略的指导方针:

  • 一个使你分类器犯错10次的Eyeball开发集会被认为太小,很难估计不同错误类型的影响
  • 约20个错误能让你开始了解主要错误是什么
  • 约50个错误能让你较好的了解主要错误是什么
  • 约100个错误能让你很清楚主要错误是什么。只要你有足够多的数据,手动分析更多的错误,将是无害的。

如果你正在做一个连人也很难做好的任务,这个时候你可以忽略Eyeball开发集,在后面章节将讨论这个问题。
正常情况下blackbox开发集应该在1000-10000个样本,尽管更多的数据没有坏处,但这个大小的blackbox开发集已经足够你去调参和选择模型了,样本量在100左右的blackbox开发集比较小,但仍然有用。当你的开发集较小,那么你不得不用整个开发集作为eyeball开发集,我(吴恩达)认为eyeball开发集更重要。

19.小结:基本错误分析

  • 当你开始一个新项目时,尤其是在一个你不是专家的领域,很难正确猜测出最有前景的方向。
  • 所以,不要在开始试图设计和构建一个完美的系统。相反,应尽可能快(可能在短短几天内)的构建和训练一个基本系统。然后使用错误分析去帮助你识别最有前景的方向,并从那迭代地改进你的算法。
  • 通过手动检查约100个算法错误分类的开发集样本来执行错误分析,并计算主要的错误类别。用这些信息来确定优先修正哪种类型的错误。
  • 考虑将开发集分为手动检查的 Eyeball 开发集和不手动检查的 Blackbox 开发集。如果在 Eyeball 开发集上的性能在Blackbox 开发集上好很多,那么你已经过拟合 Eyeball 开发集,并且应该考虑为其获得更多的数据。
  • Eyeball开发集应该足够大,以便于算法有足够多的错分类样本供你分析。对很多应用来说,含有1000-10000个样本的 Blackbox开发集已足够。
  • 如果你的开发集不够大到可以按照这种方式进行拆分,那么就使用 Eyeball 开发集来用于手动错误分析、模型选择和调超参。

猜你喜欢

转载自blog.csdn.net/juranyaoyingwen/article/details/80455527