关于precision-recall曲线下降特性的探讨

本人的毕设由于涉及到检索,需要使用准确率与召回率(precision-recall)指标衡量检索算法的有效性。众所周知,precision-recall曲线通常呈下降趋势,也即使用同一检索方法对不同检索用例进行检索,若检索结果的准确率越高,召回率总会反而越低。本人对这一现象表示好奇,一直想搞明白其中的道理,也在网上查过相关资料。但暂时未发现有人系统地讨论过原因,大多数都是炒冷饭式的描述:两者并无必然联系,但在大规模检索中总会出现这一特点……

为此,本人经过一番思考,做了初步的探讨,有了些心得体会,现分享如下。读者若有更好的见解,不妨积极提出哦~~

 

定义:precision = 检索正确结果数 / 检索结果数,recall = 检索正确结果数 / 数据库内正确结果数

设:


则:precision = A / (A+B),recall = A / (A+C),其中:A、B、C、D、precision、recall均非负

 

precision-recall曲线特性解释如下:

在所有检索中,设定只讨论最靠前的固定数目个检索结果。这种情况下,如果某次检索的A增大,则B减少,使得A+B保持不变,以符合这一设定。显然,此时的precision增大。

而recall = A / (A+C) = 1 / 1+(C/A)。precision-recall曲线的特性告诉我们,使用同一检索方法进行不同的检索时,若precision增大,recall则通常下降。而此时A增大,如果要使即便A增大时,recall反倒是下降的,就只有一种可能,那就是C增大,而且其增大的比例要比A还要大!

由于C指的是没被检索出来的、但也属于正确的、处于数据库内的结果个数。则precision-recall曲线的特性可以转换为这样的说法:当A增大而导致precision增大时,往往C也增大,且增幅比A更大。这实际上反映了一个现象:检索方法是稳定的,也即如果使用同一检索方法进行某次检索,得到的正确结果数(A)变多,往往不是因为这个检索方法在检索这类用例时效果好,而仅仅是因为这类用例在数据库内包含的正确结果个数(A+C)较多,推高了检索这类用例时能返回的正确结果个数(A)。

至于为何C的增幅要比A大,这个可以通过观察数据库内,与各类用例各自相关的对象的安排特点来得出原因。通常,数据库属于某类用例的正确结果多,是因为即便这些对象属于同一类用例,但各自也有相互差别的特点,使得数据库值得为这类用例预留更多的存储份额。这种多样性程度越高,就会导致检索算法在检索这类用例时,要能尽量多地把同一类用例中不同特色的正确结果也检索出来,变得越困难。一般检索算法都无法令人满意地做到这点。从而,导致了当某类用例的A+C变多时,同一检索算法检索该类用例时,A的增幅比不过没C的增幅。进而导致precision-recall曲线下降的趋势。

当然,precision-recall曲线并非严格符合单调递减规律,只是在大规模的检索中,其呈现出一种这样的趋势。以上的内容也只能直观地解释这个趋势,并非伴有确定性结论的数学证明过程。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值