美文网首页
4.machine_learning_eval_metric_a

4.machine_learning_eval_metric_a

作者: 许志辉Albert | 来源:发表于2021-01-22 09:27 被阅读0次

1.机器学习指标ROC与AUC

1.1ROC与AUC

AUC是一种模型分类指标,且仅仅是二分类模型的评价指标。AUC是Area Under Curve的简称,那么Curve就是ROC(Receiver Operating Characteristic),翻译为"接受者操作特性曲线"。

ROC

曲线由两个变量TPR和FPR组成,这个组合以FPR对TPR,即是以代价(costs)对收益(benefits)。

  • x轴为假阳性率(FPR):在所有的负样本中,分类器预测错误的比例

    FPR = \frac {FP}{FP+TN}

  • y轴为真阳性率(TPR):在所有的正样本中,分类器预测正确的比例(等于Recall)

    TPR = \frac {TP}{TP+FN}

为了更好地理解ROC曲线,我们使用具体的实例来说明:

如在医学诊断中,判断有病的样本。那么尽量把有病的揪出来是主要任务,也就是第一个指标TPR,要越高越好。而把没病的样本误诊为有病的,也就是第二个指标FPR,要越低越好。

不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的第一个指标应该会很高,但是第二个指标也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么第一个指标达到1,第二个指标也为1。

我们以FPR为横轴,TPR为纵轴,得到如下ROC空间。

image.png

我们可以看出,左上角的点(TPR=1,FPR=0),为完美分类,也就是这个医生医术高明,诊断全对。点A(TPR>FPR),医生A的判断大体是正确的。中线上的点B(TPR=FPR),也就是医生B全都是蒙的,蒙对一半,蒙错一半;下半平面的点C(TPR<FPR),这个医生说你有病,那么你很可能没有病,医生C的话我们要反着听,为真庸医。上图中一个阈值,得到一个点。现在我们需要一个独立于阈值的评价指标来衡量这个医生的医术如何,也就是遍历所有的阈值,得到ROC曲线。

假设如下就是某个医生的诊断统计图,直线代表阈值。通过改变不同的阈值1.0 \rightarrow 0,从而绘制出ROC曲线。下图为未得病人群(蓝色)和得病人群(红色)的模型输出概率分布图(横坐标表示模型输出概率,纵坐标表示概率对应的人群的数量)。阈值为1时,不管你什么症状,医生均未诊断出疾病(预测值都为N),此时FPR=TPR=0,位于左下。阈值为0时,不管你什么症状,医生都诊断结果都是得病(预测值都为P),此时FPR=TPR=1,位于右上。

image.png

曲线距离左上角越近,证明分类器效果越好。

image.png

如上,是三条ROC曲线,在0.23处取一条直线。那么,在同样的低FPR=0.23的情况下,红色分类器得到更高的PTR。也就表明,ROC越往左上,分类器效果越好。我们用一个标量值AUC来量化它。

AUC

AUC定义:

AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。

AUC = 1,是完美分类器。绝大多数预测的场合,不存在完美分类器。

0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。

AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

注:对于AUC小于0.5的模型,我们可以考虑取反(模型预测为positive,那我们就取negtive),这样就可以保证模型的性能不可能比随机猜测差。

以下为ROC曲线和AUC值的实例:

image.png

AUC的物理意义

AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反应的是分类器对样本的排序能力。

另外值得注意的是,AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价分类器性能的一个原因。

下面从一个小例子解释AUC的含义:小明一家四口,小明5岁,姐姐10岁,爸爸35岁,妈妈33岁建立一个逻辑回归分类器,来预测小明家人为成年人概率,假设分类器已经对小明的家人做过预测,得到每个人为成人的概率。

  1. AUC更多的是关注对计算概率的排序,关注的是概率值的相对大小,与阈值和概率值的绝对大小没有关系

例子中并不关注小明是不是成人,而关注的是,预测为成人的概率的排序。

问题⑪:以下为三种模型的输出结果,求三种模型的AUC。

小明 姐姐 妈妈 爸爸
a 0.12 0.35 0.76 0.85
b 0.12 0.35 0.44 0.49
c 0.52 0.65 0.76 0.85

AUC只与概率的相对大小(概率排序)有关,和绝对大小没关系。由于三个模型概率排序的前两位都是未成年人(小明,姐姐),后两位都是成年人(妈妈,爸爸),因此三个模型的AUC都等于。

  1. AUC只关注正负样本之间的排序,并不关心正样本内部,或者负样本内部的排序。这也体现了AUC的本质:任意个正样本的概率都大于负样本的概率的能力

    例子中AUC只需要保证(小明和姐姐)(爸爸和妈妈),小明和姐姐在前2个排序,爸爸和妈妈在后2个排序,而不会考虑小明和姐姐谁在前,或者爸爸和妈妈谁在前。

    问题⑫:以下已经对分类器输出概率从小到大进行了排列,哪些情况的AUC等于1, 情况的AUC为0(其中背景色表示True value,红色表示成年人,蓝色表示未成年人)。

image.png

D 模型, E模型和F模型的AUC值为1,C模型的AUC值为0(爸妈为成年人的概率小于小明和姐姐,显然这个模型预测反了)。

AUC的计算:

  • 法1:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积(曲线)之和。计算的精度与阈值的精度有关。

  • 法2:根据AUC的物理意义,我们计算正样本预测结果大于负样本预测结果的概率。取n1*n0(n1为正样本数,n0为负样本数)个二元组,比较score(预测结果),最后得到AUC。时间复杂度为O(N*M)。

  • 法3:我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n (n=n0+n1,其中n0为负样本个数,n1为正样本个数),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有n1-1个其他正样本比他score小,那么就有(rank_max-1)-(n1-1)个负样本比他score小。其次为(rank_second-1)-(n1-2)。最后我们得到正样本大于负样本的概率为
    AUC=\frac{\sum_{正样本}{rank(score)}-\frac{{n_1}*({n_1}+1)}{2}}{n_0*n_1}

时间复杂度为O(N+M)。

下面有一个简单的例子:

  • 真实标签为 (1, 0, 0, 1, 0)
  • 预测结果1(0.9, 0.3, 0.2, 0.7, 0.5)
  • 预测结果2(0.9, 0.3, 0.2, 0.7, 0.8))
  • 分别对两个预测结果进行排序,并提取他们的序号
    • 结果1 (5, 2, 1, 4, 3)
    • 结果2 (5, 2, 1, 3, 4)
  • 对正分类序号累加
    • 结果1:\sum_{正样本}{RANK(score)}=5+4=9
    • 结果2: \sum_{正样本}{RANK(score)}=5+3=8
  • 计算两个结果的AUC:
    • 结果1:AUC = \frac{9-\frac{{2}*({2}+1)}{2}}{2*3}=1
    • 结果2:AUC = \frac{8-\frac{{2}*({2}+1)}{2}}{2*3}=0.833

相关文章

网友评论

      本文标题:4.machine_learning_eval_metric_a

      本文链接:https://www.haomeiwen.com/subject/eoknaktx.html