一文读懂Accuracy,precision,recall

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文读懂Accuracy,precision,recall相关的知识,希望对你有一定的参考价值。

参考技术A

首先,需要区分四个概念:TP(True Positive,真阳性),TN(True Negative,真阴性),FP(False Positive,假阳性)以及FN(False Negetive,假阴性)。
举例:有10个人来检测糖尿病,其中1,3,5号有糖尿病,剩下的没有,即1,3,5号为正样本,2,4,6,7,8,9,10为负样本。
我们的糖尿病系统检测结果是,1,3,6号有糖尿病,剩下的没有。

准确率计算了预测正确的样本数,占总样本数的比例:
Accuracy = n_correct / n_total = (TP + TN) / (TP + TN + FP + FN)

考虑模型返回的前N个正样本,

如下图,ac是ROC曲线,bd是P-R曲线,可以看到,ROC曲线的横纵坐标走势是相同的,而P-R曲线则是反着的。
不管是Precision,还是Recall,其实P-R曲线只考虑了正样本(预测对多少个正样本,以及找出来多少正样本),而ROC曲线即考虑了正样本(TPR,找出来多少正样本),也考虑到了负样本(找错了多少负样本)。当正负样本比例发生变化时,P-R曲线的形状会发生较大的变化,而ROC曲线则比较稳定。
因此,ROC曲线能够更加稳定的反映模型本身的好坏,适用于更多的场景。但是,当希望观测到特定数据集上的表现时,P-R曲线则可以更直观的反映其性能。

这个问题困扰我好久了,今天终于搞得差不多了。检测(或者实例分割)中的mAP,也就是mean Average Precision,其实跟二分类的AP很像。不同之处在于,检测结果不仅要给出bounding box,还要给出类别;第二,bounding box跟ground truth的框不可能完全重合,需要定义怎样算预测对了,怎样算预测错了。

从recall=0,到recall=1,将这11个precision加起来求平均,就是这一类的average precision。

所有类的AP平均,得到的就是IoU阈值为0.5的AP,即AP@50。有的地方也把这个值称为mAP,需要看具体语境。

准确率(accuracy)、召唤率(recall)和精确率(precision)

参考技术A

准确率(accuracy)、召唤率(recall)和精确率(precision)的关系

准确率(accuracy)=(TP+TN)/(TP+FN+FP+TN)
通俗解释: 在所有样本中,预测正确的概率

precision和recall都是针对某一类的分类状况来说的。

精确率(precision)=TP/(TP+FP)
通俗解释:预测为正的样本中,真实为正的概率

召回率(recall)=TP/(TP+FN)
通俗解释:真实为正的样本中,预测为正的概率

以上是关于一文读懂Accuracy,precision,recall的主要内容,如果未能解决你的问题,请参考以下文章

常用的评价指标:accuracy、precision、recall、f1-score、ROC-AUC、PR-AUC

如何使用 SVM 找到 Precision、Recall、Accuracy?

目标检测的评价标准mAP, Precision, Recall, Accuracy

准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值)

Accuracy(准确率), Precision(精确率), 和F1-Measure, 结合Spark源码分析

accuracy_score 和precision_score 可以相等吗?