← 返回题目列表

排序模型常用的 NDCG、MAP 怎么理解?

中等 第 24 / 25 题 更新于 2026/09/19
模型评估机器学习面试题模型训练

简化版

NDCG 用位置折损累计分级相关性并除以理想 DCG,适合有多级标签的排序;MAP 对每个查询计算各相关位置 precision 的平均再跨查询平均,常用于二元相关和检索。两者都必须按 query 分组并指定 K。

详细版

  • NDCG 重视顶部且支持 graded relevance。

  • IDCG=0 的查询需定义跳过或记零。

  • AP 只在相关结果位置累加 precision。

  • 宏平均让每个 query 权重相等。

  • 指标口径需固定去重、候选集和未标注处理。

完整版教学

一、排序指标同时编码位置与相关性

DCG 让排在前面的高相关结果贡献更大,NDCG 用理想排序归一化,便于不同相关结果数量的 query 比较。

AP 衡量相关文档被逐步找回时的精确率,错误排在早期会拖累后续相关位置。

二者都先在单个 query 内计算再跨 query 聚合,因此候选集、相关标签和无相关结果 query 的处理必须保持同一口径。

二、底层机制与公式

DCG@K=sum_i (2^rel_i-1)/log2(i+1)
NDCG=DCG/IDCG
AP=sum_i Precision@i*rel_i / number_relevant

三、带数字的推演

相关等级 [3,0,2] 排在前三,DCG=7/log2(2)+0+3/log2(4)=8.5;再除以理想 [3,2,0] 的 DCG 才得 NDCG。

四、方案对比

方案/对象核心特点代价或边界
NDCG分级相关+位置折损需定义 gain/discount
MAP二元相关、整体召回过程不表达相关等级
MRR只关心首个相关结果忽略后续结果

五、执行流程

按 query 构造候选/标签 -> 排序并截断 K -> 每 query 算指标
-> 处理无相关 query -> 宏/加权汇总 -> 按头尾查询切片

六、边界条件与工程代价

离线未标注不等于不相关;曝光偏差会让旧策略顶部标签更完整,新模型新结果被低估。

不同候选集上 NDCG 不可直接比较,召回阶段变化时应固定评测池或联合报告召回。

记忆钩子:NDCG 看“高相关是否靠前”,MAP 看“每次找回相关结果时有多准”。

七、常见误区与追问

  • 误区:NDCG 只适合二元标签。 它的优势正是支持分级相关。

  • 追问:为什么要归一化? 不同 query 的理想收益不同。

  • 误区:MAP 是把所有结果混在一起算 precision。 先按 query 算 AP,再平均。

  • 追问:IDCG=0 怎么办? 预先规定跳过或记零并报告数量。

  • 追问:K 为什么重要? 业务展示位置有限,折损与截断直接改变目标。

八、加强记忆

NDCG 看“高相关是否靠前”,MAP 看“每次找回相关结果时有多准”。

两者都先按 query 算,再跨 query 汇总。