1. 程式人生 > >搜尋推薦系統評價指標

搜尋推薦系統評價指標

Precision和Recall

首先我們來看看下面這個混淆矩陣:

pred_label/true_label Positive Negative
Positive TP FP
Negtive FN TN

如上表所示,行表示預測的label值,列表示真實label值。TP,FP,FN,TN分別表示如下意思:

  • TP(true positive):表示樣本的真實類別為正,最後預測得到的結果也為正;
  • FP(false positive):表示樣本的真實類別為負,最後預測得到的結果卻為正;
  • FN(false negative):表示樣本的真實類別為正,最後預測得到的結果卻為負;
  • TN(true negative):表示樣本的真實類別為負,最後預測得到的結果也為負.

根據以上幾個指標,可以分別計算出Accuracy、Precision、Recall(Sensitivity,SN),Specificity(SP)。

Accuracy=TP+TNTP+FP+TN+FN Precision=TPTP+FP Recall=TPTP+FN SP=TNTN+FP
  • Accuracy:表示預測結果的精確度,預測正確的樣本數除以總樣本數。
  • precision,準確率,表示預測結果中,預測為正樣本的樣本中,正確預測為正樣本的概率;
  • recall,召回率,表示在原始樣本的正樣本中,最後被正確預測為正樣本的概率;
  • specificity,常常稱作特異性,它研究的樣本集是原始樣本中的負樣本,表示的是在這些負樣本中最後被正確預測為負樣本的概率。

在實際當中,我們往往希望得到的precision和recall都比較高,比如當FN和FP等於0的時候,他們的值都等於1。但是,它們往往在某種情況下是互斥的。例如,有50個正樣本,50個負樣本,結果全部預測為正樣本,那麼TP=50,FP=50,TN=0,FN=0,按照上面的公式計算,可以得到正樣本的recall卻為1,precision卻為0.5.所以需要一種折衷的方式,因此就有了F1-score。

F1score=2×recall×precisionrecallprecision

F1-score表示的是precision和recall的調和平均評估指標。

另外還有一個指標,即MCC,該指標對於不均衡資料集的評估非常有效,公式如下:

$$MCC = \frac{TP \times TN - FP \times FN}{ \sqrt {(TP FP)(TP FN)( TN FP)(TN FN)}}$$


下面簡單列舉幾種常用的推薦系統評測指標:

1、準確率與召回率(Precision & Recall)

準確率召回率是廣泛用於資訊檢索和統計學分類領域的兩個度量值,用來評價結果的質量。其中精度是檢索出相關文件數與檢索出的文件總數的比率,衡量的是檢索系統的查準率;召回率是指檢索出的相關文件數和文件庫中所有的相關文件數的比率,衡量的是檢索系統的查全率

一般來說,Precision就是檢索出來的條目(比如:文件、網頁等)有多少是準確的,Recall就是所有準確的條目有多少被檢索出來了。

正確率、召回率和 F 值是在魚龍混雜的環境中,選出目標的重要評價指標。不妨看看這些指標的定義先:

    1. 正確率 = 提取出的正確資訊條數 /  提取出的資訊條數     

    2. 召回率 = 提取出的正確資訊條數 /  樣本中的資訊條數    

兩者取值在0和1之間,數值越接近1,查準率或查全率就越高。   

    3. F值  = 正確率 * 召回率 * 2 / (正確率 + 召回率) (F 值即為正確率和召回率的調和平均值)

不妨舉這樣一個例子:某池塘有1400條鯉魚,300只蝦,300只鱉。現在以捕鯉魚為目的。撒一大網,逮著了700條鯉魚,200只蝦,100只鱉。那麼,這些指標分別如下:

正確率 = 700 / (700 + 200 + 100) = 70%

召回率 = 700 / 1400 = 50%

F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%

不妨看看如果把池子裡的所有的鯉魚、蝦和鱉都一網打盡,這些指標又有何變化:

正確率 = 1400 / (1400 + 300 + 300) = 70%

召回率 = 1400 / 1400 = 100%

F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%        

由此可見,正確率是評估捕獲的成果中目標成果所佔得比例;召回率,顧名思義,就是從關注領域中,召回目標類別的比例;而F值,則是綜合這二者指標的評估指標,用於綜合反映整體的指標。

當然希望檢索結果Precision越高越好,同時Recall也越高越好,但事實上這兩者在某些情況下有矛盾的。比如極端情況下,我們只搜尋出了一個結果,且是準確的,那麼Precision就是100%,但是Recall就很低;而如果我們把所有結果都返回,那麼比如Recall是100%,但是Precision就會很低。因此在不同的場合中需要自己判斷希望Precision比較高或是Recall比較高。如果是做實驗研究,可以繪製Precision-Recall曲線來幫助分析。

2、綜合評價指標(F-Measure)

P和R指標有時候會出現的矛盾的情況,這樣就需要綜合考慮他們,最常見的方法就是F-Measure(又稱為F-Score)。

F-Measure是Precision和Recall加權調和平均

當引數α=1時,就是最常見的F1,也即

可知F1綜合了P和R的結果,當F1較高時則能說明試驗方法比較有效。

3、E值 

E值表示查準率P和查全率R的加權平均值,當其中一個為0時,E值為1,其計算公式:

b越大,表示查準率的權重越大。

4、平均正確率(Average Precision, AP) 

平均正確率表示不同查全率的點上的正確率的平均。

5、DCG

       首先,介紹一下DCG。DCG的全稱是Discounted Cumulative Gain,它是衡量搜尋引擎演算法的一個指標。搜尋引擎一般採用PI(per item)的方式進行評測,即逐條對搜尋結果進行等級的打分。比如在Google搜尋到一個詞,得到5個結果。我們對這些結果進行3個等級的區分:Good、Fair、Bad,對應的分值分別是3、2、1。假設這5個結果的分值分別是3、1、2、3、2。        使用DCG這個統計方法有兩個前提:        (1) 在搜尋頁面中,相關度越高的結果排在前面越好。        (2) 在PI標註時,等級高的結果比等級低的結果好。 在一個搜尋結果的list裡面,假設有兩個結果的評級都是Good,但是第一個排在第一位,第二個排在第40位,雖然等級是一樣的,但排在40位的那個結果被使用者看到的概率比較小,對整個頁面的貢獻也要比第一個結果小很多。所以第二個結果的得分應該有所減少。DCG的計算公式如下:
其中,就是第 i 個結果的得分。 
     IDCG(Ideal DCG),即理想的DCG。舉上面的例子來說,5個搜尋結果的分值是3、1、2、3、2,那麼DCG = 3 + (1+1.26+1.5+0.86 )=7.62。        而IDCG下的分值排列順序是3、3、2、2、1,所以IDCG=3 + (3+1.26+1+0.43)=8.69。        所以,NDCG = DCG / IDCG = 0.88。 6. MAP 單個主題的平均準確率是每篇相關文件檢索出後的準確率的平均值。主集合的平均準確率(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。”

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

7. NDCG        因為不同的搜尋結果的數量很可能不相等,所以不同搜尋的DCG值不能直接做對比。解決的方法是比較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值,如下圖所示:

8、MRR(Mean Reciprocal Rank):

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

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