【推荐】排序模型的评价指标nDCG

简介: nDCG(Normalized Discounted Cumulative Gain)归一化折损累计增益是一种用于评估排序模型性能的指标,它考虑了两个方面:排序的正确性和相关性的程度。

介绍


 nDCG(Normalized Discounted Cumulative Gain)归一化折损累计增益是一种用于评估排序模型性能的指标,它考虑了两个方面:排序的正确性和相关性的程度。


 学习nDCG按照Gain、CG、DCG、iDCG、nDCG这个顺序来学习。


 假设现在你有一个标签序列:


image.png


  如果是打分数据集,那么A分数最高(3),D最低(0),这样真实顺序为ABCD;


  如果是点击数据集,那么AC分数有(1),BD无(0),这样标签为AC,顺序无所谓;



增益Gain

 增益Gain就表示第i个标签位置的得分。这里r e l ( i )表示分数,这个分数到底是什么?分数是什么什么取决于数据集的对应位置存的是什么。


image.png

  如果是用的是推荐的显示反馈,也就是打分数据集(1-5分),那么这个1-5的打分就是计算时要用的分数。如果用的隐式反馈,也就是用户点击数据集,那这个分数就是0-1。1表示用户点击过,0表示未点击过。


  那么在上面举例中:在打分数据集,可以说标签A的增益为3、B为2……



累计增益 CG


  累计增益 CG表示前k个位置累计得到的效益。CG必须要指定topk中的k才可以计算,不然在不同的情况下,A用户有100个标签、B用户只有10个标签,这样去统计CG就没意义了。


image.png


  那么在上面举例中:在打分数据集,如果标签为[A,B,C,D]或[B,A,C,D],CG@2 = 5。所以,顺序不影响CG得分。如果我们想评估不同顺序的影响,就需要使用另一个指标DCG来评估。


折损累计增益 DCG

 CG只是单纯累加相关性,不考虑位置信息。考虑排序顺序的因素,使得排名靠前的item增益更高,对排名靠后的item进行折损。CG与顺序无关,而DCG评估了顺序的影响。DCG的思想是:list中item的顺序很重要,不同位置的贡献不同,一般来说,排在前面的item影响更大,排在后面的item影响较小。


image.png


 那么在上面举例中:在打分数据集,如果标签为[A,B,C,D]:DCG@2 = 3/log(2) + 2/log(3) = 6.149;如果标签为[B,A,C,D]:DCG@2 = 2/log(2) + 3/log(3) = 5.616;我们发现肯定是越靠近原始标签顺序,折损累计增益越大。


理想折损累计增益 IDCG


  IDCG是指理想情况下的DCG,即DCG取得最大值的情况,就是数据集中的顺序。公式为:


image.png


  它和DCG没区别,只是DCG算的是模型预测出来的标签顺序去算分,IDCG算的是数据集中的真实标签顺序去算分,所以DCG不可能比IDCG大。


归一化折损累计增益 nDCG


  除以IDCG,把分数约束到[0,1]。


image.png

计算举例



 假如现在模型对标签A-B-C-D预测的分数是[0.111, 0.222, 0.001, 0.10]


 那么要对分数排个序即[0.222, 0.111, 0.10, 0.001]


 那么模型预测出来的标签顺序为B-A-D-C


 模型预测出来的标签顺序B-A-D-C在数据集里面的评分是[2, 3, 0, 1]


 nDGC@3 = [2/log(2) + 3/log(3) + 0/log(4)] / [3/log(2) + 2/log(3) + 1/log(4)] = 0.8174935137996165



相关文章
|
人工智能 数据可视化 数据挖掘
使用轮廓分数提升时间序列聚类的表现
我们将使用轮廓分数和一些距离指标来执行时间序列聚类实验,并且进行可视化
109 0
sklearn中分类模型评估指标(一):准确率、Top准确率、平衡准确率
accuracy_score函数计算准确率分数,即预测正确的分数(默认)或计数(当normalize=False时)。 在多标签分类中,该函数返回子集准确率(subset accuracy)。 如果样本的整个预测标签集与真实标签集严格匹配,则子集准确率为 1.0; 否则为 0.0。
|
3月前
|
自然语言处理 大数据 测试技术
PAIRDISTILL: 用于密集检索的成对相关性蒸馏方法
在大数据时代,有效的信息检索技术对于从海量数据中提取相关信息至关重要。国立台湾大学的研究者提出了一种名为PAIRDISTILL的新方法,通过成对相关性蒸馏,利用成对重排序器提供的细粒度训练信号,显著提升了密集检索模型的性能。该方法不仅在MS MARCO等基准测试中表现出色,还在领域外和零样本场景中展现出强大的泛化能力,为密集检索领域提供了新的研究方向。
102 13
PAIRDISTILL: 用于密集检索的成对相关性蒸馏方法
|
机器学习/深度学习 算法
【机器学习系列】- 准确率、召回率、F1值的思考
关于如何评估算法,我们常通过准确率、召回率和F1值进行评估。
2157 0
【机器学习系列】- 准确率、召回率、F1值的思考
|
5月前
|
机器学习/深度学习
【机器学习】准确率、精确率、召回率、误报率、漏报率概念及公式
机器学习评估指标中的准确率、精确率、召回率、误报率和漏报率等概念,并给出了这些指标的计算公式。
957 0
|
存储 算法 搜索推荐
语义检索系统:基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回
语义检索系统:基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回
语义检索系统:基于无监督训练SimCSE+In-batch Negatives策略有监督训练的语义索引召回
|
搜索推荐
召回和粗排负样本构造问题
召回和粗排负样本构造问题
366 0
|
机器学习/深度学习
瞎聊机器学习——准确率、精确率、召回率、F1 score
瞎聊机器学习——准确率、精确率、召回率、F1 score
|
机器学习/深度学习 自然语言处理 算法
小样本学习总结
近年来,大规模的标注数据被用于深度学习的模型训练中,极大地提高了模型的鲁棒性和 泛化能力。然而,在现实应用中,有些深度学习训练的样本数或者标注样本数很少,若直接用 于训练会产生过拟合问题。小样本学习(Few-shot Learning)实现了在原始样本有限的情况下, 依然能够训练出具有较高泛化能力的模型。
1017 0
小样本学习总结