Machine Learning Yearning 翻译,动手写起来!

chapter13

Posted by Heron on June 7, 2017

13. Error analysis: Look at dev set examples to evaluate ideas

当你使用猫分类应用时,你注意到一些将狗分类成猫的例子。一些长得像猫的狗!

dog

团队成员建议引入第三方软件,使系统在狗的图片上做的更好。这些改变将花费一个月,团队成员都很热衷于这个方案。你应该让他们继续下去么?

在为这个任务投入一个月前,我建议你先估计这实际提升多少系统的精确度。之后你可以更加理性地决定是否值得花费一个月开发时间,或者你最好使用这段时间做些别的事情。

具体地你可以做:

  1. 从系统错误分类的数据中取100个开发集样本。
  2. 人工看看这些样本,看看有多少比例是狗的图像。

查看这些误分类样例的过程称之为“误差分析”。在这个例子中,如果你发现只有5%的误分类图片是狗,那么无论你对狗的问题做多少改进,你都不能消除超过5%的错误。换句话说,5%是引入第三方软件建议的一个“上限”。因此,如果整个系统当前准确率是90%(误差10%),这个改进组好的结果是90.5%的精确度。

相比之下,如果你发现50%的错误都是狗,那么对于建议的做好可以有很大的影响你很有信心。可能会将精度从90%提升到95%(误差响度减少50%,从10%降到5%)。

这种简单的误差分析能给你一个快速的方法评估为狗分类错误引入第三方软件的可能价值。它提供了一个定量的基准,用来决定是否进行这次投资(引入第三方软件)。

误差分析帮助你找出不同方向哪个更有价值。我看到许多工程师不愿意做误差分析。相比于质疑这个想法值不值得投资,直接扎进一个想法并实施更加让人感到激动。这是一个常见的错误:这可能导致你的团队花费一个月时间实现后发现只带了很小的好处。

手工检测100个样本不会花费很久。即使你每张图花费一分钟,两小时内你也做完了。这两小时可以节省你浪费一个月的努力,这是值得花费的时间。

“误差分析”是检测算法误分类的开发集样本的过程,是为了理解引起误差的深层原因。这可以帮助你优先选择工作–正如这个例子–启发新的方向,我们接下来会讨论。接下来的几节介绍一些误差分析的最佳实践。