Mean Average Precision
ph
mAP
한방에 이해가는 그림
말 그대로 AP의 평균이 mAP.
AP도 말 그대로 P의 Average. 단, correct query에 대해서만 계산한다. 위 그림의 Ranking #1에서 \(1 + 1/2 + 2/3 + 2/4 + 2/5 + 3/6 + \cdots\)이 아니고, \(1 + 2/3 + 3/6 + \cdots\)인 이유.
다음과 같이 나타내기도 하는데, $$\sum \text{precision} \cdot \Delta \text{recall} $$ AP@k까지 일반적으로 적용되는 식은 아니어서 그냥 모르는게 낫다.
AP@k는 k번째 query까지의 AP를 나타낸다. actual(=answer)의 길이보다 k가 더 큰 경우(=query의 길이가 더 긴 경우) query에는 필연적으로 오답이 있을수밖에 없으므로[1], AP를 계산할 때 k로 나눈다. 위 그림에서 보면 마치 correct query의 개수로 나누는 듯이 보이지만, min(len(actual), k)로 나누는 것임에 주의한다.[2] k는 당연히 prediction(=query)의 길이보다 작거나 같아야 한다.
가장 정확한 이해는 역시 코드를 보는 것인데, Ben Hamner라는 사람이 만든 테스트코드를 보면 된다. [3]
- ↑ 중복답안이 가능한 경우, 즉 \([1, 1, 1]\)등으로 답을 낼 수 있는 경우, 계산할 때는 처음의 \(1\)만 맞았다고 보고 계산한다. 위에 \(\Delta\text{recall}\)은 이 맥락에서 맞는 식이다.
- ↑ 예를들어, 답이 \([1, 2, 3, 4, 5]\)이고 query가 \([1,6,2,7,8,3,9,10,4,5]\)일 때, AP@\(3\)을 계산하면, \(1 + 2/3\)를 \(2\)로 나누는 것이 아니고 \(3\)으로 나누는 것이다.
- ↑ python코드 : https://github.com/benhamner/Metrics/blob/master/Python/ml_metrics/average_precision.py