MAP(mean average precision)计算的是AP(average precision)的均值,
例如:1000个检索,MAP计算的是1000个检索结果AP的均值
AP@k的计算,例如
计算1: test_case([1, 3],[1,2,3,4,5],3, 5/6)
正确标签为[1, 3]
预测标签为[1,2,3,4,5]
需要计算AP@3,即预测标签的前3个值是对指标是很重要的,计算如下:
precision@1: 正确, 1*(1/2)=1/2
precision@2: 错误,0
precision@3: 正确,(1/3)*1=1/3
AP@2=1/2+0+1/3=5/6
计算2: test_case(1:5, [1 1 1 1 1], 5, 0.2)
正确标签:[1,2,3,4,5]
预测标签:[1 1 1 1 1]
需要计算AP@5,即预测标签的前5个值是对指标是很重要的,计算如下:
precision@1: 正确, 1*(1/5)=1/5
由于之后的precision虽然命中的也是1,但与第一个命中结果已经重复,因此最终结果=0.2
参考链接:
https://github.com/benhamner/Metrics/blob/master/MATLAB/metrics/test/testAveragePrecisionAtK.m
https://medium.com/@pds.bangalore/mean-average-precision-abd77d0b9a7e
http://fastml.com/what-you-wanted-to-know-about-mean-average-precision/