CTR 预测理论(十五):分类评价指标 AUC 总结(优缺点、计算公式推导)

1. AUC

个人复习总结分类评价指标 ROC,AUC 时候,私以为 AUC 作为 CTR 预估常用离线评估指标,有着丰富的含义和特性,现对其含义、优缺点、用途、计算公式推导等做一个盘点。

1.1 什么是AUC

AUC 是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如 logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如 kaggle,那你会发现 AUC 和 logloss 基本是最常见的模型评价指标。

为什么 AUC 和 logloss 比 accuracy 更常用呢?因为很多机器学习的模型对分类问题的预测结果都是概率,如果要计算 accuracy,需要先把概率转化成类别,这就需要手动设置一个阈值,如果对一个样本的预测概率高于这个预测,就把这个样本放进一个类别里面,低于这个阈值,放进另一个类别里面。
所以这个阈值很大程度上影响了 accuracy 的计算。使用 AUC 或者 logloss 可以避免把预测概率转换成类别。

AUC 是 Area under curve 的首字母缩写。AUC 就是 ROC 曲线下的面积,衡量学习器优劣的一种性能指标。
从定义可知,AUC 可通过对 ROC 曲线下各部分的面积求和而得。假定 ROC 曲线是由坐标为 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) , ⋯   , ( x m , y m ) } \{(x_1, y_1), (x_2, y_2), (x_3, y_3), \cdots, (x_m, y_m)\} {(x1,y1),(x2,y2),(x3,y3),,(xm,ym)} 的点按序连接而形成,则AUC可估算为:

A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1} - x_i)(y_i + y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)

1.2 AUC的计算方法:

AUC 的计算方法有多种,从物理意义角度理解,AUC 计算的是 ROC 曲线下的面积

A U C = ∑ i ∈ ( P + N ) ( T P R i + T P R I − 1 ) ∗ ( F P R i − F P R i − 1 ) 2 AUC = \sum_{i \in (P+N)}\frac{(TPR_i + TPR_{I-1})*(FPR_i - FPR_{i-1})}{2} AUC=i(P+N)2(TPRi+TPRI1)(FPRiFPRi1)

对应上文
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC = \frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1} - x_i)(y_i + y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)
横坐标正是 FPR (False Positive Rate),纵坐标是 TPR (True Positive Rate);

从概率意义角度理解,AUC 考虑的是样本的排序质量,它与排序误差有密切关系,可得到计算公式:
A U C = ∑ i ∈ P r a n k i − ∣ P ∣ ∗ ( ∣ P ∣ + 1 ) 2 ∣ P ∣ ∗ ∣ N ∣ AUC = \frac{\sum_{i \in P}rank_i - \frac{|P|*(|P|+1)}{2}}{|P|*|N|} AUC=PNiPranki2P(P+1)

其中,rank 为样本排序位置从 1 开始, ∣ P ∣ |P| P 为正样本数, ∣ N ∣ |N| N 为负样本数。

1.3 两种 AUC 的理解

一般有两大类解释,一种是基于 ROC 线下面积,需要理解混淆矩阵,包括精确率、召回率、F1 值、ROC 等指标的含义。另外一种是基于概率的解释,模型的排序能力。

在参考[1]和[4]中,关于 AUC 定义本身的讨论非常详细,上述两大类都有不同形式的解释。还包括如何用 AUC 做目标去优化,AUC 的各种计算方法,本文不再赘述,有兴趣的同学自己去看下。

2. AUC 指标优点

2.1 AUC的排序特性

对比accuracy、precision等指标,AUC指标本身和模型预测 score 绝对值无关,只关注排序效果,因此特别适合排序业务。

为何与模型预测score值无关为何是很好的特性呢?假设你采用precision、F1等指标,而模型预测的score是个概率值,就必须选择一个阈值来决定哪些样本预测是1哪些是0,不同的阈值选择,precision的值会不同,而AUC可以直接使用score本身,参考的是相对顺序,更加好用。

相对于ROC线下面积的解释,个人更喜欢排序能力的解释。参考[2]的解释通俗易懂:

例如0.7的AUC,其含义可以大概理解为:给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。可以看出在这个解释下,我们关心的只有正负样本之间的分数高低,而具体的分值则无关紧要。

2.2 AUC对正负类样本是否均衡并不敏感

AUC的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器做出合理的评价。 AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价学习器性能的一个原因。

正由于AUC对分值本身不敏感,故常见的正负样本采样,并不会导致auc的变化。比如在点击率预估中,处于计算资源的考虑,有时候会对负样本做负采样,但由于采样完后并不影响正负样本的顺序分布。

即假设采样是随机的,采样完成后,给定一条正样本,模型预测为score1,由于采样随机,则大于score1的负样本和小于score1的负样本的比例不会发生变化。

这点其实从 ROC 曲线表达公式更容易看出:

在众多的机器学习模型中,很多模型输出的是预测概率,而使用精确率、召回率这类指标进行模型评估时,还需要对预测概率设分类阈值,比如预测概率大于阈值为正例,反之为负例。这使得模型多了一个超参数,并且这超参数会影响模型的泛化能力。

在这里插入图片描述

接受者操作特征(Receiver Operating Characteristic, ROC)曲线不需要设定这样的阈值,ROC曲线纵坐标是真正率,横坐标是假正率,如下图,去对应的计算公式为:
真 正 率 ( T r u e   P o s i t i v e   R a t e ) = T P T P + F N = P ( T P ∣ y = 1 ) 真正率(True \ Positive \ Rate) = \frac{TP}{TP+FN} = P(TP|y = 1) (True Positive Rate)=TP+FNTP=P(TPy=1)

假 正 率 ( F a l s e   P o s i t i v e   R a t e ) = F P F P + T N = P ( F P ∣ y = 0 ) 假正率(False \ Positive \ Rate) = \frac{FP}{FP+TN} = P(FP|y = 0) (False Positive Rate)=FP+TNFP=P(FPy=0)

其纵轴、横轴均是条件于真实 label Y的概率的,我们讲这个叫条件概率嘛。那么意思就是说,无论Y的预测概率是多少,都不会影响 TPR 和 FPR。也就是说,这两个 metric 是不会受 imbalanced data 影响的,与之对比, p r e c i s i o n = T P T P + F P = P ( T P ∣ y ^ = 1 ) precision = \frac{TP}{TP + FP} = P(TP|\hat{y} = 1) precision=TP+FPTP=P(TPy^=1)呢,precision 值是基于预测label Y 的概率的,会随着测试集里面的正反比例而变化哦。

3. AUC值本身有何意义

在实际业务中,常常会发现点击率模型的 AUC 要低于购买转化率模型的 AUC。正如前文所提,AUC代表模型预估样本之间的排序关系,即正负样本之间预测的 gap 越大,AUC越大

通常,点击行为的成本要低于购买行为,从业务上理解,点击率模型中正负样本的差别要小于购买力模型,即购买转化模型的正样本通常更容易被预测准。

既然 AUC 的值和业务数据本身有关,那么它的值为多少的时候算好呢?

ROC 曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。

3.2 AUC的意义

通过AUC的定义我们知道了AUC是什么,怎么算,但是它的意义是什么呢。如果从定义来理解AUC的含义,比较困难,实际上AUC和Mann–Whitney U test有密切的联系。

从Mann–Whitney U statistic的角度来解释,AUC就是从所有1样本中随机选取一个样本, 从所有0样本中随机选取一个样本,然后根据你的分类器对两个随机样本进行预测,把1样本预测为1的概率为p1,把0样本预测为1的概率为p0,p1>p0的概率就等于AUC。

AUC是指随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值比分类器输出该负样本为正的那个概率值要大的可能性。

**所以AUC反应的是分类器对样本的排序能力。**根据这个解释,如果我们完全随机的对样本分类,那么AUC应该接近0.5。(所以一般训练出的模型,AUC>0.5,如果AUC=0.5,这个分类器等于没有效果,效果与完全随机一样,如果AUC<0.5,则可能是标签标注错误等情况造成);

另外值得注意的是,AUC的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器做出合理的评价。AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价学习器性能的一个原因。

这个指标尤其适用在某些场景下(如 CTR 预估),每次要返回的是最有可能点击的若干个广告(根据CTR排序, 选择排在前面的若干个),实际上便是在考验模型的排序能力。除此之外,CTR 中存在着样本不均衡的问题,正负样本比例通常会大于 1:100,如果采用 PR 曲线,则会导致 AUC 发生剧变,无法较好反映模型效果。

然而,ROC 曲线不会随着类别分布的改变而改变的优点在一定程度上也是其缺点。因为 ROC 曲线这种不变性其实影响着的是 AUC 值,或者说是评估分类器的整体性能。但是在某些场景下,我们会更关注正样本,这时候就要用到 PR 曲线了。

比如说信用卡欺诈检测,我们会更关注 precision 和 recall,比如说如果要求预测出为欺诈的人尽可能准确,那么就是要提高 precision;而如果要尽可能多地预测出潜在的欺诈人群,那么就是要提高 recall。一般来说,提高二分类的 threshold 就能提高 precision,降低 threshold 就能提高 recall,这时便可观察 PR 曲线,得到最优的 threshold。

此外,AUC和Wilcoxon Test of Ranks等价;AUC还和基尼(Gini)系数有联系,满足 G i n i + 1 = 2 ∗ A U C Gini+1 = 2*AUC Gini+1=2AUC

4. ROC 曲线作用

  1. ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。

  2. 有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。

  3. 可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。

优点:

  1. 该方法简单、直观、通过图示可观察分析方法的准确性,并可用肉眼作出判断。ROC曲线将真正例率和假正例率以图示方法结合在一起,可准确反映某种学习器真正例率和假正例率的关系,是检测准确性的综合代表。

  2. 在生物信息学上的优点:ROC曲线不固定阈值,允许中间状态的存在,利于使用者结合专业知识,权衡漏诊与误诊的影响,选择一个更加的阈值作为诊断参考值。

5. AUC 指标优缺点

AUC 指标的优点:

  1. ROC 曲线具有不随样本比例而改变的良好性质,因此能够在样本比例不平衡的情况下较好地反映出分类器的优劣,AUC 作为 ROC 曲线下面积,也继承了对 ROC 这一优势。
  2. AUC 继承了 ROC 曲线评估指标无需手动设定阈值的优良特性,直接从整体上(离线排序)方面衡量算法的表现。
  3. AUC计算主要与排序有关,所以他对排序敏感,而对预测分数绝对值没那么敏感,对相对值敏感。

AUC指标的不足之处:

  1. 只反映了模型的整体性能,看不出在不同点击率区间上的误差情况;
  2. 只反映了排序能力,关注的是概率值的相对大小,与阈值和概率值的绝对大小没有关系,没有反映预测精度;(简单说,如果对一个模型的点击率统一乘以2,AUC不会变化,但显然模型预测的值和真实值之间的offset扩大了。)
  3. AUC只关注正负样本之间的排序,并不关心正样本内部,或者负样本内部的排序。这也体现了AUC的本质:任意个正样本的概率都大于负样本的概率的能力。

6. AUC计算逻辑不足与改进

AUC计算是基于模型对全集样本的的排序能力,而真实线上场景,往往只考虑一个用户一个session下的排序关系。这里的gap往往导致一些问题。正如参考[3]中的举例的几个case,比较典型。主要包括两点:

  1. 线上会出现新样本,在线下没有见过,造成AUC不足。这部分更多是采用online learning的方式去缓解,AUC本身可改进的不多。
  2. 线上的排序发生在一个用户的session下,而线下计算全集AUC,即把user1点击的正样本排序高于user2未点击的负样本是没有实际意义的,但线下auc计算的时候考虑了它。

阿里在论文:Deep Interest Network for Click-Through Rate Prediction中提出了group auc来处理上述问题。公式如下:
G A U C = ∑ i = 1 n w i ∗ A U C i ∑ i = 1 n w i = ∑ i = 1 n i m p r e s s i o n i ∗ A U C i ∑ i = 1 n i m p r e s s i o n i GAUC = \frac{\sum_{i=1}^{n} w_i * AUC_i}{\sum_{i=1}^{n}w_i} = \frac{\sum_{i=1}^{n} impression_i * AUC_i}{\sum_{i=1}^{n}impression_i} GAUC=i=1nwii=1nwiAUCi=i=1nimpressionii=1nimpressioniAUCi

即以 user 为 group,在对 user 的 impression 做加权平均。

AUC 这个问题是在模型优化到一定程度才需要考虑的。大部分情况下,如果模型的auc有大幅提升,线上效果一般是一致的。如果不一致,请先从产品形态去思考有没有坑。

7. 关于AUC计算公式推导

7.1 基本公式推算

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

换言之,就是随机拿出一个正样本和一个负样本,正样本的预测结果比负样本预测结果大的概率——如果我们把所有的正样本和负样本都比较一遍,假设正样本 n 0 n_0 n0 个,负样本 n 1 n_1 n1 个,那么一共就有 n 0 ∗ n 1 n_0 * n_1 n0n1 种比较的式子,设其中共有 m m m 个正样本比负样本的预测结果大,那么 A U C = m n 0 ∗ n 1 AUC = \frac{m}{n_0 * n_1} AUC=n0n1m。 (可以参考概率论中的古典概型)
如图:

在这里插入图片描述

比如上图所示的就是一个分类良好的序列,红色部分全都比蓝色部分要小。 因此这一幅图中的所有情况就是:

  • 0.72 > 0.2 → \rightarrow True
  • 0.72 > 0.45 → \rightarrow True
  • 0.72 > 0.6 → \rightarrow True
  • 0.81 > 0.2 → \rightarrow True
  • 0.81 > 0.45 → \rightarrow True
  • 0.81 > 0.6 → \rightarrow True

所以: A U C = 6 6 = 1 AUC = \frac{6}{6} = 1 AUC=66=1

在这里插入图片描述

而下面这张图表示的序列就不是很好,有一个蓝色的部分被估值为0.51,放到了红色的0.55的左边,我们同样可以算出这种情况下的AUC:

  • 0.51> 0.01 → \rightarrow True
  • 0.51 > 0.13 → \rightarrow True
  • 0.51 < 0.55 → \rightarrow False
  • 0.77 > 0.01 → \rightarrow True
  • 0.77 > 0.13 → \rightarrow True
  • 0.77 > 0.51 → \rightarrow True

所以: A U C = 5 6 AUC = \frac{5}{6} AUC=65

7.2 基于排名的公式推算

我们可以看出,如果按照基本公式推算的话,所有的的正样本都要和所有的负样本进行比较,也就是会有次计算,这很显然是不划算的。不过我们可以用基于排名的计算方式来进行替代。
我们先假设所有的样本都是分类良好的,如下图所示:

在这里插入图片描述

那我们就能知道,位于第 4 位的 Score 为 0.72 的蓝色样本,应该大于 3 个红色样本;同理,位于第 5 位的 Score 为 0.81 的蓝色样本也应该大于 3 个红色样本。我们还能发现 4 − 1 = 3 4 - 1 = 3 41=3 5 − 2 = 3 5 - 2 = 3 52=3。这并不是偶然,对于第 4 个样本来说,除了自己占的一位,前面就都是红色样本了,因此自己的排名减去 1 就是它大于的红色样本数量了——而对于第五个样本,它则需要刨除自己和前面的一个蓝色样本的位子,也就是 3,剩下的猜都是红色样本。因此我们把这个样本推广到 n 1 n_1 n1 个正样本的情况,设有 m 0 m_0 m0 个多余的情况需要被剪掉,也就得到:
m 0 = 1 + 2 + 3 + ⋯ + n 1 = n 1 ∗ ( n 1 + 1 ) 2 m_0 = 1 + 2 + 3 + \dots + n_1 = \frac{n_1 * (n_1 + 1)}{2} m0=1+2+3++n1=2n1(n1+1)
上面这个式子在并没有分好的样本中也是适用的,如下图:

在这里插入图片描述

0.51 前面有两个负样本,而 0.77 前面有三个负样本,而他们的排名分别是 3 和 5,,而 2 + 3 == 3 + 5 - (1 + 2),因此我们设所有正样本的排名之和为 ∑ 正 样 本 r a n k ( s c o r e ) \sum_{正样本} rank(score) rank(score),需要剪掉的情况则是 m 0 = n 1 ∗ ( n 1 + 1 ) 2 m_0 = \frac{n_1 * (n_1 + 1)}{2} m0=2n1(n1+1),所有的情况共有 n 0 ∗ n 1 n_0 * n_1 n0n1 种,故:
A U C = ∑ 正 样 本 r a n k ( s c o r e ) − n 1 ∗ ( n 1 + 1 ) 2 n 0 ∗ n 1 AUC = \frac{\sum_{正样本} rank(score) - \frac{n_1 * (n_1 + 1)}{2}}{n_0 * n_1} AUC=n0n1rank(score)2n1(n1+1)
在上图中:
A U C = 3 + 5 − 2 ∗ ( 2 + 1 ) 2 3 ∗ 2 = 0.833 AUC = \frac{3 + 5 - \frac{2 * (2 + 1)}{2}}{3 * 2} = 0.833 AUC=323+522(2+1)=0.833

注:这个排名是从小到大排序的,即正样本预测越准,排名越高。要注意上述排序顺序,第一名排序时5!

7.3 西瓜书公式推导

西瓜书以曲线下面积进行计算 AUC 值,AUC(area under Roc curve) 即 ROC 曲线下的面积。

从定义可知,AUC 可通过对 ROC 曲线下各部分的面积求和而得。假设 ROC 曲线是由坐标 ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) {(x_1, y_1), (x_2, y_2), \dots, (x_m, y_m)} (x1,y1),(x2,y2),,(xm,ym) 的点按序连接而形成 ( x 1 = 0 , x m = 1 x_1 = 0, x_m = 1 x1=0,xm=1),参见图 2.4(b),则 AUC 可估算为:
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC = \frac{1}{2} \sum_{i=1}^{m-1} (x_{i+1} - x_i) (y_i + y_{i+1}) AUC=21i=1m1(xi+1xi)(yi+yi+1)
形式化地看,AUC 考虑的是样本预测的排序质量,因此它与排序误差有紧密联系,给定 m + m^{+} m+ 个正例和 m − m^{-} m 个反例,令 D + D^{+} D+ D − D^{-} D 分别表示正、反例集合,则排序 ”误差“ (loss) 定义为:
ℓ r a n k = 1 m + m − ∑ m + ∈ D + ∑ m − ∈ D − ( I ( f ( x + ) < f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) \ell_{rank} = \frac{1}{m^{+}m^{-}} \sum_{m^+ \in D^+} \sum_{m^- \in D^-} (I(f(x^+) < f(x^-)) + \frac{1}{2}I(f(x^+) = f(x^-))) rank=m+m1m+D+mD(I(f(x+)<f(x))+21I(f(x+)=f(x)))
即考虑每一对正负例,若正例的预测值小于反例,则记一个“罚分”,若相等,则记 0.5 个“罚分”。容易看出, ℓ r a n k \ell_{rank} rank 对应的是 ROC 曲线之上的面积:若一个正例在 ROC 曲线上对应标记点的坐标为 (x,y),则 x 恰是排序在其之前的反例所占的比例,即假正例率,因此有:
A U C = 1 − ℓ r a n k = 1 m + m − ∑ m + ∈ D + ∑ m − ∈ D − ( I ( f ( x + ) > f ( x − ) ) + 1 2 I ( f ( x + ) = f ( x − ) ) ) AUC = 1-\ell_{rank} = \frac{1}{m^{+}m^{-}} \sum_{m^+ \in D^+} \sum_{m^- \in D^-} (I(f(x^+) > f(x^-)) + \frac{1}{2}I(f(x^+) = f(x^-))) AUC=1rank=m+m1m+D+mD(I(f(x+)>f(x))+21I(f(x+)=f(x)))

西瓜书推导公式其本质与基于排名推导公式都是一样的,分母均为正负样本组合情况之和: m + m − m^+ m^- m+m,分子均是正样本排在负样本前面的情况之和(模型预测值相等时候,除2),西瓜书表达更直接,基于排名公式做了进一步简化计算推导。

但两者都可以看做是基于公式推导的具体化:假设正样本 n 0 n_0 n0 个,负样本 n 1 n_1 n1 个,那么一共就有 n 0 ∗ n 1 n_0 * n_1 n0n1 种比较的式子,设其中共有 m m m 个正样本比负样本的预测结果大,那么 A U C = m n 0 ∗ n 1 AUC = \frac{m}{n_0 * n_1} AUC=n0n1m

参考文献

[1] CTR 预测理论(二):机器学习分类模型评价指标详述

[2] 乱弹机器学习评估指标AUC

[3] 如何理解机器学习和统计中的AUC?

[4] 多高的AUC才算高

[5] 线下AUC提升为什么不能带来线上效果提升?–测试和评估的一些真相

[6] 精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

[7] 如何解决离线auc和线上点击率不一致的问题?

  • 18
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值