說到NDCG就需要從CG開始說起。
CG(cumulative gain,累計增益)可以用於評價基於打分/評分的個性推薦系統。假設我們推薦k個物品,這個推薦列表的CGk計算公式如下:
CGk=i∑kreli.
reli 表示第k個物品的相關性或者評分。假設我們共推薦k個文檔,reli可以是用戶對第i部電影的評分。
比如豆瓣給用戶推薦了五部電影,
M1,M2,M3,M4,M5,
該用戶對這五部電影的評分分別是
5, 3, 2, 1, 2
那麼這個推薦列表的CG等於
CG5=5+3+2+1+2=13.
CG沒有考慮推薦的次序,在此基礎之後我們引入對物品順序的考慮,就有了DCG(discounted CG),折扣累積增益。公式如下:
DCGk=∑i=1klog2(i+1)2reli−1.
比如豆瓣給用戶推薦了五部電影,
M1,M2,M3,M4,M5,
該用戶對這五部電影的評分分別是
5, 3, 2, 1, 2
那麼這個推薦列表的DCG等於
DCG5=log2225−1+log2323−1+log2422−1+log2521−1+log2622−1=31+4.4+1.5+0.4+1.2=38.5
DCG沒有考慮到推薦列表和每個檢索中真正有效結果個數,所以最後我們引入NDCG(normalized discounted CG),顧名思義就是標準化之後的DCG。
NDCGk=IDCGkDCGk
其中IDCG是指ideal DCG,也就是完美結果下的DCG。
繼續上面的例子,如果相關電影一共有7部
M1,M2,M3,M4,M5,M6,M7
該用戶對這七部電影的評分分別是
5, 3, 2, 1, 2 , 4, 0
把這7部電影按評分排序
5, 4, 3, 2, 2, 1, 0
這個情況下的完美DCG是
IDCG5=log2225−1+log2324−1+log2423−1+log2522−1+log2622−1=31+9.5+3.5+1.3+1.2=46.5
所以
NDCG5=IDCG5DCG5=46.538.5=0.827
NDCG是0到1的數,越接近1說明推薦越準確。
下圖爲兩個變量的概念解析: