NDCG:推荐系统/搜索评价指标
本文轉載自【胖喵】博主,詳細請看https://www.cnblogs.com/by-dream/p/9403984.html
1. CG:累計增益
CG,cumulative gain,只考慮到了相關性的關聯程度,沒有考慮到位置的因素。它是一個搜素結果相關性分數的總和。指定位置p上的CG為:
reli?代表i這個位置上的相關度。
舉例:假設搜索“籃球”結果,最理想的結果是:B1、B2、 B3。而出現的結果是 B3、B1、B2的話,CG的值是沒有變化的,因此需要下面的DCG。
2. DCG:折損累計增益
DCG,?Discounted 的CG,就是在每一個CG的結果上處以一個折損值,為什么要這么做呢?目的就是為了讓排名越靠前的結果越能影響最后的結果。假設排序越往后,價值越低。到第i個位置的時候,它的價值是 1/log2(i+1),那么第i個結果產生的效益就是?reli?*?1/log2(i+1),所以:
當然還有一種比較常用的公式,用來增加相關度影響比重的DCG計算方式是:
3. NDCG:歸一化折損累計增益
Normalized 的DCG,由于搜索結果隨著檢索詞的不同,返回的數量是不一致的,而DCG是一個累加的值,沒法針對兩個不同的搜索結果進行比較,因此需要歸一化處理,這里是處以IDCG。
IDCG為理想情況下最大的DCG值。
其中 |REL| 表示,結果按照相關性從大到小的順序排序,取前p個結果組成的集合。也就是按照最優的方式對結果進行排序。
4. 實際案例
假設搜索回來的5個結果,其相關性分數分別是 3、2、3、0、1、2
那么 CG = 3+2+3+0+1+2
可以看到只是對相關的分數進行了一個關聯的打分,并沒有召回的所在位置對排序結果評分對影響。
而我們看DCG:
所以 DCG? = 3+1.26+1.5+0+0.38+0.71 = 6.86
接下來我們歸一化,歸一化需要先結算 IDCG,假如我們實際召回了8個物品,除了上面的6個,還有兩個結果,假設第7個相關性為3,第8個相關性為0。那么在理想情況下的相關性分數排序應該是:3、3、3、2、2、1、0、0。計算IDCG@6:
所以IDCG = 3+1.89+1.5+0.86+0.77+0.35 = 8.37
最終 NDCG@6 = 6.86/8.37 = 81.96%
總結
以上是生活随笔為你收集整理的NDCG:推荐系统/搜索评价指标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis批量操作详解及性能分析
- 下一篇: TCP-Traceroute 核心代码