平均精確率 是什麼?

Mean Average Precision:平均精確率 的完整解釋

平均精確率(MAP)是評估信息檢索系統排序質量的重要指標。它在不同的召回率點上計算精確率,然後求平均值,全面反映系統的排序性能。

核心概念

MAP 的計算過程分為三個步驟:

  1. 計算每個查詢的平均精確率(Average Precision, AP)

    • 對於每個相關文檔,計算在檢索到該文檔時的精確率
    • 求這些精確率的平均值
  2. 加權考慮

    • 靠前的相關文檔對 AP 的貢獻更大
    • 這反映了用戶往往只看前幾個結果的現實
  3. 多個查詢的平均

    • 將所有查詢的 AP 平均起來,得到 MAP
    • MAP = (Σ AP) / 查詢數量

數學公式

對於查詢 q,其 AP 為:

AP(q) = (Σ P(k) × rel(k)) / 所有相關文檔數

其中:

  • P(k) 是第 k 個位置的精確率
  • rel(k) 是第 k 個位置是否為相關文檔(1 或 0)

運作原理

以一個例子說明 MAP 的計算:

假設查詢返回 10 個結果,其中位置 1, 3, 5, 8 是相關的,位置 2, 4, 6, 7, 9, 10 是不相關的。

  • 在位置 1:精確率 = 1/1 = 1.0
  • 在位置 3:精確率 = 2/3 = 0.67
  • 在位置 5:精確率 = 3/5 = 0.6
  • 在位置 8:精確率 = 4/8 = 0.5

AP = (1.0 + 0.67 + 0.6 + 0.5) / 4 = 0.69

如果有多個查詢,MAP 就是所有查詢 AP 的平均值。

實際應用

  • 搜索引擎評估:TREC、NTCIR 等信息檢索競賽的標準評估指標
  • 排序模型開發:評估和優化 Learning to Rank 模型
  • 推薦系統評估:評估推薦結果的排序質量
  • 信息檢索研究:學術研究中比較不同算法的性能
  • 系統改進監控:跟蹤搜索系統優化的效果

常見誤區

許多人認為 MAP 只關注是否找到相關文檔,忽略了排序位置的影響。但實際上,MAP 通過精確率的計算已經隱含地考慮了位置信息:靠前找到相關文檔會導致更高的精確率,進而更高的 AP。

公式與實際算一次

mAP(mean Average Precision,平均精確率均值)分兩層。

第一層,單一類別的 AP。 把該類別的所有預測依信心分數由高到低排序,逐一累積計算精確率與召回率,AP 就是精確率對召回率曲線下的面積。

實際算一次。假設某類別共有 3 個正確目標,模型給出 5 個預測,由高分到低分排序後正誤如下:

排名 正確與否 累積正確數 精確率 召回率
1 正確 1 1 ÷ 1 = 1.00 1 ÷ 3 = 0.33
2 錯誤 1 1 ÷ 2 = 0.50 0.33
3 正確 2 2 ÷ 3 = 0.67 2 ÷ 3 = 0.67
4 正確 3 3 ÷ 4 = 0.75 3 ÷ 3 = 1.00
5 錯誤 3 3 ÷ 5 = 0.60 1.00

取每個召回率點之後的最大精確率(這叫插值),三個召回率點的值分別是 1.00、0.75、0.75,

AP = (1.00 + 0.75 + 0.75) ÷ 3 = 0.833

第二層,mAP 就是所有類別的 AP 取平均。 有 20 個類別就算 20 個 AP 再平均。

mAP@0.5mAP@0.5:0.95 的差別

物件偵測裡,一個預測框算不算「正確」,要看它跟標準答案框的 IoU(交集除以聯集)有沒有超過門檻。

mAP@0.5:IoU 超過 0.5 就算對。門檻寬鬆,數字看起來漂亮,是早期 PASCAL VOC 的標準。

mAP@0.5:0.95:從 0.5 到 0.95 每隔 0.05 取一個門檻,總共 10 個門檻各算一次 mAP 再平均。這是 COCO 的標準,對框的位置精確度要求高很多,同一個模型的數字通常會比 mAP@0.5 低一大截。

比較兩個模型的 mAP 之前,一定要先確認兩邊用的是同一個門檻定義與同一個資料集。看到「mAP 0.85」而沒有標註條件,這個數字沒有意義。

這個指標在回答什麼問題

mAP 同時懲罰兩種錯誤:漏掉目標(召回率低)與亂框一堆(精確率低)。它比單看準確率合適,因為物件偵測沒有「總樣本數」可以當分母。

它的限制是把所有類別平等對待。實務上如果只有一兩個類別真正重要,看那幾類各自的 AP 會比看 mAP 更有意義。

常見問題