当你使用猫咪 app 时注意到一些狗被错误分类为猫的样本,因为这些狗长的太像猫了!
团队中有人建议加入第三方软件来帮助系统更好地处理狗的样本,这需要花费一个月的时间。面对团队成员热情高涨的情绪,你会让他们这样做吗?
在为这个任务花费一个月之前,我建议你预估一下它实际上会提高多少系统的准确率。然后你才能理性地判断是否值得花费这一个月的开发时间,还是使用这段时间做些别的任务更好。
具体而言,你可以做以下事情:
- 获取100个开发集中被误分类的样本,即造成系统误差的样本
- 人为查看这些样本,并计算其中有多少比例是狗的图像
查看误分类样本的这一过程称为 误差分析 (error analysis)。在上面的例子中,如果你发现只有5%的错误分类的图像是狗,那么无论你在狗的问题上做多少改进,最终都不会消除超过原有的5%的误差。换句话说,5%是上述计划能够达到的改进上限(最大可能值)。因此,如果整个系统当前的准确率为90%(对应误差10%),这一改进可能得到最多90.5%的准确率(对应误差下降到9.5%,改进了原来10%误差其中的5%)。
相反,如果你发现50%的误分类图像都是狗,那么你可以更确信加入第三方软件能产生很大的效果。它可以将准确率从90%提升到95%(误差相对减少50%,整体误差从10%降到5%)。
这种简单的误差分析的计算过程能够给你一个快速的方法来评估为“狗”问题加入第三方软件是否值得。它为是否值得进行这项投入给出了一个量化的基准。
误差分析通常会帮你找出不同的想法中哪些更有前景。我见过许多工程师不愿意进行误差分析。相比于质疑这个想法是否值得花时间投入,他们更倾向于直接跳入并实现一个想法。这是一个常见的错误:这可能导致你的团队花费了一个月时间最终却发现收益颇微。
人为检查100个样本并不会花费太长时间。即使你每分钟只看一张图片,也可以在两小时内就完成,而这两个小时可能节省你一个月的开发时间。
误差分析 (Error Analysis) 是指检查开发集中算法错误分类的开发集样本的过程,以便了解造成这些误差的深层原因。这将不仅可以帮助你确定项目优先级(正如上述例子所述),而且还能启发你获得一些关于新的方向的灵感,我们会在后面讨论这些内容。接下来的几个章节还将介绍一些误差分析的最佳实践。