准确率是我们最常见的评价指标,而且很容易理解,就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好。
准确率确实是一个很好很直观的评价指标,但是有时候准确率高并不能代表一个方法(算法)就好。比如某个地区某天地震的预测,假设我们有一堆的特征作为地震分类的属性,类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。为什么99%的准确率的分类器却不是我们想要的,因为这里数据分布不均衡,类别1的数据太少,完全错分类别1依然可以达到很高的准确率却忽视了我们关注的东西。再举个例子说明下。在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc也有 99% 以上,没有意义。因此,单纯靠准确率来评价一个算法模型是远远不够科学全面的。
因此就有了召回率的概念。
在理解召回率前,首先了解一下混淆矩阵。
混淆矩阵
True Positive(真正,TP):将正类预测为正类数
True Negative(真负,TN):将负类预测为负类数
False Positive(假正,FP):将负类预测为正类数误报 (Type I error)
False Negative(假负,FN):将正类预测为负类数→漏报 (Type II error)
那么准确率可以用下面公式表示:
accuracy=TP+TN/(TP+FN+FP+TN)
那么召回率可用下面公式:
recall=TP/(TP+FN)
召回率是覆盖面的度量,度量有多个正例被分为正例。
接下来举个简单的例子理解一下召回率。
比如一个道路科研工作者,他手里有一堆路面的照片(一共100张),其中一些照片中拍摄的路面是正常的(60张),另外一些则是有病害的(40张)。于是他建了一个模型,想用这个模型来自动判别拍摄的照片有没有病害。最终的结果是,60张正常路面图片中50张被识别为正常路面,10张被识别为病害路面,40张病害图像中30张别识别为病害图像,10张被识别为正常图片。该模型重点关注的是多少病害被识别出来,因此使用混淆矩阵进行记录如下:
所以该模型的准确率为:
accuracy=TP+TN/(TP+FN+FP+TN)=(30+50)/100=80%
召回率为:
recall=TP/(TP+FN)=30/(30+10)=75%
大家明白了么?
欢迎关注我的微信公众号:灵隐杂谈