对P, R, ACC, AP, mAP的理解

虽然已经了解了准确率,精准率,召回率,平均精度AP, mAP的概念,但有时经常不用,等到用上的时候,还是会犯湖涂,有点儿混乱,所以索性自己写一个例子。

混淆矩阵 Positive Negative
True

TP, 真正例

预测为正,实际也为正

TN, 真负例

预测为负,实际为负

False

FP, 假正例

预测为正,实际为负

FN, 假负例

预测为负,实际为正

True/False, 不是指样本是正是负,而是指判断是否正确。

例:

假如样本数量100,正样本20,负样本80;现在进行100次预测,预测结果如下:

 TP = 15, FP = 30, TN = 50, FN = 5;

一、

P(Precision),精准率,P = TP / (TP + FP)

怎么理解精准率呢,分母都有P,是站在预测的角度,对于我们关注的正样本而言。

在我们预测为正样本的次数中,预测正确的记为TP(确实是正例,而且预测也为正例);

在我们预测为正样本的次数中,除了TP外,还有预测错误的情况,就是FP(预测正例,但实际并负例);

这么理解就容易了,对于我们关注的正样本,我们预测正确的次数占我们所有预测为正样本次数的比例,就是精准率,对于负样本,我们不关心;

比如我们通过拍片判断某人是否得了癌症,AI去判断的话,那么我们就只是关心有癌症的情况;

对于例题, P = 15 / (15 + 30) = 0.33

二、

R(Recall),召回率,R = TP / (TP + FN)

怎么理解召回率呢,分母TP是预测为正实际也为正,FN是预测为负实际为正,共性就是实际都为正,它是站在样本的角度来看的。

也就是对于我们关心的正样本而言,对于所有的正样本数量,被你判断出来的比例。

例题中,有20个正样本,被你判断出来的TP = 15,还有5个判断错了(FN)

所以R = 15 / 20 = 0.75

Question:

召回率高,准确率为什么会低呢?

我举个特殊情况,方便快速理解。对于例题中的100次预测,如果我全部预测为P,那么TP=20, FP=80, TN=0, FN=0

召回率R = 20 / (20 + 0) = 1,也就是老子瞎猜它全是正的,老子全选C,把所有正样本都找出来了,但是负样本也同样全部被认成是正样本了;

此时,精准率P = 20 / (20 + 80) = 0.2,也就是预测了100次正例,只有20次对了,精准率很低;

Question:

精准率高,召回率为什么会低呢?

我也举个特殊情况,对于例题中的100次预测,如果我全部预测1次为P,99次为N,可能恰好这个P是预测正确的,即TP = 1, FP = 0, TN = 80, FN = 19

那么精准率P = 1 / (1 + 0) = 1, 召回率R = 1 / (1 + 19) = 0.2

也就是我这么预测,对于预测为正的次数中,我是一击即中,再击没有了,做了回一秒真男人,但是总共有20个正样本,我只找出了1个,所以召回率就低了。

还是那句话:

精准率是站在预测的角度,召回率是站在样本的角度

三、

ACC(Accuracy),准确率;

前面精准率,召回率,都是关注点在正样本上,但是对于分类任务来说,预测正确与否,不单单是看正样本,负样本你预测为负,那也是一种正确。

所以,准确率是考虑所有样本,所有预测情况。

ACC = (TP + TN) / (TP + TN + FP + FN) = (15 + 50)/ (15 + 30 + 50  + 5) = 0.65

四、

AP(Average Precision),平均精度

这个写得蛮好,看这个吧

通俗地讲解目标检测中AP指标_目标检测ap_星辰辰大海的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/cicy5219/article/details/130968427
acc