歸一化折損累積收益 是什麼?

Normalized Discounted Cumulative Gain:歸一化折損累積收益 的完整解釋

NDCG 是評估排序系統性能的重要指標。它基於相關性等級進行計算,強調靠前結果的重要性,廣泛應用於搜索引擎和推薦系統的評估。

核心概念

NDCG 的核心思想是:

  1. 收益(Gain):不同相關程度的文檔有不同的收益值(如高度相關給 3 分,中等相關給 2 分,略相關給 1 分)。

  2. 折損(Discount):靠後位置的文檔的收益應該被折損。常用的折損因子是 log2(position + 1),這樣排名越靠後,折損越大。

  3. 累積(Cumulative):將所有文檔的折損收益相加,得到累積收益。

  4. 歸一化(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 需要人工標註相關度等級,標註質量直接影響評估的有效性。

常見問題