1. 程式人生 > >評價指標——P,AP,MAP

評價指標——P,AP,MAP

P:precision,預測正確的個數/測試總個數

AP:average precision,每一類別P值的平均值

MAP:mean average precision,對所有類別的AP取均值

×××××注意:這裡的P與預測順序有關。

            例如:假設有兩個查詢,查詢1有4個相關文件,查詢2有5個相關文件。某系統對查詢1檢索出4個相關文件,其rank分別為1,2,4,7;對於查詢2檢索出3個相關文件,其rank分別為1,3,5。

對於查詢1:

P1=1/1,P2=2/2,P3=3/4,P4=4/7

AP1=(1/1+2/2+3/4+4/7)/4=0.83

對於查詢2:

P=1/1,P2=2/3, P3=3/5

AP2=(1/1+2/3+3/5)/5=0.45

 於是有:MAP=(AP1+AP2)/2 = (0.83+0.45)/ 2=0.64

                                                               ————————特別的,對多標籤影象分類而言———————

多標籤影象分類(Multi-label   Image  Classification)任務中圖片的標籤不止一個,因此評價不能用普通單標籤影象分類的標準,即mean  accuracy,該任務採用的是和資訊檢索中類似的方法—mAP(mean  Average  Precision)。mAP雖然字面意思和mean  accuracy看起來差不多,但是計算方法要繁瑣得多,以下是mAP的計算方法:

首先用訓練好的模型得到所有測試樣本的confidence  score,每一類(如car)的confidence   score儲存到一個檔案中(如comp1_cls_test_car.txt)。假設共有20個測試樣本,每個的id,confidence  score和ground  truth  label如下:​​

接下來對confidence  score排序,得到:

這張表很重要,接下來的precision和recall都是依照這個表計算的

然後計算precision和recall,這兩個標準的定義如下:

上圖比較直觀,圓圈內(true   positives + false  positives)是我們選出的元素,它對應於分類任務中我們取出的結果,比如對測試樣本在訓練好的car模型上分類,我們想得到top-5的結果,即:

在這個例子中,true   positives就是指第4和第2張圖片,false   positives就是指第13,19,6張圖片。方框內圓圈外的元素(false   negatives和true  negatives)是相對於方框內的元素而言,在這個例子中,是指confidence   score排在top-5之外的元素,即:

其中,false   negatives是指第9,16,7,20張圖片,true   negatives是指第1,18,5,15,10,17,12,14,8,11,3張圖片。

那麼,這個例子中Precision=2/5=40%,意思是對於car這一類別,我們選定了5個樣本,其中正確的有2個,即準確率為40%;Recall=2/6=30%,意思是在所有測試樣本中,共有6個car,但是因為我們只召回了2個,所以召回率為30%。

實際多類別分類任務中,我們通常不滿足只通過top-5來衡量一個模型的好壞,而是需要知道從top-1到top-N(N是所有測試樣本個數,本文中為20)對應的precision和recall。顯然隨著我們選定的樣本越來也多,recall一定會越來越高,而precision整體上會呈下降趨勢。把recall當成橫座標,precision當成縱座標,即可得到常用的precision-recall曲線。這個例子的precision-recall曲線如下:

接下來說說AP的計算,此處參考的是PASCAL  VOC  CHALLENGE的計算方法。首先設定一組閾值,[0, 0.1, 0.2, …, 1]。然後對於recall大於每一個閾值(比如recall>0.3),我們都會得到一個對應的最大precision。這樣,我們就計算出了11個precision。AP即為這11個precision的平均值。這種方法英文叫做11-point interpolated average precision。​

當然PASCAL VOC CHALLENGE自2010年後就換了另一種計算方法。新的計算方法假設這N個樣本中有M個正例,那麼我們會得到M個recall值(1/M, 2/M, ..., M/M),對於每個recall值r,我們可以計算出對應(r' > r)的最大precision,然後對這M個precision值取平均即得到最後的AP值。計算方法如下:​

相應的Precision-Recall曲線(這條曲線是單調遞減的)如下:​

          AP衡量的是學出來的模型在每個類別上的好壞,mAP衡量的是學出的模型在所有類別上的好壞,得到AP後mAP的計算就變得很簡單了,就是取所有AP的平均值。

總結:

1.對多標籤影象分類,基本策略可以是“one vs rest”——獲取每個標籤所屬類的AP值,接著獲取所有AP值的平均值。

2.對每一類,獲取Precision值和Recall值,繪製P-R曲線,獲得AP值。具體的計算AP方法: (1)訓練結束,獲取打分排名(大—>小),取前N個; (2)計算 1/R(M),...... ,m/R(M)對應的最大Precision值 P1, ......., Pm; (3)AP= sum(P1+,......,Pm)/m