Machine learning MAP(mean average precision) 詳細解說

1.MAP來源:

MAP是資料檢索系統中很重要的指標,用於評斷一個搜尋系統的好與壞,高的MAP代表搜尋出的相關文件排在很前面,因此MAP包括了順序的評斷訊息在裡面,而後來有人將這樣的評斷指標稍微修改一下規則套在圖像辨識的object detection任務中來做為評斷圖像辨識系統的好與壞。

P:precision

  • 正確率(precision):相當於返回的結果中相關文檔所佔的比例
  • 召回率(recall):指返回結果中占所有相關文檔的比例

例如資料庫中有各種不同特徵組成的男女資料,你被要求設計一個系統負責從資料庫中僅僅藉由特徵中找出所有女生的資料。假設這資料庫共有男生、女生各五人,系統一搜索出的結果如下:

  • 系統1:
1 2 3 4 5 6 7

正確率:4/7

召回率:4/5

  • 系統2:
1 2 3 4 5 6 7

正確率:4/7

召回率:4/5

由上表可以發現,系統1和系統2的正確率和召回率皆相同,但我們可以很明顯的看出第二個檢索系統比較好,為什麼會造成這種現象?因為我們沒考慮順序的因素,一個良好的檢索系統當然希望越相關的排在越前面越好,因此就出現了AP這個概念。

AP:average percision

針對每一個位置的準確率做計算,然後再取平均,例如系統1有五個女生的位置,第一個出現在第一位置,因此正確率為1/1。再來找尋第二個女生位置在第五順位,代表預測中的五個有兩個預測正確,因此正確率為2/5,其他以此類推因此可以算出AP為:

  • 系統1:

AP:(1/1+2/5+3/6+4/7+0)/5

  • 系統2:

AP:(1/1+2/2+3/3+4/4+0)/5

MAP:mean average percision

有了ap的概念後,MAP的理解就變得很簡單了,就只是多做幾次實驗然後取平均罷了。

2.圖像辨識MAP:

上面的例子是說明在檢索方面的MAP定義,運用在object detection中卻又是不太一樣的,詳細定義在 The PASCAL Visual Object Classes (VOC) Challenge中,裡面的MAP稱做11-point interpolated average precision,計算方式如下:

首先針對算法畫出PR曲線,然後根據下列公式計算出AP,r代表recall,p代表precision,意思就是說找出recall大於某一個閥值(ex:0.3)的最大準確率,總共有11個要找,閥值分別為0、0.1…1,全部找到後取平均就是每一類的AP,而MAP即是對所有分類都做一次求AP的動作然後再取平均。

Imgur

下面舉一個例子說明

這例子來自[3],假設已訓練好一個分類器(ex:car),用20個測試樣本評估後效果如下,gt_label為1表示測試樣本中有車,反之沒有,score代表分類器預測出的機率,右圖是將順序依照機率大小排列。

 

如果以top-5來當分水嶺可以得到下圖,其中4、2就代表TP,13、19、6代表FP,top-5之後的就代表TN和FN。

Imgur

因此可以算得

  • Precision=TP/(TP+FP) = 2/5 =40%
  • Recall =TP/(TP+FN) = 2/6 = 33%

如果將top-1~top-20全部依照剛剛的算法求出precision和recall並把對應的點畫在圖表上可以得出下圖:

Imgur

接下來針對每一個recall點(0~1,共11個)找出最大機率

1.r>=0:maxp=1

2.r>=0.1:maxp=1

3.r>=0.2:maxp=1

4.r>=0.3:maxp=1

5.r>=0.4:maxp=4/7=0.57

6.r>=0.5:maxp=4/7=0.57

7.r>=0.6:maxp=4/7=0.57

8.r>=0.7:maxp=5/11=0.45

9.r>=0.8:maxp=5/11=0.45

10.r>=0.9:maxp=6/16=0.375

11.r>=1:maxp=6/16=0.375

因此 AP = (4X1+3X4/7+2X5/11+2X6/16)/11=0.67

後來又換了一種新的算法,新的算法將recall的區間從(0、0.1…1)換成了(1/M、2/M、…M/M)共有M個,因此新的算法可以圖解如下:

Imgur

因此 AP = (1+1+4/7+4/7+5/11+6/16)/6=0.6621

Imgur

3.Machine learning 常用概念

P’ N’
P TP FN
N FP TN

P、N:真實值

P’、N’:預測值

  • TP:真實有,預測也有

  • TN:真實沒有,預測也沒有

  • FP:真實沒有,預測為有

  • FN:真實有,預測為沒有

  • Sensitivity(true positive rate) or recall

    真實有的數量占全部有的數量比例

    TPR = TP/(TP+FN)

  • False alarm rate(false positive rate)

    判斷成有的數量占全部沒有數量的比例

    FPR = FP/(FP+TN)

  • Accuracy

    判斷正確占全部數據的比例

    ACC = (TP+TN)/(P+N)

  • Precision:

    真實有的數量占全部判斷成有數量的比例

    Precision=TP/(TP+FP)

4.參考資料:

0 0 votes
Article Rating
Subscribe
Notify of
guest

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
leopardsaga
leopardsaga
6 years ago

请教个问题,如文中所述“如果以top-5來當分水嶺可以得到下圖,其中4、2就代表TP,13、19、6代表FP,top-5之後的就代表TN和FN。”,那如果取top-7,id为16,概率只有0.24的也算预测正确的TP吗,需不需要一个概率的threshold。没有threshold的话,0.24也算预测正确TP,感觉有点奇怪?
版主回覆:(08/14/2018 08:17:21 PM)
沒有錯喔 pr table中的每個點就是代表不同的precision 以及 recall,因此每個點的就相當於採用不同的threshold,而計算AP時就是在算出pr table曲面下的面積,因此計算AP 時是不用考慮 threshold的