XDRush

AUC及其理解

1 背景说明

在互联网精准广告中,可以从多个角度来评估一个CTR模型的性能,但通常以AUC作为模型评估的最直接指标,直观上讲,AUC是从排序能力的角度来对模型进行评估。下面将详细解释AUC的含义及其计算方式,

2 ROC含义及其说明

2.1 ROC曲线理解

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器的优劣,分类器算法,常用的评价指标主要有precision,recall,F-score;
一个典型的ROC曲线如下图所示:

ROC曲线的横坐标为false positive rate(FPR),纵坐标为true positive rate(TPR),下面详细说明FPR和TPR是如何定义的:

TP:预测是正的样本,实际上也是正的样本
TP:预测是正的样本,实际上是负样本
FN:预测是为负样本,实际上是正样本
TN:预测是为负样本,实际上也是负样本
正确率:测试出来准确的正样本/所有的正样本:TP/(TP + FP)
召回率:测试出来正确的正样本/所有的正样本:TP/(FP + FN)

TPR:true positive rate,TPR = TP / (TP + FN),表示预测为正的正确结果TP在所有正样本T中的占比,显然TPR越大,模型的预估能力更好;
FPR:false positive rate,FPR = FP / (FP + TN),表示预测为正的错误结果FP在所有负样本F中的占比,显然FPR越大,模型的预估能力越差;

接下来,我们考虑ROC曲线上的四个点和一条线:
1.第一个点(0, 1),即FPR = 0, TPR = 1,这意味着,FN = 0,并且FP = 0,这是一个完美的分类器,将所有的样本都正确分类;
2.第二个点(1, 0),即FPR = 1, TPR = 0,这意味着,TP = 0,并且FN = 0,这是一个最糟糕的分类器,因为它成功避开了所有的正确答案;
3.第三个点(0, 0),即FPR = 0, TPR = 0,这意味着,TP = 0, FP = 0,这意味着,分类器将所有的样本都预测为负样本;
4.第四个点(1, 1)即FPR = 1, TPR = 0,这意味着,FN = 0, TN = 0,也就是分类器将分类器将所有的样本都预测为正样本;
经过以上分析,我们可以断定,ROC曲线越接近左上角,分类器的性能越好

下面考虑ROC曲线y=x上的点。这条对角线上的点其实表示的是一个采用随机猜测策略的分类器结果,例如(0.5, 0.5),即TP = FN, FP = TN,表示该分类器随机对于一半的样本猜测为正样本,另外一半的样本为负样本。

这里需要思考一个问题:
给一堆训练样本,那么得到一个分类结果,得到FPR和TPR,那么对应的是ROC上的一个点,ROC曲线是如何获取的呢?
Wikipedia上是这么解释的:
In signal detection theory, a receiver operating characteristic (ROC), or simply ROC curve, is a graphical plot which illustrates the performance of a binary classifier system as its discrimination threshold is varied.
这里的关键在于“as its discrimination threshold is varied”,如何理解?我们忽略了分类器的一个重要功能“概率输出”,即表示分类器某个样本具有多大的概率属于正样本(或者负样本),这里应该对分类器判断为正样本的概率阈值进行一定的调整,获得多组坐标点数据,进而得到ROC曲线。

2.2 ROC曲线绘制

假设模型M对样本进行预测,当预测值大于阈值r时,采用下面的函数来预测最后的结果:

然后,对每一个r,模型对所有的样本预测一遍,计算所得到的TPR和FPR,对所有的点(FPR, TPR)在ROC图上进行标注就可以得到ROC曲线,AUC就是指ROC曲线下方的面积。举一个例子来说明,下表中有10个样本,5个正样本,5个负样本,即T = 5, F = 5,

第一列表示模型M对样本的打分,第二列表示样本实际为正/负样本,我们让r从正无穷逐渐减小到负无穷,对每一个区间的r计算(FPR,TPR),计算结果如下:

由上表绘制ROC曲线如下:
ROC曲线绘制

以上就是ROC曲线的含义及其绘制步骤。

3 AUC计算及其理解

3.1 AUC计算

(1)方法一:计算ROC面积法
由上文所述,AUC即为ROC曲线下方的面积,按梯形法计算上图的面积为0.62。

(2)方法二:随机抽选正负样本对法
在所有标注样本中,正样本共有T个,负样本共有F个,如果随机抽取一个正样本和负样本,共有TF个pair,其中如果有s个pair的正样本pair满足正样本的score高于负样本(权重为1),v个pair的正负样本score相同(权重为0.5),则AUC就等于:
(s + 0.5
v) / (T F)
上例中,s = 15, v = 1,则AUC = ( 15 + 1
0.5) / (5 * 5),和梯形法计算结果一致。
整体上对于一个样本pair:的权重Wij的计算如下:
AUC权重计算

s(i)和s(j)分别表示正样本和负样本的score。

(3)方法三:排序求和法
上面提到了两种计算AUC的方法,一种梯形法,另一种权重法,然而这两种方法在单机上计算复杂度比较高,下面这种方式计算AUC比较简单:
我们可以将所有样本按升序排好后,通过样本的序号(或者是排序位置,从1开始)rank来计算,计算公式如下:
AUC = ((所有正样本的rank相加) - T(T + 1)/2) / (T F)
对相等score的样本,需要赋予相同的rank,即把所有这些score相等的样本的rank和取平均值。
上表中结果重新排序如下:
样本排序

所有正样本的rank相加 = 10 + 9 + (5 + 6) /2 + 4 + 2 = 30.5,注意5和6由于score相同,需要均分rank和。
AUC = (30.5 - 5 6 / 2) / (5 5) = 0.62

3.2 AUC理解

上例中给出了10个样本,其中5个正样本5个负样本,1表示样本发生了click,0表示样本有曝光但是没有被click,score表示样本的预估ctr(pCtr),我们的期望是我们的预估的ctr高的广告,其实际应该有click,这样就说明我的预估是有效且准确的,当然没有click发生也是可以理解,预估目前还做不到100%的准确。也就是说,被点击的样本预估的pCtr应该要高于没有被点击的样本,当所有被点击的样本pCtr都要大于未被点击的样本pCtr时,模型是最优的,当然这只是理想情况。

理想的排序能力是按照pCTR进行预估降序排列后,所有的正样本都排在负样本的前面,即预估会排在前面的广告都会被click,模型优化的目标就是朝这个理想目标靠拢。

AUC的值不会大于1,又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围一般在0.5到1之间。使用AUC作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。而且ROC越靠近左上角越好,对应着AUC面积越大越好。

先AUC是一个概率值,当随机挑选一个正样本以及一个负样本时,当前的分类器根据计算得到的score值将这个正样本排在负样本前面的概率就是AUC值。当然AUC越大,当前的分类算法越有可能将正样本排在负样本前面,即能够更好的分类。

为什么使用ROC?既然有这么多评价标准,为什么还要用ROC和AUC呢?因为ROC有个很好的特性:当测试机中的正负样本分布变化的时候,ROC曲线能够保持不变。
在实际的数据集中,经常会出现类不平衡现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。