前言
在机器学习和数据科学领域,准确评估分类模型的性能至关重要。而其中一个强大的指标便是 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的计算方法:
一、几何法
-
绘制 ROC 曲线
- ROC 曲线是通过在不同的分类阈值下,以真正例率(True Positive Rate,TPR)为纵坐标,假正例率(False Positive Rate,FPR)为横坐标绘制而成。
- TPR = 真正例数 / 实际正例总数;FPR = 假正例数 / 实际负例总数。
-
计算 AUC
- 将 ROC 曲线下的面积划分为多个小梯形或三角形。
- 对于相邻的两个点 $(x_1,y_1)$ 和 $(x_2,y_2)$,其对应的面积为 $(x_2 - x_1) * (y_1 + y_2) / 2$。
- 依次计算所有相邻点之间的面积并累加,得到 AUC 的近似值。
二、排序法
-
对预测概率进行排序
- 对于二分类问题,假设有 $n$ 个样本,每个样本有一个预测为正例的概率值。
- 将这些样本按照预测概率从大到小进行排序。
-
统计正负样本对
- 依次遍历排序后的样本,对于每个正例样本,统计其前面有多少个负例样本。
- 设正例样本数量为 $p$,负例样本数量为 $n$。
-
计算 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)是一种在特定场景下对模型性能进行评估的指标,尤其是在面对数据存在分组情况时。
计算方法如下:
-
确定分组
- 首先明确数据的分组依据。例如,可以按照用户 ID、时间区间、地理位置等进行分组。
-
计算每组的 AUC
- 对于每个分组,使用传统的 AUC 计算方法(如上述提到的排序法或几何法)计算该组内数据的 AUC 值。
-
计算 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