人工智能100问 - 5 什么是准确率、召回率、 F 值、 ROC 曲线、 AUC?

时间:2024-03-23 13:59:22

当我们训练好一个模型,如何衡量它的好坏呢?这个时候我们需要一系列的数量化的指标,通过这些指标的高低,对模型的优劣进行判断。

一、准确率和召回率

准确率和召回率是每个模型都会去看的指标。

  • 准确率 = 选出的正确信息条数 / 选出的信息总条数
  • 召回率= 选出正确信息条数 / 样本中的信息条数

举个栗子,我们有100个苹果有90个是好的,10个是坏的。

我们弄了一个算法来找出坏的苹果。我们判断85个是好的,15个是坏的。其中85个好的里面,有2个是坏的;15个坏的里面有7个是好的。

                            人工智能100问 - 5 什么是准确率、召回率、 F 值、 ROC 曲线、 AUC?

那么准确率是多少呢? 准确率= 8/15 = 53.33%

召回率是多少呢? 召回率= 8/10 = 80%

二、F值(F-Score)

我们希望准确率越高越好,同时召回率也越高越好,但事实上这两者在某些情况下有矛盾的。比如极端情况下,我们只选出一个结果,且是准确的,那么准确率就是100%,但是召回率就很低;而如果我们把所有样本都选上,那么召回率是100%,但是准确率就会很低。

如果有一个指标,能综合准确率和召回率就好了,于是就有了F值。

  • F 值= 准确率召回率2/(准确率+召回率)

上面选苹果的例子,F值= 0.53330.82 /(0.5333+0.8) = 63.99%

三、ROC和AUC

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的好坏。

在了解ROC和AUC之前,我们需要先知道一些概念:

针对一个二分类问题,将实例分成正类(postive)或者负类(negative)。但是实际中分类时,会出现四种情况:

  • (1)若一个实例是正类并且被预测为正类,即为真正类(True Postive TP)-

  • (2)若一个实例是正类,但是被预测成为负类,即为假负类(False Negative FN)

  • (3)若一个实例是负类,但是被预测成为正类,即为假正类(False Postive FP)

  • (4)若一个实例是负类,但是被预测成为负类,即为真负类(True Negative TN)

TP:正确的正样本数目
FN:漏报,没有找到本来为正的数目
FP:误报,错误找出的正样本数目
TN:正确拒绝的负样本数目

假设采用逻辑回归分类器,其给出针对每个实例为正类的概率,那么通过设定一个阈值如0.6,概率大于等于0.6的为正类,小于0.6的为负类。
对应的就可以算出一组(FPR,TPR),在平面中得到对应坐标点。随着阈值的逐渐减小,越来越多的实例被划分为正类,但是这些正类中同样也掺杂着真正的负实例,即TPR和FPR会同时增大。阈值最大时,对应坐标点为(0,0),阈值最小时,对应坐标点(1,1)。如下图所示:

                                                    人工智能100问 - 5 什么是准确率、召回率、 F 值、 ROC 曲线、 AUC?

你可以理解为,x轴是我们要付出的代价,而Y轴是我们在付出这个代价的时候,获得的收益。我们希望Y越大越好,X越小越好。

AUC是Area Under roc Curve,也就是处于roc曲线下的面积大小,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的表现。
因为我们如果随机选择,那么就是一条(0,0)到(1,1)的直线,正因为我们做出了许多努力(设计算法、调整参数、吧啦吧啦)所以我们的AUC可以大于0.5,AUC越大,代表我们可以在付出较小的代价的情况下,获得较大收益。