查全率(召回率)、精度(准确率)和F值
从一个大规模数据集合中检索文档的时,可把文档分成四组
- 系统检索到的相关文档(A)
- 系统检索到的不相关文档(B)
- 相关但是系统没有检索到的文档(C)
- 相关但是被系统检索到的文档(D)
|
相关 |
不相关 |
检索到 |
A |
B |
未检索到 |
C |
D |
直观的说,一个好的检索系统检索到的相关文档越多越好,不相关文档越少越好.
召回率和精度是衡量信息检索系统性能最重要的参数.
召回率R:用检索到相关文档数作为分子,所有相关文档总数作为分母,即 R=A/(A+C)
精度P:用检索到相关文档数作为分子,所有检索到的文档总数作为分母.即 P=A/(A+B).
下面举例说明召回率和精度之间的关系:
一个数据库有500个文档, 其中有50个文档符合定义的问题.系统检索到75个文档,但是只有45个符合定义的问题.
召回率 R=45/50=90%
精度 P=45/75=60%
本例中, 系统检索是比较有效的,召回率为90%. 但是结果有很大的噪音,有近一半的检索结果是不相关. 研究表明:在不牺牲精度的情况下,获得一个高召回率是很困难的.参看下图:召回率越高,精度下降的很快,而且这种趋势不是线性的.
正确率、召回率和F值是在鱼龙混杂的环境中,选出目标的重要评价指标。
不妨看看这些指标的定义先:
正确率 = 正确识别的个体总数 / 识别出的个体总数
召回率 = 正确识别的个体总数 / 测试集中存在的个体总数
F值 = 正确率 * 召回率 * 2 / (正确率 + 召回率)
不妨举这样一个例子:某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的。Seaeagle撒一大网,逮着了700条鲤鱼,200只虾,100只鳖。那么,这些指标分别如下:
正确率 = 700 / (700 + 200 + 100) = 70%
召回率 = 700 / 1400 = 50%
F值 = 70% * 50% * 2 / (70% + 50%) = 58.3%
不妨看看如果Seaeagle把池子里的所有的鲤鱼、虾和鳖都一网打尽,这些指标又有何变化:
正确率 = 1400 / (1400 + 300 + 300) = 70%
召回率 = 1400 / 1400 = 100%
F值 = 70% * 100% * 2 / (70% + 100%) = 82.35%
由此可见,正确率是评估捕获的成果中目标成果所占得比例;召回率,顾名思义,就是从关注领域中,召回目标类别的比例;而F值,则是综合这二者指标的评估指标,用于综合反映整体的指标。