返回 经典机器学习 思维导图
中文·English
📊 经典机器学习ID: ndcg

NDCG

🎯核心定义
排序质量指标, 衡量“高相关文档是否排在前面”。折损累积增益 DCG@k=i=1k2reli1log2(i+1)DCG@k = \sum_{i=1}^{k} \frac{2^{rel_i} - 1}{\log_2(i+1)}, 其中 relirel_i 是第 ii 位的相关度分级 (通常 0-4), log2(i+1)\log_2(i+1) 是位置折损 (第 1 位折损 1, 第 2 位 log231.585\log_2 3 \approx 1.585, 第 3 位 2, 第 4 位 log252.322\log_2 5 \approx 2.322)。按相关度降序的理想排列算出 IDCG, 归一化 NDCG@k=DCG@kIDCG@k[0,1]NDCG@k = \frac{DCG@k}{IDCG@k} \in [0,1]。数值例: 标注相关度 [3, 2, 1, 0], 模型输出顺序 [2, 1, 3, 0], 则 DCG@4=2211+211log23+2312+201log25=3+0.63+3.5+0=7.13DCG@4 = \frac{2^2-1}{1} + \frac{2^1-1}{\log_2 3} + \frac{2^3-1}{2} + \frac{2^0-1}{\log_2 5} = 3 + 0.63 + 3.5 + 0 = 7.13; IDCG 用最优顺序 [3, 2, 1, 0]: IDCG@4=2311+221log23+2112+0=7+1.89+0.5=9.39IDCG@4 = \frac{2^3-1}{1} + \frac{2^2-1}{\log_2 3} + \frac{2^1-1}{2} + 0 = 7 + 1.89 + 0.5 = 9.39, 故 NDCG@47.13/9.390.76NDCG@4 \approx 7.13 / 9.39 \approx 0.76
💡使用场景
搜索排序、推荐精排 (LambdaRank/LTR 常用 NDCG 优化), 面试必考手算; 截断 k 表示只看前 k 位, 通常取 k = 5 或 10。
解决的核心痛点
精确率/召回率把所有相关文档等权对待, 不区分位置与相关程度; DCG 用 2rel12^{rel}-1 指数放大高相关文档的增益 (相关度 4 的贡献是相关度 3 的近 2.3 倍), 用 log2(i+1)\log_2(i+1) 惩罚排位靠后的文档, 体现“越相关越靠前贡献越大”; 除以 IDCG 后 NDCG 与候选数量、相关文档分布解耦, 不同 query 之间可直接比较, 且完全没有相关文档时 NDCG 恒为 0, 不会出现 DCG 随 k 增大而虚高的偏差。
🎯5 个高频面试考点 (Exam Points)
1
手算: 相关度 [3, 2, 1, 0] 被排成 [2, 1, 3, 0], 求 DCG@4、IDCG@4 与 NDCG@4?
2
为什么用 2reli12^{rel_i}-1 而不是直接 relirel_i? 位置折损 log2(i+1)\log_2(i+1) 的直觉是什么?
3
NDCG 为什么要除以 IDCG? 不归一化的 DCG 有哪些问题?
4
NDCG 与二值指标的差异: 0-4 分级相关 vs 相关/不相关; 截断 k 对结果有何影响?
5
NDCG 与 MRR 的关系: 二值相关时 NDCG@1 与首个相关位置的对应是什么?
📖 关联深度指南:📄 ml-math-and-eval-metrics
更新于 2026-08-12
🎯
检验攻克程度:针对「NDCG」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点ROC-AUC下一个知识点MRR 与 GAUC

🔗 更多 经典机器学习 知识点卡片

AdaBoost 算法手推Bagging 与随机森林HMM 参数学习 Baum-WelchGBDT 负梯度拟合