专栏首页AI派一文读懂二元分类模型评估指标

一文读懂二元分类模型评估指标

推荐阅读时间:10min~12min 文章内容:解读二元分类模型各种评估指标

在分类模型中,有很多关于模型性能的评估指标(evaluation metric),比如 accuracy、precision、recall、f1-score、roc、auc、prc 等等。这里慢慢梳理下这些指标的含义以及用途。

混淆矩阵

介绍这些概念之前先来介绍一个概念:混淆矩阵(confusion matrix)。对于 k 元分类,其实它就是一个k x k的表格,用来记录分类器的预测结果。对于常见的二元分类,它的混淆矩阵是 2x2 的。

假设要对 15 个人预测是否患病,使用 1 表示患病,使用 0 表示正常。预测结果如下:

预测值:

1

1

1

1

1

0

0

0

0

0

1

1

1

0

1

真实值:

0

1

1

0

1

1

0

0

1

0

1

0

1

0

0

将上面的预测结果转为混淆矩阵,如下:

上图展示了一个二元分类的混淆矩阵,从该混淆矩阵可以得到以下信息:

  • 样本数据总共有 5 + 2 + 4 + 4 = 15 个
  • 真实值为 1 并且预测值也为 1 的样本有 5 个,真实值为 1 预测值为 0 的样本有 2 个,真实值为 0 预测值为 1 的样本有 4 个,真实值为 0 预测值也为 0 的样本有 4 个。

二元分类问题可以获得 True Positive(TP,真阳性)、False Positive(FP,假阳性)、 False Negative(FN,假阴性) 和 True Negative(TN,真阴性)。这四个值分别对应二元分类问题的混淆矩阵的四个位置。

小技巧:上面的这四个概念经常会被搞混淆(难道混淆矩阵的名称就是这么来的?),这里有个小方法帮你记住它。在医学上,一般认为阳性是患病,阴性是正常。所以只要出现“阳性”关键字就表示结果为患病,此外,阳性也分为真阳性和假阳性,从名称就可以看出:真阳性表示确确实实的阳性,也就是说实际为阳性(患病),预测也为阳性(患病);假阳性表示不真实的阳性,也就是说实际为阴性(正常),预测为阳性(患病)。真阴性和假阴性也可以按照上面的方式来简单理解。

很明显,这里的 TP=5,FP=2,FN=4,TN=4。

评估指标

说完混淆矩阵后,得到了 TP、FP、FN、TN,通过这四个概念,可以计算出各种评估指标。

普及一些基本概念:有时候“阳性”、“真”、“正类”、“1” 指的是一回事,“阴性”、“假”、“负类”、“0”指的也是一回事。例如模型对这个样本的预测结果为 1,可以认为模型对这个样本的预测结果为真、或者为正类、或者为阳性,实质上说的都是一个意思。

accuracy

accuracy 翻译成中文一般叫准确率,它指的是模型的预测结果中正确的比例。

一般情况下,accuracy 越高,说明模型的效果越好。

precision

precision 翻译成中文一般叫精确率,它指的是模型预测为真,实际也为真的样本数量占模型预测所有为真的样本数量的比例。

一般情况下,precision 越高,说明模型的效果越好。

recall

recall 翻译成中文一般叫召回率,有的地方会叫查全率,它指的是模型预测为真,实际也为真的样本数量占实际所有为真的样本数量的比例。

一般情况下,recall 越高,说明有更多的正类样本被模型预测正确,模型的效果越好。

F1-score

F1-score 也叫 F1 值,它是综合考虑 precision 和 recall 后的结果,并且两者的权重一致。

一般情况下,F1-score 越高,说明模型的效果越好。

Fa-score

Fa-score 是 F1-score 更一般的形式,它表示在生成得分过程中,recall 的权重是 precision 权重的阿尔法倍。

一般情况下,F1-score 越高,说明模型的效果越好。

TPR

TPR 是 True Positive Rate 的缩写,翻译成中文一般叫真阳性率,有的地方会叫 sensitivity(敏感性),说的都是一个意思,它的计算方式与 recall 一样,指的是模型预测为真,实际也为真的样本数量占实际所有为真的样本数量的比例。

一般情况下,TPR 越高,说明有更多的正类样本被模型预测正确,模型的效果越好。

FPR

FPR 是 False Positive Rate 的缩写,翻译成中文一般叫假阳性率,它指的是模型预测为真,实际为假的样本数量占实际所有为假的样本的数量的比例。

一般情况下,FPR 越低,说明有更多的负类样本被模型预测正确,模型的效果越好。

TNR

TNR 是 True Negative Rate 的缩写,翻译成中文一般叫真阴性率,有的地方会叫 specificity(特异性),它指的是模型预测为假,实际也为假的样本数量占实际所有为假的样本数量的比例。

一般情况下,TNR 越高,说明有更多的负类样本被模型预测正确,模型的效果越好。

FNR

FNR 是 False Negative Rate 的缩写,翻译成中文一般叫假阴性率,它指的是模型预测为假,实际为真的样本的数量占实际所有为真的样本的数量的比例。

一般情况下,FNR 越低,说明有更多的正类样本被模型预测正确,模型的效果越好。

ROC

一般说的 ROC (receiver operating characteristic curve) 都是指 ROC 曲线。ROC曲线的纵坐标为 TPR(Talse Positive Rate,真阳性率),横坐标为 FPR(False Positive Rate,假阳性率)。

如何得到 ROC 曲线呢?可以看到,ROC 曲线是由一系列 (FPR, TPR)点构成的,但一个特定的分类器,只得到一个分类结果,即只有一组 (FPR, TPR),如何得到多个呢?

我们都知道,一般分类器预测每个样本时可以输出该样本属于正类(也就是1)的概率值,概率值的范围在 (0-1) 之间,一般阈值(threshold)为 0.5,也就是概率值大于等于 0.5 的认为是正类,否则是负类。现在我们将模型对所有样本的预测值(属于正类的概率值)降序排列,然后依次将预测的概率值作为阈值,每次得到该阈值下模型预测结果为正类、负类的样本数,然后生成一组 (FPR, TPR) 值,这样就可以得到 ROC 曲线上的一点,最后将所有的点连接起来就出现了 ROC 曲线。很明显,阈值设置的次数越多,就会生成更多的 (FPR, TPR) 值,画出的 ROC 曲线也就越光滑。也就是说 ROC 曲线的光滑程度与阈值设置次数的多少有绝对的关系,与样本数量没有必然联系。现实中,我们画出的 ROC 曲线多数都是不光滑的。

来看下 ROC 曲线中的几个特殊点和特殊的线。

  1. 第一个点 (0, 1),即 FPR = 0,TPR = 1,这意味着 FP(假阳性)=0, FN(假阴性)=0,这就是一个完美的分类器,因为能够对所有的样本正确分类。
  2. 第二个点 (1, 0),即 FPR = 1,TPR = 0,这意味着 TN(真阴性)=0, TP(真阳性)=0,这是一个非常糟糕的分类器,因为所有的预测结果都是错误的。
  3. 第三个点 (0, 0),即 FPR = 0,TPR = 0,这意味着 FP(假阳性)=0, TP(真阳性)=0,这说明模型将所有样本都预测为负类。
  4. 第四个点 (1, 1),即 FPR = 1,TPR = 1,这意味着 FN(假阴性)=0, TN(真阴性)=0,这说明模型将所有样本都预测为正类。

通过上面的分析可以得到一个结论:ROC 曲线越靠近左上角,模型性能越好。

特殊的线:y = x,这条线上的所有的点都表示模型的区分能力与随机猜测没有差别。

AUC

AUC(Area Under Curve)被定义为ROC曲线下的面积,很明显,AUC 的结果不会超过 1,通常 ROC 曲线都在 y = x 这条直线上面,所以,AUC 的值一般在 0.5 ~ 1 之间。

AUC 的数值与每个预测概率的数值大小无关,在乎的是每个预测概率的排序。举个例子,随机挑选一个正样本以及一个负样本,分类器对这两个样本进行预测得到每个样本属于正类的概率值,根据概率值对样本进行排序后,正样本排在负样本前面的概率就是 AUC 值。极端情况,如果 AUC = 1,意味着按照模型对所有样本的预测值降序排序后,所有正样本都排在负样本前面。

如果 AUC 小于 0.5,要么是预测标签设置反了,要么是模型效果真的很差。

一般情况下,AUC 值越高,模型效果越好。

PRC

PRC (precision recall curve) 一般指 PRC 曲线,PRC 曲线的纵坐标为 precision,横坐标为 recall。它的生成方式与 ROC 曲线类似,也是取不同的阈值(threshold)来生成不同的坐标点,最后连接起来生成。

来看下一个特殊的点(1, 1),即 recall=1,precision=1,这意味着 FN=0,FP=0,此时分类器模型的效果非常完美。由此可以知道,越靠近右上角,说明模型效果越好。

由于 recall 与 TPR 是一个意思,所以 PRC 曲线的横坐标与 ROC 曲线的纵坐标一样。

选择指标

为什么要出现这么多评估指标呢?实际上,不同的分类任务适合使用不同的指标来衡量。

例如,推荐系统中,如果希望更精准的了解客户需求,避免推送用户不感兴趣的内容,precision 就更加重要;在疾病检测的时候,我们不希望查漏任何一项疾病,这时 recall(TPR) 就更重要。当两者都需要考虑时,F1-score 就是一种参考指标。

真实世界中的数据经常会面临 class imbalance 问题,即正负样本比例失衡,而且测试数据中的正负样本的分布也可能随着时间变化。根据计算公式可以推知,在测试数据出现imbalance 时 ROC 曲线能基本保持不变,而 PRC 则会出现大变化。

作者:无邪,个人博客:脑洞大开,专注于机器学习研究。

本文分享自微信公众号 - 脑洞科技栈(naodong-open)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一份非常全面的机器学习分类与回归算法的评估指标汇总

    读完机器学习算法常识之后,你已经知道了什么是欠拟合和过拟合、偏差和方差以及贝叶斯误差。在这篇给大家介绍一些机器学习中离线评估模型性能的一些指标。

    abs_zero
  • 一份机器学习模型离线评估方法的详细手册

    读完分类与回归算法的评估指标以及排序算法的评估指标之后,你已经知道了机器学习中分类、回归以及排序算法相关的评估指标。在这篇给大家介绍一些机器学习中离线评估模型性...

    abs_zero
  • 解读宽客和量化交易的世界

    本文为带你走入宽客和量化交易的世界,让你对宽客这类人群以及量化交易有一个相对清晰的了解。

    abs_zero
  • 一份非常全面的机器学习分类与回归算法的评估指标汇总

    读完机器学习算法常识之后,你已经知道了什么是欠拟合和过拟合、偏差和方差以及贝叶斯误差。在这篇给大家介绍一些机器学习中离线评估模型性能的一些指标。

    abs_zero
  • 内部分享-聊聊常用的线程模型

    Throwable
  • [AI新知] PyTorch Hub发布内建18种预先训练模型工具

    PyTorch Hub透过API和工作流程,提供开发者基本的模型,来重现机器学习相关的研究,脸书发布内建18种预先训练模型工具,方便重制AI研究

    阿泽
  • MLJ:用纯JULIA开发的机器学习框架,超越机器学习管道

    MLJ是一个用纯Julia编写的开源机器学习工具箱,它提供了一个统一的界面,用于与目前分散在不同Julia软件包中的有监督和无监督学习模型进行交互。

    AiTechYun
  • NLP系列学习:概率图模型简述

    在之前的一段时间里,忙于周围的乱七八糟的事情,在更新了上一期之后自己也很久没有更新,自己也想,如果自己没有用一种良好的心态去回忆总结自己所学的知识,即使花费再多...

    云时之间
  • 深度学习在 CTR 中应用

    推荐系统需要解决两个问题 : 1 . 记忆性,比如通过历史数据知道”麻雀会飞”,”鸽子会飞” ; 2 . 泛化性 : 推断在历史数据中从未见过的情形,”带翅膀的...

    旺仔小小鹿
  • 时间序列预测(中)

    上一篇文章我们介绍的时间预测的方法基本都是通过历史数据直接求平均算出来的的。这一篇讲一些用模型来预测的方法。

    张俊红

扫码关注云+社区

领取腾讯云代金券