前段时间在看机器学习中的相关东西,其中有些术语如精确率、召回率、平均精度和交并比,于是在网上查呀,一大堆资料,看的是有些绕,感觉主要是好多中文blog和文章说的不清楚,最后查看了wiki和一篇外文结合一些中文blog算是比较清楚了。由于这些blog和文献都说的比较好也全,在此就不重复抄袭了,我把参阅的文章和blog链接一并放置在此并做些说明。
1、
https://blog.csdn.net/hysteric314/article/details/54093734#commentsedit
这篇blog是翻译这篇外文blog:
https://sanchom.wordpress.com/tag/average-precision/
大体看了下,感觉翻译的很好(除个别翻译的有些别扭,感觉那篇外文有些地方写的也有点别扭),这篇介绍的很全面也很详细,而且举了一个生动的示例,很容易理解
2、
http://www.cnblogs.com/xuexuefirst/p/8858274.html
这篇blog讲的很不错,特别是陈述了一些不平衡数据的问题,还有混淆矩阵等
3、
https://en.wikipedia.org/wiki/Precision_and_recall
这是wiki上关于精度和召回率的一些解释说的很好,blog 2中的混淆矩阵感觉就来自其中。说实话我也不是太想wiki一下毕竟一大堆英文,但百度关于这个是在说的不好
4、有关准确率和精度的相关的文章链接
1)
https://celebrating200years.noaa.gov/magazine/tct/tct_side1.html(这篇外文用一个射击实例生动的阐述了两者的不同)
2)
https://blog.csdn.net/lingyunxianhe/article/details/88377997 (这是 1)的译文)
3)
https://en.wikipedia.org/wiki/Accuracy_and_precision
4)
https://blog.csdn.net/wokaowokaowokao12345/article/details/72830242
5)
http://www.cnblogs.com/zhizhan/p/4870429.html
这个需要特别说一下,我的理解:
准确率
是针对全体评估数据集的,而
精确率
是针对你需要检出正样本中局部数据集的,这里的局部数据集是你的模型检出的那部分数据,你检出的数据一定小于等于
全体评估数据集的。准确率是检测结果相对真实结果(ground truth)而言,而精确率是相对检测结果彼此之间而言
5、
https://en.wikipedia.org/wiki/Evaluation_of_binary_classifiers
6、
https://github.com/rafaelpadilla/Object-Detection-Metrics
这篇外文和工程,用一个实例很好的说明了AP的计算过程(有11点法和逐点法)有图有真相,还有代码非常值得一看
7、
https://www.cnblogs.com/sddai/p/12181023.html
这个博客比较详细的解释了voc_eval.py代码。个人感觉最重要说明了:对于某个recall值r,precision值取所有recall>r中的最大值(这样保证了p-r曲线是单调递减的,避免曲线出现摇摆)
最后还是上一张wiki有关这几个术语的定义的截图: