1. 什么是NDCG?
在推荐系统和搜索引擎领域,评估排序结果的质量至关重要。NDCG(Normalized Discounted Cumulative Gain,归一化折损累计增益)就是这样一个被广泛使用的评价指标。我第一次接触NDCG是在优化电商推荐系统时,当时团队需要量化不同排序算法对用户点击率的影响。
NDCG的核心思想是:越相关的结果排在越前面,得分越高;同时考虑不同位置结果的权重衰减。举个例子,当你在电商平台搜索"无线耳机"时,排在前三位的商品如果恰好是你最想要的型号,这个排序就比把好商品藏在第10页要合理得多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. NDCG的计算原理
2.1 基础概念拆解
让我们拆解这个指标的名称来理解其含义:
- Gain(增益):每个结果的关联程度得分
- Cumulative(累计):将前N个结果的得分相加
- Discounted(折损):对靠后的结果进行降权
- Normalized(归一化):将得分标准化到0-1之间
2.2 具体计算步骤
计算NDCG通常分为以下几步:
-
计算DCG(折损累计增益):
code复制DCG@k = rel₁ + Σ(relᵢ / log₂(i+1)) for i=2 to k其中relᵢ是第i个结果的关联度得分
-
计算IDCG(理想DCG):
将结果按关联度从高到低排序后计算的DCG -
归一化得到NDCG:
code复制NDCG@k = DCG@k / IDCG@k
注意:log底数通常取2,这是为了更显著地降低后面结果的权重。在实际应用中,也有人使用自然对数ln。
2.3 关联度评分设置
关联度(rel)的设定很关键,常见的有:
- 二值相关:相关=1,不相关=0
- 多级相关:比如0-5分制
- 连续值:点击率、购买转化率等
在电商推荐中,我们常用5级评分:
- 5分:用户购买
- 4分:加入购物车
- 3分:详细页停留>30秒
- 2分:点击
- 1分:曝光但未点击
- 0分:不相关商品
3. 为什么NDCG如此重要?
3.1 与传统指标对比
相比简单的准确率(Precision)和召回率(Recall
