信息检索中 (IR) 的评价指标: P@n, MAP, MRR, DCG, NDCG

本文详细介绍了信息检索领域的关键评估指标,包括精确率(Precision)、平均精确率(Average Precision, AP)、平均平均精确率(Mean Average Precision, MAP)、平均倒数排名(Mean Reciprocal Rank, MRR)及归一化折减累积增益(Normalized Discounted Cumulative Gain, NDCG),并阐述了它们的计算方法和应用场景。

转载自: http://www.yongfeiyan.cn/post/md/3

P@n

前 n 个结果的准确度, P指的是Precision. 如果用 y i = 0 , 1 y_i=0,1 yi=0,1分别表示第 i 个结果相关、不相关, 则
P @ n = 1 n ∑ i = 1 n y i P@n = \frac{1}{n} \sum_{i=1}^ny_i P@n=n1i=1nyi
在评测系统的 P@n 时, 对每个查询的结果计算P@n, 取这些值的平均值作为系统的P@n.
参考:

MAP

Average Precision(AP): P@n的一个平均, 计算方式如下:
A P = 1 R ∑ r = 1 R P @ r AP = \frac{1}{R} \sum_{r=1}^RP@r AP=R1r=1RP@r
其中R是预定义的. 在评测系统的AP时, 对每个查询的结果计算AP, 取这些值的平均值作为系统的AP.

Mean Average Precision (MAP): 在评价一个系统的性能, 有时会用不同主题的查询进行检索, 评价系统的整体性能. 在第t类查询, 系统的AP记作 A P i AP_i APi的话, MAP计算方式如下:
M A P = 1 T ∑ t = 1 A P i MAP = \frac{1}{T} \sum_{t=1}^AP_i MAP=T1t=1APi
参考

MRR

Mean Reciprocal Rank (MRR). 对每个查询 q i q_i qi, 记它第一个相关的结果排在位置 k i k_i ki, 即rank为 k i k_i ki, 则Reciprocal Rank(RR)得分计作 1 / k i 1 / k_i 1/ki.
对所有query的RR取平均, 即为MRR:
M R R = 1 N ∑ i 1 / k i MRR = \frac{1}{N}\sum_i 1/ k_i MRR=N1i1/ki

DCG和NDCG

Discounted Cumulative Gain (DCG): 指的, Cumulative为将所有的结果累加起来, Discounted指给排在后面的结果加一个折扣系数, 排序位置越考后, 折扣系数越小.
DCG@N的计算方式如下
D C G @ N = ∑ i = 1 N r i ∗ D i DCG@N = \sum_{i=1}^N r_i * D_i DCG@N=i=1NriDi
其中 r i r_i ri指每条结果的收益(Gain), D i D_i Di指折扣系数, 排序位置越考后, 折扣系数越小, 常用的是 1 / l o g ( 1 + i ) 1 / log(1 + i) 1/log(1+i).
一种常用的形式如下:
D C G @ N = ∑ i = 1 N 2 r e l i − 1 log ⁡ ( i + 1 ) DCG@N = \sum_{i=1}^N \frac{2^{rel_i} - 1} {\log (i + 1)} DCG@N=i=1Nlog(i+1)2reli1

Normalized Discounted Cumulative Gain (NDCG): 对于不同query, DCG的量级可能不同, 比如一个query对应的文档相关性都较差, 另一个query对应的文档都很好, 这样评价指标就会偏向第二个query. Normalized指将一个query对应的文档所有排序中最大的DCG求出来, 不妨计作 I D C G @ N IDCG@N IDCG@N, 则
N D C G @ N = D C G @ N / I D C G @ N NDCG@N = DCG@N / IDCG@N NDCG@N=DCG@N/IDCG@N
举例来说, query下有4个文档, 相关性分别为1 2 3 0. 则最好的排序是 3 2 1 0, 在这种排序情况下计算出来的DCG就是IDCG.

### GCMC 模型评估指标含义及结果分析 #### 1. Recall@10 Recall@10 表示在推荐列表的前 10 个物品中,正确推荐的物品数占用户实际交互物品的比例。它衡量了模型在有限推荐范围内捕获用户兴趣的能力。公式如下: \[ \text{Recall@K} = \frac{\sum_{u \in U} |I_u^{\text{rel}} \cap I_u^{\text{rec}}|}{\sum_{u \in U} |I_u^{\text{rel}}|} \] 其中,\( I_u^{\text{rel}} \) 是用户 \( u \) 实际感兴趣的物品集合,\( I_u^{\text{rec}} \) 是推荐给用户 \( u \) 的前 \( K \) 个物品集合[^2]。 #### 2. MRR@10 MRR@10(Mean Reciprocal Rank)表示在推荐列表的前 10 个物品中,第一个正确推荐物品的位置倒数的平均值。它更关注模型对高优先级推荐的准确性。公式如下: \[ \text{MRR@K} = \frac{1}{|U|} \sum_{u \in U} \frac{1}{\text{rank}_u} \] 其中,\( \text{rank}_u \) 是用户 \( u \) 第一个正确推荐物品的位置,若无正确推荐,则 \( \text{rank}_u = 0 \)[^3]。 #### 3. NDCG@10 NDCG@10(Normalized Discounted Cumulative Gain)通过考虑推荐位置的重要性来衡量推荐质量。它不仅关注是否推荐正确,还关注推荐顺序的影响。公式如下: \[ \text{NDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}} \] 其中,\( \text{DCG@K} = \sum_{i=1}^{K} \frac{rel_i}{\log_2(i+1)} \),\( rel_i \) 是第 \( i \) 个推荐物品的相关性得分;\( \text{IDCG@K} \) 是理想排序下的 \( \text{DCG@K} \)[^4]。 #### 4. Hit@10 Hit@10 表示在推荐列表的前 10 个物品中,是否存在至少一个正确推荐的物品。它是二元指标,仅衡量是否命中目标,而不关注推荐顺序。公式如下: \[ \text{Hit@K} = \frac{1}{|U|} \sum_{u \in U} \mathbb{1}(|I_u^{\text{rel}} \cap I_u^{\text{rec}}| > 0) \] 其中,\( \mathbb{1}(\cdot) \) 是指示函数[^5]。 #### 5. Precision@10 Precision@10 表示在推荐列表的前 10 个物品中,正确推荐的物品数占推荐总数的比例。它衡量了推荐的精确度。公式如下: \[ \text{Precision@K} = \frac{\sum_{u \in U} |I_u^{\text{rel}} \cap I_u^{\text{rec}}|}{\sum_{u \in U} |I_u^{\text{rec}}|} \][^6]。 #### 结果分析 - **Recall@10** **Hit@10** 主要反映模型覆盖用户兴趣的能力。较高的值表明模型能够较好地推荐用户可能感兴趣的物品。 - **MRR@10** 更加关注推荐顺序的重要性,适合需要快速找到相关物品的应用场景。 - **NDCG@10** 综合考虑了推荐的相关性顺序,是评价推荐系统性能的重要指标。 - **Precision@10** 则反映了推荐的准确率,较高的值意味着推荐列表中的物品大部分是用户感兴趣的。 ```python # 示例代码:计算 Recall@10 Precision@10 def calculate_recall_precision(actual, predicted, k=10): actual_set = set(actual) predicted_k = predicted[:k] intersection = actual_set.intersection(predicted_k) recall = len(intersection) / len(actual_set) precision = len(intersection) / k return recall, precision actual_items = [1, 2, 3, 4, 5] predicted_items = [2, 3, 6, 7, 8, 9, 10, 11, 12, 13] recall, precision = calculate_recall_precision(actual_items, predicted_items, k=10) print(f"Recall@10: {recall}, Precision@10: {precision}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值