precision、Recall、specificity
- T P i TP_i TPi是指分类i的True Positive;预测为正样本,实际也为正样本的样本数
- F P i FP_i FPi是指分类i的False Positive;预测为正样本,实际为负样本的样本数
- T N i TN_i TNi是指分类i的True Negative;预测为负样本,实际也为负样本的样本数
- F N i FN_i FNi是指分类i的False Negative;预测为负样本,实际为正样本的样本数
精确率(Precision)
P
=
T
P
T
P
+
F
P
P = \frac{TP}{TP + FP }
P=TP+FPTP
召回率(Recall)
R
=
T
P
T
P
+
F
N
R = \frac{TP}{TP + FN }
R=TP+FNTP
准确率(Accuracy)
A
c
c
=
T
P
+
T
N
T
P
+
F
N
+
F
P
+
T
N
Acc = \frac{TP+TN}{TP + FN+FP + TN }
Acc=TP+FN+FP+TNTP+TN
特异性(specificity)
S
=
T
N
F
P
+
T
N
S = \frac{TN}{FP + TN }
S=FP+TNTN
假如有100个样本,其中1个正样本,99个负样本:
- 如果模型的预测只输出0,那么准确率是99%,精确率和召回率为0。
- 如果模型的预测只输出1,那么准确率是1%,精确率为1%,召回率为100%。
- 这时候用哪一个来衡量模型的好坏显然都是不适合的。
- 对于不平衡的二分类问题,F1score和AUC的评价指标更为恰当。
F1score
F1分数可以看作模型准确率和召回率的一种加权平均,最大值是1,最小值是0,值越大意味着模型越好。
F1用来衡量二元分类器性能。 micro F1score和macro F2score用来衡量多元分类器性能。
F1score
F 1 = 2 1 P + 1 R = 2 P ∗ R P + R F_1=\frac{2}{ \frac{1}{P} + \frac{1}{R}}=\frac{2P*R}{P + R} F1=P1+R12=P+R2P∗R参数𝛽衡量PR两者关系 F β = ( 1 + β 2 ) ∗ P ∗ R β 2 ∗ P + R F_\beta = \frac{(1+\beta^2)*P*R}{\beta^2*P + R} Fβ=β2∗P+R(1+β2)∗P∗R如果𝛽>1,召回率有更大影响,如果𝛽<1,精确率有更大影响。当𝛽=1,精确率和召回率影响力相同,和F1形式一样。
macro F1score
假设对于一个多分类问题,有三个类,分别记为1、2、3,
- 分别计算每个类的precision, P i P_i Pi
- 每个类的recall, R i R_i Ri
- 随后计算每个类的F1score:F1,F2,F3
- macro F1score就是: m a c r o F 1 s c o r e = ( F 1 + F 2 + F 3 ) 3 macro F1score=\frac{(F1+F2+F3)}{3} macroF1score=3(F1+F2+F3)
micro F1score
如果这个数据集中各个类的分布不平衡的话,更建议使用mirco-F1,因为macro没有考虑到各个类别的样本大小。
-
micro precision P m i = T P 1 + T P 2 + T P 3 T P 1 + T P 2 + T P 3 + F P 1 + F P 2 + F P 3 P_{mi}=\frac{TP_1+TP_2+TP_3}{TP_1+TP_2+TP_3+FP_1+FP_2+FP_3} Pmi=TP1+TP2+TP3+FP1+FP2+FP3TP1+TP2+TP3
-
micro recall R m i = T P 1 + T P 2 + T P 3 T P 1 + T P 2 + T P 3 + F N 1 + F N 2 + F N 3 R_{mi}=\frac{TP_1+TP_2+TP_3}{TP_1+TP_2+TP_3+FN_1+FN_2+FN_3} Rmi=TP1+TP2+TP3+FN1+FN2+FN3TP1+TP2+TP3
-
则micro F1score为 m i c r o F 1 s c o r e = 2 P m i ∗ R m i P m i + R m i micro F1score=\frac{2P_{mi}*R_{mi}}{P_{mi} + R_{mi}} microF1score=Pmi+Rmi2Pmi∗Rmi
RoC曲线和PR曲线
- 灵敏度(true positive rate ,TPR),所有实际正例中,正确识别的正例比例。和召回率的表达式相同: T P R = T P T P + F N TPR = \frac{TP}{TP + FN } TPR=TP+FNTP
- 特异度(false positive rate, FPR),所有实际负例中,错误识别为正例的比例:
F
P
R
=
F
P
F
P
+
T
N
FPR = \frac{FP}{FP +TN}
FPR=FP+TNFP
- 以TPR为y轴,以FPR为x轴,就得到了RoC曲线。TPR越高,FPR越小,模型和算法就越高效,也就是画出来的RoC曲线越靠近左上越好。RoC曲线下方的面积越大则模型越优,所以RoC曲线下的面积,即AUC(Area Under Curve)值可作为算法和模型好坏的标准。
- 以精确率为y轴,以召回率为x轴,就得到了PR曲线。精确率越高,召回率越高,模型和算法就越高效,也就是画出来的PR曲线越靠近右上越好。