评估指标AUC、GAUC

本文探讨了AUC和GAUC在机器学习推荐系统中的作用和局限性。AUC衡量整体样本排序能力,但可能因忽略个性化排序而失真;GAUC通过用户级别AUC计算,考虑了点击或展示次数权重,更准确反映模型效果。然而,GAUC在用户行为样本不足时可能出现波动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AUC

在机器学习算法中,很多情况我们都是把auc当成最常用的一个评价指标,而auc反映整体样本间的排序能力,但是有时候auc这个指标可能并不能完全说明问题,有可能auc并不能真正反映模型的好坏。


AUC反映整体样本间的排序能力,表示正样本得分比负样本得分高的概率,对样本不区分用户地计算整体样本的AUC。

线下AUC提升为什么不能带来线上效果提升?  https://zhuanlan.zhihu.com/p/58152702

AUC计算的时候,不仅会涉及同一个用户的不同item,也会涉及不同用户的不同item,而线上排序系统每次排序只针对同一个用户的不同item进行打分。

 

GAUC

GAUC实现了用户级别的AUC计算,在单个用户AUC的基础上,按照点击次数或展示次数进行加权平均,消除了用户偏差对模型的影响,更准确的描述了模型的表现效果:

Ref:https://zhuanlan.zhihu.com/p/88708071

其中权重w既可以是展示次数(impression)也可以是点击次数(clicks)。n是用户数量。

举个很简单的例子,假如有两个用户,分别是甲和乙,一共有5个样本,其中+表示正样本,-表示负样本,我们把5个样本按照模型A预测的score从小到大排序,得到 甲-,甲+,乙-,甲+,乙+. 那么实际的auc应该是 (1+2+2)/(32)=0.833, 那假如有另一个模型B,把这5个样本根据score从小到大排序后,得到 甲-,甲+,甲+,乙-,乙+, 那么该模型预测的auc是(1+1+2)/(32)=0.667.

 那么根据auc的表现来看,模型A的表现优于模型B,但是从实际情况来看,对于用户甲,模型B把其所有的负样本的打分都比正样本低,故,对于用户甲,模型B的auc是1, 同理对于用户乙,模型B的auc也应该是1,同样,对于用户甲和乙,模型A的auc也是1,所以从实际情况来看,模型B的效果和模型A应该是一样好的,这和实际的auc的结果矛盾。

 可能auc这个指标失真了,因为用户广告之间的排序是个性化的,不同用户的排序结果不太好比较,这可能导致全局auc并不能反映真实情况。Ref:https://blog.youkuaiyun.com/hnu2012/article/details/87892368

 

为什么没有用GAUC替代AUC:

GAUC(实现了用户级别的AUC计算),

AUC(反映整体样本间的排序能力,而线上排序系统每次排序只针对同一个用户的不同item进行打分)

由于评估目标的差异,可能导致线下AUC提升了,但是线上CTR没有提升,

我不太理解,按理来讲GAUC 应该好于AUC,为啥不用GAUC? 或则说 GAUC 有啥缺点?

GAUC是单用户的sample求auc以后再平均,但是单用户行为没有那么多的时候,会抖动,大部分公司还是用AUC比较多

 

### 机器学习中的AUC评估指标 #### AUC的概念及其意义 AUC(Area Under Curve)是指ROC曲线下方的面积,这一概念专用于衡量二分类模型的表现[^1]。具体而言,AUC反映了当随机抽取一个正样本和一个负样本时,模型给出前者具有更高预测概率的可能性大小[^2]。 对于不同水平的AUC值所对应的模型性能如下: - **AUC = 1**:意味着这是一个完美的分类器,在任何阈值下均能做出完全正确的预测; - **0.5 < AUC < 1**:表明此分类器优于随机猜测,适当调整决策边界后可获得有价值的预测结果; - **AUC = 0.5**:相当于随机猜测的结果,此时模型不具备实际应用价值; - **AUC < 0.5**:则说明当前模型表现甚至不如随机选择,不过通过反转预测方向反而可以获得较好的效果[^4]。 #### 如何计算AUC? 一种常见的方式是基于梯形法则近似求解积分来估算ROC曲线下的区域面积。另一种方法则是利用Mann-Whitney U统计量直接从数据集中获取两个类别间相对排名差异的信息来进行估计。 以下是Python环境下使用`sklearn.metrics`库函数快速实现AUC计算的例子: ```python from sklearn import metrics import numpy as np # 假设已有真实标签 y_true 和预测得分/概率 y_score y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) fpr, tpr, thresholds = metrics.roc_curve(y_true, y_scores) auc_value = metrics.auc(fpr, tpr) print("The computed AUC value is:", auc_value) ``` 这种方法不仅简化了编程工作量,而且提高了准确性与效率。 #### AUC与其他评价指标的关系 值得注意的是,虽然AUC广泛应用于各类竞赛以及工业界项目之中,但它并非唯一的选择。其他常用的度量还包括Log Loss、Accuracy、Precision等。其中,Log Loss更适合处理那些输出为连续型概率分布的任务;而像Accuracy这样的离散化后的评判标准,则可能因为人为设定的不同阈值得到截然不同的结论[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值