[推荐系统]指标之测评
整理下一些常用的评估模型的指标
1 AUC
AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC越接近1.0,检测方法真实性越高;等于0.5时,则真实性最低,无应用价值。
1.1 什么是ROC
这就是一个ROC曲线,其中横轴是FPR,纵轴是TPR。那么就引入了什么是FPR和TPR?
1.2 什么是FPR TPR FNR TNR
如上图所示,因为这是基于二分类进行的,所以其实,AUC只能用在二分类中。
1)伪阳性率(False Positive Rate,FPR):判定为正例却不是真正例的概率,即真负例中判为正例的概率,
2)真阳性率(True Positive Rate,TPR):判定为正例也是真正例的概率,即真正例中判为正例的概率(也即正例召回率)
3)伪阴性率(False Negative Rate,FNR):判定为负例却不是真负例的概率,即真正例中判为负例的概率。
4)真阴性率(True Negative Rate,TNR):判定为负例也是真负例的概率,即真负例中判为负例的概率。
1.3 怎么计算AUC
在一个二分类模型中,
- 对于所得到的连续结果,
- 假设已确定一个阀值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。
- 如果减小阀值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例 的比类,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。
ROC曲线上的每一个点对应于一个threshold,对于一个分类器,每个threshold下会有一个TPR和FPR。比如Threshold最大时,TP=FP=0,对应于原点;Threshold最小时,TN=FN=0,对应于右上角的点(1,1)
第一种计算方法也是淘汰的方法:计算ROC曲线下的面积,可以近似计算ROC曲线一个个小梯形的面积。参考这篇博文
还有2种方法,可以降低代码的复杂度
GAUC
推荐领域使用的CTR(点击率)来作为最终的商用指标,但是在训练推荐模型时,却不用这个指标,用的是GAUC。因为推荐模型目前比较成熟的模式是训练分类模型,这个分类模型的任务是预测用户是否会点击给定的商品,因此,推荐系统的核心,仍然是一个二分类问题,但是是更细力度的二分类,即传统的AUC可以评判二分类,但是推荐领域要算的是对于每个人的二分类结果
auc反映的是整体样本间的一个排序能力,而在计算广告领域,我们实际要衡量的是不同用户对不同广告之间的排序能力,因此实际应该更关注的是同一个用户对不同广告间的排序能力。
GAUC(group auc)实际是计算每个用户的auc,然后加权平均,最后得到group auc,这样就能减少不同用户间的排序结果不太好比较这一影响。实际处理时权重一般可以设为每个用户view或click的次数,而且会过滤掉单个用户全是正样本或负样本的情况
注意
1:在单个用户维度计算AUC时,经常会出现一个用户全部全部为正样本或负样本,这是需要定义AUC的值,全负样本AUC=0,全正样本AUC=1。由于大部分情况下全负样本的用户较多,直接求和得到的gauc会接近样本点击率,因此会剔除全负样本的用户,使用有过点击的用户数据进行计算。
2:在使用有点击用户的数据计算GAUC后,还是可能出现GAUC指标失真的情况。考虑下这种数据分布,全负样本的用户占90%,1次曝光1次点击的用户占9%,多次曝光有过点击的用户占1%。这种情况下,模型可能简单学习到了两类用户,90%的全负样本用户,9%的全正样本用户,剩下1%可以忽略了。这种情况下,按上述GAUC计算方法,剔除90%的全负样本用户,剩下9%的1曝光1点击用户和1%的多次曝光且有点击用户,9%的用户AUC都为1。剩下1%的用户,即是AUC为0,整体的GAUC仍然有0.9。针对这种情况,则需要再将全正样本的用户剔除,这样计算出来的GAUC才能衡量模型的真实效果。
3:上面提到的数据集,直接进行训练,模型大概率是学不到有效排序的。简单粗暴的办法是,剔除全正、全负样本后再训练。这样能模型能学到有效果信息,不过数据量急剧减少,很多id类的参数都没有训练过,会影响模型的泛化效果。另一个方法是对样本的权重进行调整,比如全负样本的权重为0.01,1曝光1点击的样本权重为0.1,其他样本权重为1。这样既能保证学到有效排序信息,模型也见过了所有样本,增强模型的泛化能力。
NDCG
cg
cdg
ndcg
参考文献:
图解AUC和GAUC
GAUC问题排查