2.1 进行误差分析(carrying out error analysis)
这一小节我们学习用误差分析来评估某个想法执行的价值。
当我们的算法还未达到人类水平时,人工检查一下算法所犯的错误也许可以让你了解接下来干什么,举个例子,如下图所示:
假设猫分类器准确率为90%,误差为10%,在错误分类的例子中我们发现有上图中的两类狗图片(乍一看觉得是猫),为了让你的猫分类器在狗图上做得更好,你可能会设计一些狗的特有特征,或收集更多关于狗的图片去提高模型性能,但现在问题是需不需要做一个项目专门处理狗的问题,因为这样做可能会花费好几个月,但收效甚微。这样做值得吗?
现在有误差分析(error analysis)这一方法可以让你快速知道这样做到底值不值得。误差分析怎么做呢?
首先,我们需要从开发集或测试集中分错的例子中随机抽取100个,然后数一下分错的例子中有多少个是狗。假设100个中只有5个是狗但被错分为猫,那么即使全部解决狗的问题,也只能解决5个例子,即即使花费了好几个月全部解决狗的问题,也只是将犯错的概率从10%减少到9.5%,虽然你可能觉得这样花时间不值也可能觉得这样做是值得的,但至少误差分析给了你一个上限,即处理狗问题能够改善的算法性能的上限,我们也称其为性能上限(celing of performance)。
我们知道在机器学习中有些人会很鄙视人工操作或使用太多手工洞察(manual insight),但如果你要搭建应用系统,那这个简单的人工统计步骤误差分析,可以为我们节省大量时间,可以让我们迅速决定什么才是最重要的。误差分析用时不长且能告诉我们这个方向的价值,帮你决定是否把未来几个月的时间都用来解决狗图的问题上。
除了评估一个想法,误差分析也可以同时评估好几个想法,这可以提高我们效率,如下图所示:
比如你有几个改善猫分类器的想法,可以建立电子表格来解决这样一个问题,其中行是图片数目,即你要人工观察的图片个数,而列是你要评估的想法,