NDCG指标讲解

NDCG

NDCG是Normalized Discount Cumulative Gain

NDCG可以在搜索和推荐任务中衡量返回的Item列表是否优秀

G-CG-DCG-NDCG

G代表Gain

表示一个列表中的Item的相关性分数,rel(i)表示item(i)相关性得分

Gain=rel(i)

CG就是Cumulative Gain表示对K个item的Gain进行累加

\(CG_k=\sum_{i=1}^krel(i)\)

DCG就是Discount Cumulative Gain 考虑排序的因素,使得排名靠前的item增益更高,对排名靠后的item进行折损

\(DCG_k=\sum^k_{i=1}\frac{rel(i)}{log_2(i+1)}\)

相当于给每个item的相关性打个折扣,item越靠后,折扣越大

IDCG 就是理想的DCG,是根据rel(i)进行降序排列,即排列到最好状态,算出最好排列的DCG,就是IDCG

计算方式为:

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

K为NDCG@K中的K

NDCG就是归一化的DCG

\(NDCG=\frac{DCG}{IDCG}\)

额外讲一下个人理解,不一定正确:

在普通推荐中,测试集中正样本有一些交互的物品,取之中的k个,若k不足K就剩下的取负样本,把预测结果的分数从大到小排列,每有一个是在正样本中,就对DCG进行累加,IDCG的计算与正样本的排列顺序无关,因为正样本的相关系数都是1,\(IDCG=\sum_{i=1}^{k}\frac{1}{log_2(i+1)}\)

在序列推荐中,因为正样本只有1个,剩下K-1个为抽取的负样本,计算了有K个分数,然后按这个分数从大到小进行排列,若第k个为正样本,则\(DCG=\frac{1}{log_2(k+1)},IDCG=1\),若预测的前K个都没正样本,则这个用户的NDCG=0

参考资料:https://zhuanlan.zhihu.com/p/371432647

除此以外,顺便记录一下推荐系统的其他指标

Recall

\(Recall=\frac{TP}{TP+FN}\)

在推荐系统中:

TP代表推荐列表中正确推荐的项目总数

FN代表未被推荐但用户感兴趣的项目数

所以,Recall实际上就是:

\(Recall=\frac{推荐结果中正确推荐的项目数}{用户实际感兴趣的项目数}\)

但这个不是很适用于序列推荐,因为序列推荐的正确数量就1个,recall非1即0

HR

HR也就是hit rate,用于衡量推荐系统是否能够命中用户的兴趣点,关注的是推荐列表中是否有用户感兴趣的项目,而不考虑推荐列表的排序。

\(HR=\frac{命中用户兴趣项目的用户数}{用户总数}\)

分子表示推荐列表中至少有一个用户感兴趣的项目的用户数量。

这个指标对推荐列表比较敏感,因为只要列表中有命中的就行

在序列推荐中,因为目标只有一个,所以HR=Recall

MRR

MRR是Mean Reciprocal Rank。用于衡量推荐列表中正确结果出现的排序位置,重点关注命中结果的排名靠前程度。它是一个基于位置的指标,与推荐列表的排序密切相关。

对于每个查询(或用户)来说,Reciprocal Rank (RR) 表示第一个相关项目的倒数排名:

\(RR=\frac{1}{第一个正确推荐项目的排名}\)

MRR 是对所有用户的 RR 取平均值:

\(MRR=\frac{1}{N}\sum_{i=1}^N\frac{1}{rank_i}\)

这个适用于序列推荐

posted @ 2023-09-04 16:42  ANewPro  阅读(810)  评论(0编辑  收藏  举报