前言

在机器学习和数据科学领域,准确评估分类模型的性能至关重要。而其中一个强大的指标便是 AUC(Area Under the Curve),即曲线下面积。

AUC 主要用于衡量二分类模型的性能。它的计算基于接收者操作特征曲线(ROC 曲线)。ROC 曲线是通过在不同的分类阈值下,绘制真正例率(True Positive Rate,TPR)与假正例率(False Positive Rate,FPR)之间的关系得到的。真正例率表示正确预测为正例的样本占实际正例样本的比例,假正例率则表示错误预测为正例的样本占实际负例样本的比例。

AUC 的值介于 0 到 1 之间。当 AUC 接近 1 时,表明模型能够很好地区分正例和负例,性能优秀。当 AUC 为 0.5 时,相当于随机猜测,模型没有任何分类能力。而当 AUC 接近 0 时,模型的分类效果非常差,但在某些特殊情况下可能会出现这种情况,比如模型完全错误地预测了所有样本的类别。

AUC 的优势在于它不受类别不平衡问题的影响。在实际应用中,数据集中的正例和负例数量往往不平衡,这可能会导致一些传统的评估指标如准确率等产生偏差。而 AUC 考虑了所有可能的分类阈值,综合了模型在不同阈值下的性能表现,因此对于不平衡数据集具有更强的鲁棒性。

此外,AUC 还具有直观的解释性。它可以被理解为随机选择一个正例和一个负例,模型将正例排在负例前面的概率。这个概率越高,说明模型的性能越好。

在实际应用中,AUC 可以帮助我们选择最佳的分类模型。通过比较不同模型的 AUC 值,我们可以确定哪个模型在区分正例和负例方面表现更出色。同时,AUC 也可以用于调整模型的参数,以提高模型的性能。

总之,AUC 是一个非常重要的评估分类模型性能的指标。它具有不受类别不平衡影响、直观解释性强等优点,在机器学习和数据科学领域得到了广泛的应用。在构建和评估分类模型时,我们应该充分考虑 AUC 这个指标,以确保模型的性能和可靠性。

缩略语

TP:true positive 实际为正例,预测为正例

TN:true negative 实际为负例,预测为负例

FP:false positive 实际为负例,预测为正例,又称误报率

FN:false negative 实际为正例,预测为负例,又称漏报率

P/N表示预测为正例或负例。 T/F表示预测是否正确。

公式

ROC曲线

 - 横坐标:FPR(实际负例中预测错误的概率)

 - 纵坐标:TPR(实际正例中预测正确的概率)

AUC计算方法

AUC(Area Under the Curve)即曲线下面积,通常是指ROC曲线(Receiver Operating Characteristic curve,接收者操作特征曲线)下的面积。以下是AUC的计算方法:

一、几何法

  1. 绘制 ROC 曲线

    • ROC 曲线是通过在不同的分类阈值下,以真正例率(True Positive Rate,TPR)为纵坐标,假正例率(False Positive Rate,FPR)为横坐标绘制而成。
    • TPR = 真正例数 / 实际正例总数;FPR = 假正例数 / 实际负例总数。
  2. 计算 AUC

    • 将 ROC 曲线下的面积划分为多个小梯形或三角形。
    • 对于相邻的两个点 $(x_1,y_1)$ 和 $(x_2,y_2)$,其对应的面积为 $(x_2 - x_1) * (y_1 + y_2) / 2$。
    • 依次计算所有相邻点之间的面积并累加,得到 AUC 的近似值。

二、排序法

  1. 对预测概率进行排序

    • 对于二分类问题,假设有 $n$ 个样本,每个样本有一个预测为正例的概率值。
    • 将这些样本按照预测概率从大到小进行排序。
  2. 统计正负样本对

    • 依次遍历排序后的样本,对于每个正例样本,统计其前面有多少个负例样本。
    • 设正例样本数量为 $p$,负例样本数量为 $n$。
  3. 计算 AUC

    • AUC 的计算公式为:$\sum_{i\in 正例} rank(i) - p(p + 1)/2$,其中 $rank(i)$ 表示第 $i$ 个正例样本的排序序号。最后将结果除以 $p * n$。

例如,假设有 5 个样本,预测为正例的概率分别为 0.9、0.8、0.7、0.6、0.5,实际类别分别为正、正、负、负、正。

排序后为:

样本序号 预测概率 实际类别 排序序号
1 0.9 1
5 0.8 2
2 0.7 3
3 0.6 4
4 0.5 5

正例样本序号之和为 $1 + 2 + 5 = 8$,正例样本数量 $p = 3$,则 $p(p + 1)/2 = 3\times(3 + 1)/2 = 6$。负例样本数量 $n = 2$。

AUC = $(8 - 6) / (3\times2) = 2/6 = 1/3$。

需要注意的是,AUC 的值越大,说明模型的分类性能越好,通常 AUC 值在 0.5 到 1 之间。当 AUC 为 0.5 时,相当于随机猜测;当 AUC 接近 1 时,模型能够很好地区分正例和负例。

GAUC计算方法

GAUC(Group AUC,分组 AUC)是一种在特定场景下对模型性能进行评估的指标,尤其是在面对数据存在分组情况时。

计算方法如下:

  1. 确定分组

    • 首先明确数据的分组依据。例如,可以按照用户 ID、时间区间、地理位置等进行分组。
  2. 计算每组的 AUC

    • 对于每个分组,使用传统的 AUC 计算方法(如上述提到的排序法或几何法)计算该组内数据的 AUC 值。
  3. 计算 GAUC

    • 假设总共有 $n$ 个组,第 $i$ 个组的样本数量为 $m_i$,该组的 AUC 值为 $AUC_i$。
    • 则 GAUC 的计算公式为:$GAUC=\frac{\sum_{i = 1}^{n}m_i\times AUC_i}{\sum_{i = 1}^{n}m_i}$。

即先计算每组样本数量与该组 AUC 的乘积之和,再除以总样本数量。

GAUC 的优点在于它考虑了数据的分组特性,能够更准确地反映模型在不同分组情况下的综合性能表现。

AUC 与 GAUC

最近在粗排内积模型中加入了user-bias-net,发现使用用户向量和商品向量的内积分相比logits auc会低不少。经分析,当加入user-bias-net的时候,需要使用gauc去评估才比较合理。

AUC多高才算高

  • https://zhuanlan.zhihu.com/p/24217322

参考