学会分类是凸显人类智慧的技能之一. 如何使得机器也具备分类能力, 这便是时下机器学习的内容之一. 垃圾邮件识别, 动植物种类判断都属于分类任务. 常见的机器学习分类算法有朴素贝叶斯, 支持向量机, 决策树, 随机森林等. 如何定量地去度量一个算法的好坏呢? 为此, 我们需要引入一些分类的评价指标. 常见的评价指标有: 准确率, 精准率, 召回率, 灵敏度, 特异度,F1-score, AUC
等. 下面以二分类为例:
阳性(客观) | 阴性(客观) | |
阳性(预测) | TP(真阳性) | FP(假阳性) |
阴性(预测) | FN(假阴性) | TN(真阴性) |
表格中的数字表示数量, 记为总体,
准确率Accuracy
预测正确的样本在总体中的占比. 这是最常用的分类评价指标之一. 但是它存在很多局限性,只关注了正确的样本.
精准率Precision
预测为阳性所有样本中真实为阳性的比例.
召回率Recall(灵敏度)
所有真实阳性样本中预测为阳性的比例.
特异Specificity
所有真实阴性样本中预测为阴性的比例.
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表示负例(阴性).
取一组阈值, 依次取一个阈值, 如果分数, 则认为该样本为正例, 反之为负例, 从而计算出对应的Pre和Re, 这样便可以获得一组数对. 根据这一组数对画出的曲线就是PR曲线.
F1-score
PR曲线判断模型不够定量,我们有更常用的F1值:
可以看到F1值就是P和R值的调和平均值的2倍。
上述公式只是在二分类中,我们可以轻易扩展到多分类中。多分类中我们可以使用OneVsRest的策略,判断第类的分类时,把不属于第类的看做另一类,就能对每一类都算出一个值了。使用宏平均(Macro)或者微平均(Micro)来考量多分类的效果。这两者方式计算出的结果有差异.
ROC曲线
ROC曲线的全称是“受试者曲线”,与PR曲线类似。它相比PR曲线能够在样本不均衡的条件下给出更加合理的结果。先看一下ROC的纵轴和横轴:纵轴是TPR,横轴是FPR,对应的计算方式是:
ROC的绘制和PR曲线类似, 取一些阈值, 根据阈值计算出TPR和FPR, 阈值取的越多, 曲线越光滑.
ROC曲线落在[0,1]x[0,1]单位正方形区域中. 越靠近(0,1)表示表示的模型越好, 如何模型A的ROC曲线包住了模型B的ROC曲线, 说明模型A更好.
AUC值
AUC值就是ROC下方的面积. 值越大, 模型越好.