评价分类模型基本上都会用到下面几个基本的术语。我们假设这是一个二分类的问题。分类目标只有两类,被称为正例(positive) 和负例(negative)。在预测问题中,会存在下面几个术语描述相关的结果。
1)True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);
2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
3)False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
4)True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
今天才注意到precison和accuracy是两个东西:
-
precision:精度是精确性的度量,表示被分为正例的示例中实际为正例的比例
precision = TP/(TP+FP) -
recall:召回率,预测样本中实际样本数/预测样本数
Recall=TP/(TP + FN) -
accuracy: 就是被分对的样本数除以所有的样本数,通常来说,正确率越高,分类器越好;
accuracy=(TP+TN)/(P+N)
在scikit-learn中,该评价指标在metrics下的accuracy_score中定义好了计算。
y ^ i \hat{y}_i y^i是第i个样本预测的值, y i y_i yi是相应的真实值。对于有 n s a m p l e s n_{samples} nsamples样本数目下,正确预测的比例按照下面的公式进行计算:
a c c u r a c y ( y , y ^ i ) = 1 n s a m p l e s ∑ i = 0 n s a m p l e s − 1 1 ( y ^ i = y i ) accuracy(y, \hat{y}_i)=\frac{1}{n_{samples}} \sum_{i=0}^{n_{samples}-1} 1(\hat{y}_i=y_i) accuracy(y,y^i)=nsamples1i=0∑nsamples−11(y^i=yi)
此外,还有很多其他的指标:
例如:
-
灵敏度:定义为sensitivity = TP/P=TP/(TP+FN),表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力;敏感性指标又称为真正类率(truepositive rate ,TPR)。
-
另外定义负正类率(false positive rate, FPR),计算公式为:FPR=FP/(FP+TN).负正类率计算的是分类器错认为正类的负实例占所有负实例的比例
-
定义特异性指标为:Specificity=TN/(FP+TN)=1-FPR。特异性指标又称为真负类率(True Negative Rate,TNR)。
[Yolo v4]训练评价
AP, mAP
mAP: Mean Average Precesion:对多个验证集个体求平均AP值。
以precision和recall作为纵,横坐标可以画出二维曲线,称为P-R曲线。通过不同的阈值,能找到对应的精度precision和召回率Recall。总体趋势是,精度越高,召回约底,当召回达到1时,对应概率分数最低的正样本,这个时候正样本数量除以所有大于等于该阈值的样本数量就是最低的精度值。P-R曲线围起来的面积就是AP值。
通常分类器越好,AP越高。
多类目标检测中,每一类都可以根据recall和precision绘制p-r曲线。AP时曲线下的面积,mAP是所有类AP的平均值。
在coco数据集评价指标中,所有的AP默认为mAP。即mAP50=AP50
- Approximated Average precision
∫ 0 1 p ( r ) d r \int_0^1 p(r) dr ∫01p(r)dr
实际上这一种积分是离散的,所以可以通过近似的方式求上述的积分,即
∑ k = 1 N p ( k ) Δ r ( k ) \sum_{k=1}^{N} p(k) \Delta r(k) k=1∑Np(k)Δr(k)
对每一种阈值分别求precision*recall的变化。 - Interpolated average precision
现在很多重要的文章都使用这种方式,并且直接称算出的值为Average Precision 。PASCAL Visual Objects Challenge从2007年开始就是用这一度量制度,他们认为这一方法能有效地减少Precision-recall 曲线中的抖动。所以在比较文章中Average Precision 值的时候,最好先弄清楚它们使用的是那种度量方式。这一新的算法不再使用P(k),也就是说,不再使用当系统识别出k个图片的时候Precision的值与Recall变化值相乘。而是使用:
∑
k
=
1
N
m
a
x
k
~
≥
k
p
(
k
~
)
Δ
r
(
k
)
\sum_{k=1}^{N} max_{\tilde{k } \ge k} p( \tilde{k} ) \Delta r(k)
k=1∑Nmaxk~≥kp(k~)Δr(k)
是每次使用在所有阈值的Precision中,最大值的那个Precision值与Recall的变化值相乘。
IoU
IoU表示为系统预测出来的框与原来图片中标记的框重合程度。
计算方法如下:
I
o
U
=
D
e
t
e
c
t
i
o
n
R
e
s
u
l
t
∩
G
r
o
u
n
d
T
r
u
t
h
D
e
t
e
c
t
i
o
n
R
e
s
u
l
t
∪
G
r
o
u
n
d
T
r
u
t
h
IoU = \frac{DetectionResult \cap Ground Truth }{Detection Result \cup Ground Truth }
IoU=DetectionResult∪GroundTruthDetectionResult∩GroundTruth