完整定義
歸一化折損累積收益(Normalized Discounted Cumulative Gain, NDCG)是信息檢索和推薦系統中評估排序質量的標準指標。NDCG 考慮了相關文檔的相關程度(而非簡單的二分相關),並通過折損因子強調靠前結果的重要性。NDCG 的名稱體現了其核心思想:累積相關文檔的「收益」,用折損函數來強調排序位置的影響,最後進行歸一化以得到 0-1 之間的可比值。
核心概念
NDCG 的核心思想是:
收益(Gain):不同相關程度的文檔有不同的收益值(如高度相關給 3 分,中等相關給 2 分,略相關給 1 分)。
折損(Discount):靠後位置的文檔的收益應該被折損。常用的折損因子是
log2(position + 1),這樣排名越靠後,折損越大。累積(Cumulative):將所有文檔的折損收益相加,得到累積收益。
歸一化(Normalized):用最優排序的 DCG(理想情況)來除以實際的 DCG,得到 0-1 之間的歸一化值。
數學公式
累積折損收益(DCG):
DCG@p = rel1 + Σ(reli / log2(i + 1)), i = 2 to p
歸一化折損累積收益(NDCG):
NDCG@p = DCG@p / IDCG@p
其中 IDCG(理想 DCG)是在最優排序下的 DCG(所有相關文檔按相關度降序排列)。
運作原理
以一個例子說明 NDCG 的計算:
假設查詢返回 5 個結果,其相關度等級為:
- 位置 1:相關度 3(高度相關)
- 位置 2:相關度 2(中等相關)
- 位置 3:相關度 0(不相關)
- 位置 4:相關度 1(略相關)
- 位置 5:相關度 3(高度相關)
計算 DCG:
DCG = 3 + 2/log2(3) + 0/log2(4) + 1/log2(5) + 3/log2(6)
= 3 + 1.26 + 0 + 0.43 + 1.15
= 5.84
理想排序應該是 3, 3, 2, 1, 0,計算 IDCG:
IDCG = 3 + 3/log2(3) + 2/log2(4) + 1/log2(5) + 0/log2(6)
= 3 + 1.89 + 1 + 0.43 + 0
= 6.32
因此 NDCG = 5.84 / 6.32 = 0.92
實際應用
- 搜索引擎評估:Google、Bing 等搜索引擎使用 NDCG 評估排序質量
- 推薦系統:評估推薦結果的排序效果
- Learning to Rank:作為模型優化的目標函數
- 廣告競價系統:評估廣告的排序和展現效果
- 信息檢索競賽:TREC、Yandex 等競賽的評估指標
常見誤區
許多人認為 NDCG 中的「折損」意味著靠後的結果完全無價值,但實際上折損只是降低其權重,靠後的相關結果仍然對 NDCG 有貢獻。此外,NDCG 需要人工標註相關度等級,標註質量直接影響評估的有效性。
常見問題
log2 函數是基於一個經驗發現:用戶查看搜索結果的概率大約以 log2 的速度下降。例如,排名第 2 位的結果被查看的概率約是第 1 位的一半。這個選擇使得折損函數與用戶實際的瀏覽行為相匹配,從而更準確地反映排序質量對用戶體驗的影響。不同的應用也可以根據自己的特點調整折損函數。
選擇應該根據應用場景決定。NDCG@10 常用於評估用戶實際會看到的結果(通常用戶只看前 10 個)。NDCG@100 則評估更全面的排序質量。在實踐中,通常同時計算多個位置的 NDCG 值(如 NDCG@5、NDCG@10、NDCG@20),以便從不同角度評估排序系統的性能。
相關度標註的主觀性是一個長期存在的問題。常見的解決方法包括:聘用多位標註者獨立進行標註,然後計算標註者之間的一致性(如 Cohen's kappa);使用眾包平台進行大規模標註,透過多數投票來確定最終標籤;採用更細粒度的相關度等級標準,減少主觀判斷的空間。在使用 NDCG 評估時,應該意識到評估結果的可靠性受標註質量的影響。
相關術語
來源
這個術語目前沒有標註外部來源。
其他格式:Markdown 版本