作者:木叶
链接:https://www.zhihu.com/question/19645541/answer/39732647
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量。其中精度是检索出相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率;召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。一般来说,Precision就是检索出来的条目(比如:文档、网页等)有多少是准确的,Recall就是所有准确的条目有多少被检索出来了。
正确率、召回率和 F 值是在鱼龙混杂的环境中,选出目标的重要评价指标。不妨看看这些指标的定义先:
- 正确率 = 提取出的正确信息条数 / 提取出的信息条数
- 召回率 = 提取出的正确信息条数 / 样本中的信息条数 两者取值在0和1之间,数值越接近1,查准率或查全率就越高。
- F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率) (F 值即为正确率和召回率的调和平均值)
不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:正确率 = 700 / (700 + 200 + 100) = 70%召回率 = 700 / 1400 = 50%F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%不妨看看如果把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:正确率 = 1400 / (1400 + 300 + 300) = 70%召回率 = 1400 / 1400 = 100%F值 = 70% * 100% * 2 / (70% + 100%) = 82.35% 由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。
举例来说:一个数据库中有500个文档,其中有50个文档符合定义的问题。系统检索到75个文档,其中只有45个文档符合定义的问题。
准确率 = 45 / 75 = 60%
召回率 = 45 / 50 = 90%
若将所有文档都检索到,这些指标有何变化:
准确率 = 50 / 500 = 10%
召回率 = 50 / 50 = 100%
可见,准确率和召回率是相互影响的,理想情况下肯定是两者都高,但是一般情况下准确率高,召回率就低;召回率高,准确率就低;如果两者都低,那肯定是什么环节有问题了。
比如,在检索系统中,如果希望提高召回率,即希望更多的相关文档被检索到,就要放宽“检索策略”,便会在检索中伴随出现一些不相关的结果,从而影响到准确率。如果希望提高准确率,即希望去除检索结果中的不相关文档时,就需要严格“检索策略”,便会使一些相关文档不能被检索到,从而影响到召回率。