《Machine Learning Yearning》第14章

这一部分讲了误差分析的重要性,在进行一项新的尝试前,可以先完成误差分析,这可以节省很多时间和精力。

14 Error analysis: Look at dev set examples to evaluate ideas

这里写图片描述

 当你运行你的猫识别app时,注意到有几个例子会把狗误判为猫。一些狗确实看起来像猫!

 一个团队成员建议合并第三方软件,能使系统在狗图片上处理得更好。这些改变需要一个月的时间,而且这个团队成员也很热情。你应该让他们继续吗?

 在花费一个月研究这个之前,我建议你先估计一下这个会给系统准确率带来多大的提升。然后你可以更理性的决定花费一个月开发时间值不值,或者是否可以将这个时间用在其他更好的任务上。

 更详细的,你可以这样做:

  1. 收集你们系统误分类的100个开发集,即,你的系统出错的示例。
  2. 人为观察这个示例,然后统计出这些示例中狗图片占的比例。

 查看这些误分类样例的过程称为误差分析。在这个例子中,如果你发现只有5%的错误示例图片是狗,那么无论你怎样提升系统在狗图片上的性能,你也不会减少超过5%的错误率。换句话说,5%就是这个项目能提升的“上限”(意味着最大可能)。因此,如果当前你系统的准确率是90%(10%的误差),这个改进可能达到的最好准确率是90.5%(或者是9.5%的误差率,比原始的10%少5%)。

 反之,如果你发现50%的错分都是狗,那么你有信心这个过程会有很大的影响。可能会将准确率从90%提升到95%(错误率相对减少50%,从10%降到5%)

 这个简单的错误率统计分析过程,能给你提供一个快速估计加入识别狗的第三方软件可能带来的价值。它为决定是否执行这项投资提供了定量依据。

 误差分析能帮助你弄清楚不同方向的前景。我见过很多工程师不愿意进行误差分析。他们经常认为实施一些想法更让人兴奋,而不是质疑这个想法是否值得投入时间。这是一个常见的错误:可能会让你的团队花费一个月的时间才能意识到这个结果几乎没有好处。

 手动检查100个示例并不会花费太长时间。即使你一分钟检查一张图片,你也会在两小时内完成这100个图像。这两个小时可能会节省你一个月的精力。

误差分析指的是检查你的算法在开发集中误分的过程,你能明白导致错误的根本原因。这能帮助你确定项目的优先级—如本例所示—并开启新的方向,我们将在接下来的部分讨论。接下来的几张也会介绍进行误差分析时的最佳实践。

猜你喜欢

转载自blog.csdn.net/lisa_ren_123/article/details/81096146