nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统
nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统。核心思想是:排名越靠前的高质量结果,对整体评分的贡献越大,但后续结果的贡献会逐渐“打折”。最终通过对比实际排序与理想排序的得分,得到一个0到1之间的值(越接近1,排序越好)。
通俗解释:
假设你搜索“苹果”,搜索引擎返回5个结果。nDCG的作用是:
- 给高质量结果加分(比如相关度高的排在前面)。
- 给靠后的结果打折(比如第5名的结果即使相关,贡献也变小)。
- 对比“实际排序”和“完美排序”的得分,最终给出一个0~1的评分(1表示完美)。
数值举例(假设相关度分3档:0不相关,1一般,2非常相关)
场景:
- 实际排序:结果的相关度依次为
[2, 1, 2, 0, 1]
- 理想排序(按相关度从高到低排列):
[2, 2, 1, 1, 0]
计算步骤:
-
计算DCG(实际排序的得分):
- 公式:每个结果的增益除以它的位置的对数值(位置从1开始)。
- 计算:
DCG = 2/log₂(2) + 1/log₂(3) + 2/log₂(4) + 0/log₂(5) + 1/log₂(6)= 2/1 + 1/1.585 + 2/2 + 0 + 1/2.585≈ 2 + 0.63 + 1 + 0 + 0.39≈ 4.02
-
计算IDCG(理想排序的得分):
- 理想排序的DCG即为IDCG:
IDCG = 2/log₂(2) + 2/log₂(3) + 1/log₂(4) + 1/log₂(5) + 0/log₂(6)= 2/1 + 2/1.585 + 1/2 + 1/2.322 + 0≈ 2 + 1.26 + 0.5 + 0.43≈ 4.19
- 理想排序的DCG即为IDCG:
-
归一化得到nDCG:
nDCG = DCG / IDCG = 4.02 / 4.19 ≈ 0.96
结论:
- nDCG≈0.96,接近1,说明实际排序接近理想情况。
- 如果实际排序完全乱序(比如把不相关的结果排第一),nDCG会接近0。