IR的评价指标-MAP,NDCG和MRR

IR的评价指标-MAP,NDCG和MRR

MAP(Mean Average Precision):

单个主题的平均准确率是每篇相关文档检索出后的准确率的平均值。主集合的平均准确率(MAP)是每个主题的平均准确率的平均值。MAP 是反映系统在全部相关文档上性能的单值指标。系统检索出来的相关文档越靠前(rank 越高),MAP就可能越高。如果系统没有返回相关文档,则准确率默认为0。
例如:假设有两个主题,主题1有4个相关网页,主题2有5个相关网页。某系统对于主题1检索出4个相关网页,其rank分别为1, 2, 4, 7;对于主题2检索出3个相关网页,其rank分别为1,3,5。对于主题1,平均准确率为(1/1+2/2+3/4+4/7)/4=0.83。对于主题2,平均准确率为(1/1+2/3+3/5+0+0)/5=0.45。则MAP= (0.83+0.45)/2=0.64。”

NDCG(Normalized Discounted Cumulative Gain):

计算相对复杂。对于排在结位置n处的NDCG的计算公式如下图所示:

在MAP中,四个文档和query要么相关,要么不相关,也就是相关度非0即1。NDCG中改进了下,相关度分成从0到r的r+1的等级(r可设定)。当取r=5时,等级设定如下图所示:

(应该还有r=1那一级,原文档有误,不过这里不影响理解)

例如现在有一个query={abc},返回下图左列的Ranked List(URL),当假设用户的选择与排序结果无关(即每一级都等概率被选中),则生成的累计增益值如下图最右列所示:

考虑到一般情况下用户会优先点选排在前面的搜索结果,所以应该引入一个折算因子(discounting factor): log(2)/log(1+rank)。这时将获得DCG值(Discounted Cumulative Gain)如下如所示:

最后,为了使不同等级上的搜索结果的得分值容易比较,需要将DCG值归一化的到NDCG值。操作如下图所示,首先计算理想返回结果List的DCG值:

然后用DCG/MaxDCG就得到NDCG值,如下图所示:

MRR(Mean Reciprocal Rank):

是把标准答案在被评价系统给出结果中的排序取倒数作为它的准确度,再对所有的问题取平均。相对简单,举个例子:有3个query如下图所示:

(黑体为返回结果中最匹配的一项)

可计算这个系统的MRR值为:(1/3 + 1/2 + 1)/3 = 11/18=0.61。

### 排序模型性能评估方法及指标 排序模型的性能评估通常依赖于特定的任务背景以及目标函数的设计。以下是常见的排序模型性能评估方法指标: #### 1. 基本概念 排序模型的目标通常是根据某些标准对项目列表进行优先级排列,因此其性能评估需要关注排名顺序的质量。这可以通过一系列专门设计的指标实现。 #### 2. 性能评估指标 常用的排序模型性能评估指标包括但不限于以下几种: - **Mean Reciprocal Rank (MRR)** MRR 是一种衡量第一个正确结果位置倒数平均值的指标。它特别适用于只关心最高排名的相关项的情况。计算公式如下: \[ MRR = \frac{1}{|Q|} \sum_{i=1}^{|Q|} \frac{1}{rank_i} \] 其中 \( |Q| \) 表示查询总数,\( rank_i \) 表示第 i 个查询的第一个相关文档的位置[^1]。 - **Normalized Discounted Cumulative Gain (NDCG)** NDCG 考虑了不同等级的相关性得分,并通过折扣因子强调靠前的结果的重要性。具体来说,DGC 的定义为: \[ DCG_k = rel_1 + \sum_{i=2}^{k} \frac{rel_i}{\log_2(i)} \] 正常化后的版本即为 NDCG,用于比较不同长度的排名列表之间的效果差异[^2]。 - **Precision@K Recall@K** Precision@K 计算的是在前 K 个推荐项中有多少是真正相关的;而 Recall@K 则表示实际相关项中有多少被成功召回到了前 K 名单里。这两个指标可以综合反映排序质量的一部分特性[^3]。 - **Average Precision (AP)** AP 将每个正样本首次出现时对应的 precision 加权求得到最终分数,能够更全面地体现整个序列中的分布情况。MAP(Mean Average Precision)则是多个查询下 AP 的均值形式之一。 #### 3. 实践注意事项 当选择合适的评估方式时需考虑业务场景需求,比如电商搜索可能更加注重用户体验下的点击行为转化路径,则会偏向采用 CTR 或者 A/B Test 结果作为辅助判断依据;而对于信息检索系统而言,可能会更多倚重传统 IR 领域内的经典评测手段如 MAP/NDCG 等。 ```python def calculate_mrr(ranks): """Calculate Mean Reciprocal Rank.""" mrr_value = sum(1 / r for r in ranks if r != 0) / len(ranks) return mrr_value def dcg_at_k(relevance_scores, k): """Compute discounted cumulative gain at position k.""" relevance = np.asarray(relevance_scores)[:k] gain = relevance[0] + np.sum(relevance[1:] / np.log2(np.arange(2, k + 1))) return gain def ndcg_at_k(true_relevances, predicted_relevances, k): """Compute normalized discounted cumulative gain at position k.""" idcg = dcg_at_k(sorted(true_relevances, reverse=True), k) dcg = dcg_at_k(predicted_relevances, k) return dcg / idcg if idcg > 0 else 0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值