学会分类是凸显人类智慧的技能之一. 如何使得机器也具备分类能力, 这便是时下机器学习的内容之一. 垃圾邮件识别, 动植物种类判断都属于分类任务. 常见的机器学习分类算法有朴素贝叶斯, 支持向量机, 决策树, 随机森林等. 如何定量地去度量一个算法的好坏呢? 为此, 我们需要引入一些分类的评价指标. 常见的评价指标有: 准确率, 精准率, 召回率, 灵敏度, 特异度,F1-score, AUC
等. 下面以二分类为例:
阳性(客观) | 阴性(客观) | |
---|---|---|
阳性(预测) | TP(真阳性) | FP(假阳性) |
阴性(预测) | FN(假阴性) | TN(真阴性) |
表格中的数字表示数量, 记 N N N为总体, N = T P + F P + F N + T N . N=TP+FP+FN+TN. N=TP+FP+FN+TN.
准确率Accuracy
预测正确的样本在总体中的占比. 这是最常用的分类评价指标之一. 但是它存在很多局限性,只关注了正确的样本.
A
c
c
=
T
P
+
T
N
N
Acc=\frac{TP+TN}{N}
Acc=NTP+TN
精准率Precision
预测为阳性所有样本中真实为阳性的比例.
P
r
e
=
T
P
T
P
+
F
P
Pre=\frac{TP}{TP+FP}
Pre=TP+FPTP
召回率Recall(灵敏度)
所有真实阳性样本中预测为阳性的比例.
R
e
=
T
P
T
P
+
F
N
Re=\frac{TP}{TP+FN}
Re=TP+FNTP
特异Specificity
所有真实阴性样本中预测为阴性的比例.
S
p
e
=
T
N
F
P
+
T
N
Spe=\frac{TN}{FP+TN}
Spe=FP+TNTN
PR曲线
PR曲线是纵坐标为Precision, 横坐标为Recall的一条曲线. 它的绘制过程如下:
样本 | 真实类别 | 分数 | 样本 | 真实类别 | 样本 |
---|---|---|---|---|---|
1 | p | 0.9 | 11 | p | 0.4 |
2 | p | 0.8 | 12 | n | 0.39 |
3 | n | 0.7 | 13 | p | 0.38 |
4 | p | 0.6 | 14 | n | 0.37 |
5 | p | 0.55 | 15 | n | 0.36 |
6 | p | 0.54 | 16 | n | 0.35 |
7 | n | 0.53 | 17 | p | 0.34 |
8 | n | 0.52 | 18 | n | 0.33 |
9 | p | 0.51 | 19 | p | 0.3 |
10 | n | 0.505 | 20 | n | 0.1 |
p表示正例(阳性), n表示负例(阴性).
取一组阈值, 依次取一个阈值 t t t, 如果分数 s c o r e > t score>t score>t, 则认为该样本为正例, 反之为负例, 从而计算出对应的Pre和Re, 这样便可以获得一组数对 { P r e i , R e i } \{Pre_i, Re_i\} {Prei,Rei}. 根据这一组数对画出的曲线就是PR曲线.
F1-score
PR曲线判断模型不够定量,我们有更常用的F1值:
F
1
=
2
P
R
P
+
R
F1=\frac{2PR}{P+R}
F1=P+R2PR
可以看到F1值就是P和R值的调和平均值的2倍。
上述公式只是在二分类中,我们可以轻易扩展到多分类中。多分类中我们可以使用OneVsRest的策略,判断第
i
i
i类的分类时,把不属于第
i
i
i类的看做另一类,就能对每一类都算出一个
F
i
F_i
Fi值了。使用宏平均(Macro)或者微平均(Micro)来考量多分类的效果。这两者方式计算出的结果有差异.
M
a
c
r
o
F
1
=
1
N
∑
i
=
1
N
F
i
,
M
i
c
r
o
F
1
=
2
∑
i
=
1
N
P
i
R
i
∑
i
=
1
N
(
P
i
+
R
i
)
Macro_{F1}=\frac{1}{N}\sum_{i=1}^{N}F_i, \quad Micro_{F1}=\frac{2\sum_{i=1}^{N}P_iR_i}{ \sum_{i=1}^{N}(P_i+R_i) }
MacroF1=N1i=1∑NFi,MicroF1=∑i=1N(Pi+Ri)2∑i=1NPiRi
ROC曲线
ROC曲线的全称是“受试者曲线”,与PR曲线类似。它相比PR曲线能够在样本不均衡的条件下给出更加合理的结果。先看一下ROC的纵轴和横轴:纵轴是TPR,横轴是FPR,对应的计算方式是:
T
P
R
=
T
P
T
P
+
F
N
,
F
P
R
=
F
P
F
P
+
T
N
TPR=\frac{TP}{TP+FN}, \quad FPR=\frac{FP}{FP+TN}
TPR=TP+FNTP,FPR=FP+TNFP
ROC的绘制和PR曲线类似, 取一些阈值, 根据阈值计算出TPR和FPR, 阈值取的越多, 曲线越光滑.
ROC曲线落在[0,1]x[0,1]单位正方形区域中. 越靠近(0,1)表示表示的模型越好, 如何模型A的ROC曲线包住了模型B的ROC曲线, 说明模型A更好.
AUC值
AUC值就是ROC下方的面积. 值越大, 模型越好.