Accuracy(精度)和Error Rate(错误率)
是分类模型中最常见的两种性能度量指标,既适用于二分类任务,也适用于多分类任务。
对于分类模型 f 和大小为 n测试集 D,Accuracy的定义为:
A
c
c
u
r
a
c
y
(
f
;
D
)
=
1
n
∑
i
=
1
n
(
f
(
x
i
)
=
l
a
b
e
l
i
)
Accuracy(f;D)=\frac{1}{n}\sum_{i=1}^n(f(x_i)=label_i)
A
c
c
u
r
a
c
y
(
f
;
D
)
=
n
1
i
=
1
∑
n
(
f
(
x
i
)
=
l
a
b
e
l
i
)
Error Rate的定义为:
E
r
r
o
r
R
a
t
e
(
f
;
D
)
=
1
n
∑
i
=
1
n
(
f
(
x
i
)
≠
l
a
b
e
l
i
)
ErrorRate(f;D)=\frac{1}{n}\sum_{i=1}^n(f(x_i)\not=label_i)
E
r
r
o
r
R
a
t
e
(
f
;
D
)
=
n
1
i
=
1
∑
n
(
f
(
x
i
)
=
l
a
b
e
l
i
)
两者之间存在这样的关系:
A
c
c
u
r
a
c
y
(
f
;
D
)
=
1
−
E
r
r
o
r
R
a
t
e
(
f
;
D
)
Accuracy(f;D)=1-ErrorRate(f;D)
A
c
c
u
r
a
c
y
(
f
;
D
)
=
1
−
E
r
r
o
r
R
a
t
e
(
f
;
D
)
Precision and Recall
Precision(精准度)
和
Recall(召回率)
,它们
仅适用于二分类问题
Precision的定义为:
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
Precision=\frac {TP}{TP+FP}
P
r
e
c
i
s
i
o
n
=
T
P
+
F
P
T
P
Recall的定义为:
R
e
c
a
l
l
=
T
P
T
P
+
F
N
Recall=\frac {TP}{TP+FN}
R
e
c
a
l
l
=
T
P
+
F
N
T
P
recision从预测结果角度出发,描述了二分类器预测出来的正例结果中有多少是真实正例,即该二分类器预测的正例有多少是准确的;Recall从真实结果角度出发,描述了测试集中的真实正例有多少被二分类器挑选了出来,即真实的正例有多少被该二分类器召回。
Precision和Recall通常是一对矛盾的性能度量指标。一般来说,Precision越高时,Recall往往越低。原因是,如果我们希望提高Precision,即二分类器预测的正例尽可能是真实正例,那么就要提高二分类器预测正例的门槛,例如,之前预测正例只要是概率大于等于0.5的样例我们就标注为正例,那么现在要提高到概率大于等于0.7我们才标注为正例,这样才能保证二分类器挑选出来的正例更有可能是真实正例;而这个目标恰恰与提高Recall相反,如果我们希望提高Recall,即二分类器尽可能地将真实正例挑选出来,那么势必要降低二分类器预测正例的门槛,例如之前预测正例只要概率大于等于0.5的样例我们就标注为真实正例,那么现在要降低到大于等于0.3我们就将其标注为正例,这样才能保证二分类器挑选出尽可能多的真实正例。
AP and mAP
那么有没有一种指标表征了二分类器在Precision和Recall两方面的综合性能呢?答案是肯定的。一个比较合理的指标是P-R曲线下面的面的大小,它在一定程度上表征了二分类器在Precision和Recall这两方面的综合性能。
AP
就是
Precision-recall 曲线下面的面积
,通常来说一个越好的分类器,AP值越高
mAP
是多个类别AP的平均值
从上面可以看出:
- Precision和Recall往往是一对矛盾的性能度量指标;
- 提高Precision == 提高二分类器预测正例门槛 == 使得二分类器预测的正例尽可能是真实正例;
- 提高Recall == 降低二分类器预测正例门槛 == 使得二分类器尽可能将真实的正例挑选出来;
- P-R曲线下面的面积表征了二分类器在Precision和Recall这两方面的综合性能;
F1 score and F1 MACRO
F1 score
Precision和Recall是一对矛盾的度量,一般来说,Precision高时,Recall值往往偏低;而Precision值低时,Recall值往往偏高。当分类置信度高时,Precision偏高;分类置信度低时,Recall偏高。为了能够综合考虑这两个指标,F-measure被提出(Precision和Recall的加权调和平均),即:
F
1
=
2
×
P
×
R
P
+
R
F1=2\times\frac {P\times R}{P+R}
F
1
=
2
×
P
+
R
P
×
R
F1的核心思想在于,在尽可能的提高Precision和Recall的同时,也希望两者之间的差异尽可能小。F1-score适用于二分类问题,对于多分类问题,将二分类的F1-score推广,有Micro-F1和Macro-F1两种度量。
Micro-F1
统计各个类别的TP、FP、FN、TN,加和构成新的TP、FP、FN、TN,然后计算Micro-Precision和Micro-Recall,得到Micro-F1。具体的说,统计出来各个类别的混淆矩阵,然后把混淆矩阵“相加”起来,得到一个多类别的混淆矩阵,然后再计算F1score
Macro-F1
我感觉更常用的是Macro-F1。统计各个类别的TP、FP、FN、TN,分别计算各自的Precision和Recall,得到各自的F1值,然后取平均值得到Macro-F1
从上面二者计算方式上可以看出,Macro-F1平等地看待各个类别,它的值会受到稀有类别的影响;而Micro-F1则更容易受到常见类别的影响。
参考:
1.https://zhuanlan.zhihu.com/p/78204581
2.https://cloud.tencent.com/developer/article/1673601