前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【基础】推荐系统常用评价指标Recall、NDCG、AUC、GAUC

【基础】推荐系统常用评价指标Recall、NDCG、AUC、GAUC

作者头像
秋枫学习笔记
发布2022-09-19 11:45:39
2.2K0
发布2022-09-19 11:45:39
举报

本文主要和大家分享推荐系统中的常用评价指标,包括NDCG,Recall,AUC,GAUC等。

混淆矩阵用于反映预测和真实的对应样本数,例如TP反映预测为真的样本也是正样本的样本数。

正样本

负样本

预测为真

TP

FP

预测为假

FN

TN

公式表格太长可以左右滑动哦!

1. 召回阶段

1.1 Recall

召回率(Recall)是推荐系统在召回阶段常用的评价指标。在其他领域我们也经常会看到Recall作为评价指标,其含义为在正样本中有多少被预测为真

recall=\frac{TP}{TP+FN}

。那么在推荐系统中,我们通常可以通过

recall_u=\frac{|R(u)\cap T(u)|}{|T(u)|}

。其中u为用户,R(u)为模型预测出的需要推荐的item的集合,T(u)表示真实的测试集中被推荐的集合。对每一个用户求得recall后求平均就可以得到整个数据集上的recall。

1.2 Precision

Precision的含义为预测为真的样本中有多少为正样本

Prec=\frac{TP}{TP+FP}

。在推荐系统中可以计算为

Prec_u=\frac{|R(u)\cap T(u)|}{|T(u)|}

。对每个用户求得prec后求平均就可以得到整个数据集上的prec。

1.2 NDCG

这个评价指标名为Normalized Discounted cumulative gain直接翻译为归一化折损累计增益。它有一些前辈,我们先来介绍一下他的前辈们,然后再来介绍NDCG。

1.2.1 CG

cumulative gain(CG)可翻译为累积增益,该评价指标只考虑相关性而没有考虑位置的影响。其计算方式也比较简单,对搜索相关性进行求和,公式如下,在推荐系统中,

rel_i

表示第i个位置的item是否是用户喜欢的,喜欢为1,否则为0。CG只能反映总体情况,即反映该页面中推荐的所有item的总分是好是坏。

CG=\sum_{i=1}^{p}{rel_i}

1.2.2 DCG

discounted CG简称为DCG,这对CG的问题,DCG的计算方式考虑了位置因素。例如,被推荐的item排在第1位和排在第10位,他们的影响力是不同的,肯定是第1位的影响力更大。因为用户进去第一眼就能看到第1位的item。计算公式如下,第1位不需要衰减,而随着位次不断靠后,其影响力也不断减弱。

DCG=rel_1+\sum_{i=2}^{p}{\frac{rel_i}{log_2 i}}

还有一种计算DCG常见的公式,如下式所示:

DCG=\sum_{i=1}^{p}{\frac{2^{rel_i}-1}{log_2(i+1)}}

1.2.3 NDCG

ok,千呼万唤始出来,终于来到我们的主角了。搜索结果,或者召回结果,推荐结果等,这些结果是一个集合,对于不同的关键词,或者不同的用户系统返回的结果数量是不同的。而上面的CG和DCG他们只是单纯的进行求和,无法进行不用用户之间的对比,因此需要对其进行标准化,从而诞生了NDCG。这里对DCG进行标准化的方式是对其处以IDCG,公式如下:

NDCG=\frac{DCG}{IDCG}
IDCG=\sum_{i=1}^{|REL|}{\frac{2^{rel_i}-1}{log_2(i+1)}}

其中REL表示将原始的召回集合R按照得分从大到小排序后的集合,将排序后的集合计算DCG得到IDCG。标准化后得到的NDCG是一个相对值,从而使得即使不同的用户之间可以进行比较。IDCG表示的是召回的集合中的item用户都喜欢的最理想情况。所以IDCG中的分子部分其实都是1。

2. 排序阶段

2.1 AUC

AUC(area under Curve),是ROC曲线下的面积,具体概念这里不赘述了。AUC能反映模型的排序能力,他反应的是一个相对性,即item a排在item b之前的能力;但是它不反应绝对性,例如,0.9排在0.1前面和0.5排在0.1前面对他来说是一样的。推荐系统中AUC可以通过下式计算,其中R为推荐的item集合,

\delta(x)

表示当x为true时,它为1;反之为0。

\begin{aligned} \operatorname{AUC}(R)_{n} &=\frac{1}{|R|(n-|R|)} \sum_{r \in R} \sum_{r^{\prime} \in(\{1, \ldots, n\} \backslash R)} \delta\left(r < r^{\prime}\right) \\ &=\frac{n-\frac{|R|-1}{2}-\frac{1}{|R|} \sum_{r \in R} r}{n-|R|} \end{aligned}

2.2 GAUC

AUC他是从总体上反应模型的性能,但是无法从更加个性化的角度进行分析。推荐系统本身是针对不同用户进行个性化推荐,因此有时候我们在进行分析的时候不能只看整体的AUC。GAUC是AUC的改进版,将样本进行分组后,在组内计算AUC。计算公式如下,其中w为每个分组中的对应的权重,可以是点击次数,观看时长,停留时间等。

G A U C=\frac{\sum_{g_{i}} w_{g_{i}} * A U C_{g_{i}}}{\sum w_{g_{i}}}

这里举个栗子:(来源https://blog.csdn.net/hnu2012/article/details/87892368) 假设有两个模型A,B;有两个用户甲、乙;+表示正样本,-表示负样本,我们按照预测值从小到大排序后得到下表

模型A

甲-

甲+

乙-

甲+

乙+

模型B

甲-

甲+

甲+

乙-

乙+

则可以计算得到总体的AUC为:AUC(A)=0.833,AUC(B)=0.667。但是如果我们分人群的话,对于甲乙而言,两个模型是一样好的。大家可以自己计算一下分人群后的AUC。

2.4 LogLoss

通常还会计算一下LogLoss来进行对比,这里就不赘述了,LogLoss就是我们在训练模型用到的损失函数。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 Recall
  • 1.2 Precision
  • 1.2 NDCG
    • 1.2.1 CG
      • 1.2.2 DCG
        • 1.2.3 NDCG
        • 2.1 AUC
        • 2.2 GAUC
        • 2.4 LogLoss
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档