AUC与GAUC的相关知识

本文探讨了GAUC(GroupAUC)在推荐系统中的优势,对比了它与AUC在衡量用户对广告排序能力的区别。文章还分析了AUC在广告推荐中的适用性,以及AUC对负采样的不敏感性,并给出了一个Python实现的AUC计算示例。

1. 什么是GAUC

GAUC (group auc)实际上是计算每个用户的auc,然后加权平均,最后得到group auc,这样能减少不同用户间的排序结果不好比较这一影响。具体公式为
GAUC=∑(u,p)ω(u,p)×AUC(u,p)∑(u,p)ωu,p\text{GAUC}=\frac{\sum_{(u,p)} \omega_{(u,p)} \times \text{AUC}_{(u,p)}}{\sum_{(u,p)}\omega_{u,p}} GAUC=(u,p)ωu,p(u,p)ω(u,p)×AUC(u,p)
这里,权重ωu,p\omega_{u,p}ωu,p可以是每个用户view或者click的次数,而且会过滤掉单个用户全是正样本或负样本的情况。

2. GAUC一些理解

2.1 为什么在推荐中,GAUC要比AUC更适合

auc反映的是整体样本间的一个排序能力,而我们实际要衡量的是不同用户对不同广告之间的排序能力

2.2 如何处理全是正样本 or 全是负样本的样本

计算GAUC的时候要过滤掉单个用户全是正样本或负样本的情况,原因有两个

  • 消偏,提高置信度,其实对于全是负样本或者全为正样本的用户来说,那些数据都属于异常数据了,要么就只看不点,或者一直点的无效用户。
  • 这两种情况的用户AUC没法计算,必须过滤掉,保证每个用户都有一个AUC值。

2.3 为什么对于广告而言,从某种意义上AUC比GAUC要更适用?

广告推荐不能混为一谈,对广告而言,模型对同一个广告不同用户的排序能力才是更重要的,广告服务的是广告主而不是用户,广告主的体验才是决定收入的关键

3. AUC一些理解

3.1 为什么order auc 比 click auc更大?

我们在实际业务中,常常会发现点击率模型的auc要低于购买转化率模型的auc。这是因为,AUC代表模型预估样本之间的排序关系,即正负样本之间预测的gap越大,auc越大

3.2 click 还是order的线上线下差距更大?

order。这是因为,购买决策比点击决策过程长、成本重,且用户购买决策受很多场外因素影响,比如预算不够、在别的平台找到更便宜的了、知乎上看了评测觉得不好等等原因,这部分信息无法收集到,导致最终样本包含的信息缺少较大,模型的离线AUC与线上业务指标差异变大

3.3 为什么AUC对负采样不敏感?

由于AUC对分值本身不敏感,所有常见的正负样本采样,并不会导致AUC的变化。比如在点击预估中,处于计算资源的考虑,有时会对负样本做负采样,采样后并不影响正负样本的顺序分布。
即假设采样是随机的,采样完成后,给定一条正样本,模型预测为score1,由于采样随机,则大于score1的负样本和小于score1的负样本的比例不会发生变化。
但如果采样不是均匀的,比如采用word2vec的negative sample,其负样本更偏向于从热门样本中采样,会发现AUC值会发生剧烈变化。

3.4 对负样本负采样会导致其他评估指标如何变化?

对于准确率、召回率和F1值,

  • 准确率: 负样本下采样相当于只将一部分真实的负例排除掉了,然而模型并不能准确地识别出这些负例,所以用下采样后的样本来评估会高估准确率
  • 召回率: 采样只对负样本采样,正样本都在,所以采样对召回率没什么影响。
  • 两者结合起来,高估F1值.

3.5 一个python写的AUC的例子

def naive_auc(labels, preds):
    M = sum(labels)
    N = len(labels) - M
    combine = [(pred, label) for pred, label in zip(preds, labels)]
    sorted_pred = sorted(combine, key=lambda: x:x[0], reverse=False)
    rank = 0
    for index, tmp in enumerate(sorted_pred):
        pred, label = tmp
        if label == 1:
            rank += index

    return (rank-M*(M+1)/2) / (M*N)

if __name__ == '__main__':
    labels = [0, 1, 0, 1]
    preds = [0.1, 0.15, 0.2, 0.8]
    print(naive_auc(labels, preds))
在使用GAUC(Grouped AUC)评估模型时,若发现GAUC提升但整体AUC下降,这种现象可能源于以下几个原因及相应的解决方法: ### 原因分析 1. **用户组间差异性** GAUC的计算方式是针对每个用户计算AUC,然后根据用户的行为(如点击次数或曝光次数)进行加权平均,这使得GAUC更关注于用户内部的排序能力,而整体AUC则关注全局排序效果。如果某些用户组的排序能力显著提升,但其他用户组的排序能力下降,则可能导致GAUC提升而整体AUC下降。 这种现象可能表明模型在某些用户群体上的表现优化过度,而忽略了其他群体的需求 [^2]。 2. **样本分布不均** 如果训练数据中某些用户的行为样本较多,而其他用户的行为样本较少,模型可能对高频用户的学习效果更好,从而提升其对应的GAUC,但整体AUC可能因低频用户的排序效果不佳而下降。 这种情况常见于推荐系统中,用户的活跃度差异较大,导致模型在不同用户之间的泛化能力不一致 [^3]。 3. **模型过拟合特定用户行为** 模型可能在训练过程中过度适应某些用户的行为模式,导致在这些用户上的排序能力提升,但在整体数据集上的泛化能力下降。这种过拟合现象会使得GAUC上升,而整体AUC下降 [^1]。 4. **评估指标的偏差** GAUC通过加权平均的方式削弱了不同用户之间排序结果的可比性问题,但它可能掩盖了整体排序质量的变化。如果整体AUC下降,说明全局排序效果变差,而GAUC的提升可能仅反映了部分用户的优化效果 [^3]。 --- ### 解决方法 1. **平衡用户权重** 在计算GAUC时,可以调整权重策略,避免某些用户因行为次数多而主导整体指标。例如,可以引入归一化机制,使得每个用户的权重更加均衡,从而减少对高频用户的过度依赖 [^2]。 2. **引入整体AUC作为辅助指标** 在模型优化过程中,除了关注GAUC外,还应同时监控整体AUC的变化。可以通过多目标优化的方法,使得模型在提升GAUC的同时,不牺牲整体AUC的表现 [^1]。 3. **增强模型泛化能力** 通过引入正则化技术(如L2正则化、Dropout)或数据增强方法,提升模型在不同用户群体上的泛化能力。此外,可以采用负采样策略,使得训练数据更接近真实场景,减少模型对特定用户行为的过拟合 [^3]。 4. **分层评估调优** 将用户按活跃度或行为特征进行分层,分别评估不同层次用户的AUCGAUC变化情况。针对表现较差的用户群体进行针对性优化,从而提升整体AUC [^2]。 5. **引入多样性排序策略** 在推荐或搜索场景中,可以引入多样性排序策略,避免模型过度集中于某些用户的行为模式。例如,使用Exploration-Exploitation策略,在排序中引入一定的随机性,提升模型在全局数据上的适应能力 [^1]。 --- ### 示例代码:GAUC计算逻辑 以下是一个简化的GAUC计算示例: ```python import numpy as np from sklearn.metrics import roc_auc_score def calculate_gauc(y_true, y_score, user_ids): unique_users = np.unique(user_ids) gauc = 0.0 total_weight = 0.0 for user in unique_users: idx = (user_ids == user) y_true_user = y_true[idx] y_score_user = y_score[idx] # 过滤掉全为正样本或负样本的用户 if len(np.unique(y_true_user)) < 2: continue auc = roc_auc_score(y_true_user, y_score_user) weight = np.sum(y_true_user) # 可根据点击次数或曝光次数调整权重 gauc += auc * weight total_weight += weight return gauc / total_weight if total_weight > 0 else 0.0 ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值