MAP(mean average precision)平均精度均值

precision(精確率)和recall(召回率)的計算

 

TP = True\ positive       (模型預測爲正樣本,實際爲正樣本)

TN = Ture \ negative     (模型預測爲負樣本,實際爲負樣本)

FP = False\ positive  (模型預測爲正樣本,實際爲負樣本)

FN = False\ negative  (模型將預測爲負樣本,實際爲正樣本)

precision = \frac{TP}{TP + FP}

Recall = \frac{TP}{TP+FN}

其次,我們需要知道的precision與recall基本成反比的,precison很高則recall會很低,反之,recall會很高。

爲什麼會這樣呢,對於一組我們準備好了的樣本(即已知了正樣本和負樣本情況),之後我們使用模型去對樣本進行檢測從而得到該樣本相對正樣本(該模型的檢測正樣本的)的置信度。我們通過控制置信度r來調整recall的值,置信度大於等於r的,我們認爲這個樣本是正樣本。對於一個已知的樣本,其實際正樣本數(TP+FN)是已知的。調整置信度會讓模型檢測出的正確的正樣本數變化,從而使recall變化。隨着置信度的調低,檢測出正確的正樣本數會越來越來多,而總的召回率(recall)在不斷提高,而precision會不斷降低。

關於隨着recall增大,precision爲什麼降低,我的觀點是模型是用來檢測正樣本的,所有當我們將置信度從高到低往下排列時,正樣本數是集中序列的前面的,因此隨着recall增大,precision會減少。

這個連接裏面有一個例子,結合我的講解和這個例子,MAP值應當會更好理解。

https://www.jianshu.com/p/82be426f776e

AP(average precision)是什麼?

關於AP的計算,我們參考PASCAL VOC CHALLENGE的計算方法。

我們讓recall在[0,1]裏從0開始取值,步長爲0.1,則最終有十一個recall值,AP就是由這十一不同recall階層precision的評價值而得到

AP=\frac{1}{11}\times (AP_{r}(0)+AP_{r}(0.1)+....+AP_{r}(1.0))

AP = \frac{1}{11}\times \sum_{r\epsilon {0.0,...,1.0}}AP_{r}=\frac{1}{11}\times\sum_{r\epsilon {0.0,...,1.0}}P_{interp}(r)

P_{interp}(r) = max_{r'>=r}P(r')

P_{interp}(r)是超過r的recall中對應最大的precision值,例如p_interp(0.6)就是大於0.6的所有recall中對應的最大的precision的值

MAP值是不同類別的AP值的均值

自2010年,PASCAL VOC CHANLLNEGE換了另一種算法。

新的計算方法假設這N個樣本中有M個正例,那麼我們會得到M個recall值(1/M,2/M....M/M),對於每個recall值r,我們可以計算出對應(r'>r)的最大precision,然後對這M個precision值取平均即得到最後AP值。

MAP的題外話:

MAP相對於precision、Recall是能夠反映全局性能的指標。

,如果一個系統的性能較好,其曲線應當儘可能的向上突出。

更加具體的,曲線與座標軸之間的面積應當越大。

最理想的系統, 其包含的面積應當是1,而所有系統的包含的面積都應當大於0。這就是用以評價信息檢索系統的最常用性能指標,平均準確率mAP其規範的定義如下:(其中P,R分別爲準確率與召回率)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章