目标: 计算多条查询的平均 NDCG@k。
定义:
细节与约定:
在信息检索与推荐系统中,NDCG@k 是衡量模型返回结果相关性的常用指标。
请你实现一个确定性的 NDCG 计算器:对若干条查询 (query) 的检索结果,输出各查询 NDCG@k 的平均值,保留 6 位小数。
DCG@k=∑r=1klog2(r+1)2relr−1
其中 relr 为第 r 名结果的相关等级(非负整数)。
IDCG@k:将同一查询的相关等级按降序排好后,再用上式计算。
NDCG@k
若某查询对应的 labels/scores 长度小于 k ,则按该查询的实际条数进行 DCG 和 IDCG 计算。
单行 JSON,包含以下字段:
{
"k": 3, // 评估的截断位置 k (1 ≤ k ≤ 100)
"queries": [
{
"labels": [3, 2, 1, 0], // 实际相关等级 (0-3)
"scores": [0.9, 0.8, 0.7, 0.6] // 系统打分(越大排序越靠前)
},
...
]
}
仅输出一行,表示所有查询 NDCG@k 的平均值,四舍五入保留 6 位小数。
输入
{"k":3,"queries":[{"labels":[3,2,1],"scores":[0.9,0.8,0.7]},{"labels":[2,1,0],"scores":[0.9,0.8,0.7]}]}
输出
1.000000