1. 程式人生 > >IR的評價指標-MAP,NDCG和MRR

IR的評價指標-MAP,NDCG和MRR

  • Map:相關性,1 or 0,計算排序後rank值
  • NDCG:
    1. 設定相關性等級(2^5-1, 2^4-1…)
    2. 計算累計增益值(嗯,就累加起來)
    3. 計算折算因子log(2)/log(1+rank) (越靠前的,越容易被點選)
    4. 歸一化到NDCG,為了不同等級上的搜尋結果的得分值容易比較
      4.1. 首先計算理想list的MaxDCG
      4.2 相除即可
  • MRR:”把標準答案在被評價系統給出結果中的排序取倒數作為它的準確度,再對所有的問題取平均。”

———————————————–

NDCG如何理解?對於搜尋引擎,本質是使用者搜一個query,引擎返回一個結果列表,那麼如何衡量這個結果列表的好壞?我能夠想到的是:

我們希望把最相關的結果放到排名最靠前的位置,因為大部分使用者都是從上往下閱讀的,那麼最相關的在前面可以最大程度減少使用者的閱讀時間;
我們希望整個列表的結果儘可能的和query相關;
第一個條件的滿足是首要的,而第二個條件的加入是保證整體結果質量,而這兩個條件都體現在了NDCG裡面,首先,計算NDCG,需要計算Gain,這個gain即是每條結果的質量的定義,NDCG把所有結果相加最終相加保證,整體質量越高的列表NDCG值越大。同時,Discounted的設計使得越靠前的結果權重越大,這保證了第一條,更相關的排在靠前的結果會有更大的NDCG值。從這兩點看,以NDCG為優化目標,保證了搜尋引擎在返回結果總體質量好的情況下,把更高質量結果排在更前面。

NDCG提供了一種計算方式,當我們有其他排名類似的需求的時候,NDCG都是值得參考的,其Gain以及Discounted的計算的變化可以產生很多其他有價值的metrics

———————————————–

MAP(Mean Average Precision):

單個主題的平均準確率是每篇相關文件檢索出後的準確率的平均值。主集合的平均準確率(MAP)是每個主題的平均準確率的平均值。MAP 是反映系統在全部相關文件上效能的單值指標。系統檢索出來的相關文件越靠前(rank 越高),MAP就可能越高。如果系統沒有返回相關文件,則準確率預設為0。
例如:假設有兩個主題,主題1有4個相關網頁,主題2有5個相關網頁。某系統對於主題1檢索出4個相關網頁,其rank分別為1, 2, 4, 7;對於主題2檢索出3個相關網頁,其rank分別為1,3,5。對於主題1,平均準確率為(1/1+2/2+3/4+4/7)/4=0.83。對於主題2,平均準確率為(1/1+2/3+3/5+0+0)/5=0.45。則MAP= (0.83+0.45)/2=0.64。”

NDCG(Normalized Discounted Cumulative Gain):

計算相對複雜。對於排在結位置n處的NDCG的計算公式如下圖所示:

在MAP中,四個文件和query要麼相關,要麼不相關,也就是相關度非0即1。NDCG中改進了下,相關度分成從0到r的r+1的等級(r可設定)。當取r=5時,等級設定如下圖所示:

(應該還有r=1那一級,原文件有誤,不過這裡不影響理解)

例如現在有一個query={abc},返回下圖左列的Ranked List(URL),當假設使用者的選擇與排序結果無關(即每一級都等概率被選中),則生成的累計增益值如下圖最右列所示:

考慮到一般情況下使用者會優先點選排在前面的搜尋結果,所以應該引入一個折算因子(discounting factor): log(2)/log(1+rank)。這時將獲得DCG值(Discounted Cumulative Gain)如下如所示:

最後,為了使不同等級上的搜尋結果的得分值容易比較,需要將DCG值歸一化的到NDCG值。操作如下圖所示,首先計算理想返回結果List的DCG值:

然後用DCG/MaxDCG就得到NDCG值,如下圖所示:

MRR(Mean Reciprocal Rank):

是把標準答案在被評價系統給出結果中的排序取倒數作為它的準確度,再對所有的問題取平均。相對簡單,舉個例子:有3個query如下圖所示:

(黑體為返回結果中最匹配的一項)

可計算這個系統的MRR值為:(1/3 + 1/2 + 1)/3 = 11/18=0.61。