nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统

nDCG(归一化折损累计增益) 是衡量排序质量的指标,常用于搜索引擎或推荐系统。核心思想是:排名越靠前的高质量结果,对整体评分的贡献越大,但后续结果的贡献会逐渐"打折"。最终通过对比实际排序与理想排序的得分,得到一个0到1之间的值(越接近1,排序越好)。


通俗解释:

假设你搜索"苹果",搜索引擎返回5个结果。nDCG的作用是:

  1. 给高质量结果加分(比如相关度高的排在前面)。
  2. 给靠后的结果打折(比如第5名的结果即使相关,贡献也变小)。
  3. 对比"实际排序"和"完美排序"的得分,最终给出一个0~1的评分(1表示完美)。

数值举例(假设相关度分3档:0不相关,1一般,2非常相关)

场景:
  • 实际排序 :结果的相关度依次为 [2, 1, 2, 0, 1]
  • 理想排序 (按相关度从高到低排列):[2, 2, 1, 1, 0]

计算步骤:
  1. 计算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
  2. 计算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
  3. 归一化得到nDCG

    复制代码
    nDCG = DCG / IDCG = 4.02 / 4.19 ≈ 0.96

结论:

  • nDCG≈0.96,接近1,说明实际排序接近理想情况。
  • 如果实际排序完全乱序(比如把不相关的结果排第一),nDCG会接近0。
相关推荐
DavidSoCool8 小时前
Elasticsearch 中实现推荐搜索(方案设想)
大数据·elasticsearch·搜索引擎
文艺倾年17 小时前
【八股消消乐】Elasticsearch优化—检索Labubu
大数据·elasticsearch·搜索引擎
Allen_LVyingbo18 小时前
从“数据困境”到“数据生态”:DaaS重塑三甲医院医疗数据治理
人工智能·搜索引擎·架构·健康医疗
Python智慧行囊18 小时前
深入理解 Git:从版本控制原理到企业级实践
大数据·git·搜索引擎
Elastic 中国社区官方博客19 小时前
ECK 简化:在 GCP GKE Autopilot 上部署 Elasticsearch
大数据·elasticsearch·搜索引擎·k8s·全文检索·googlecloud
颛顼1 天前
【源码分析】:从零拆解bs_worker的3层核心架构
后端·搜索引擎
昵称为空C2 天前
meilisearch全文检索elasticsearch的平替,应用于中小型项目足矣
后端·搜索引擎
G皮T3 天前
【Elasticsearch】文档迁移(Reindex)
大数据·elasticsearch·搜索引擎·全文检索·文档·reindex·文档迁移
Elastic 中国社区官方博客3 天前
使用 Elasticsearch 提升 Copilot 能力
大数据·数据库·elasticsearch·搜索引擎·全文检索·copilot·mcp
onceco3 天前
使用duckduckgo_search python api 进行免费且不限次数的搜索
开发语言·python·搜索引擎