Information Retrieval(信息检索)笔记06:Evaluation(评价)

在之前的几篇笔记中,我们已经了解了 IR 系统设计中的各种方法。现在,我们来看如何去评价一个 IR 系统,该使用怎样的指标。我们可以具体一点来看,在日常生活中,我们最常使用的 IR 系统就是搜索引擎 (Search Engine),要评价一个搜索引擎的好坏,可以从以下几个方面入手:

  • 它索引的速度 (How fast does it index?) 。我们这里所说的索引速度主要指的是获取新的信息以更新索引的速度。在这个方面,带宽 (Bandwidth) 作为硬件上的瓶颈也会有一定的影响,比如谷歌在世界各地架设了服务器,但是网络上的信息量以及网页数量依旧太过庞大,就算每周刷新一次网页的信息,工作量依旧十分巨大。
  • 进行搜索的速度有多快 (How fast does it search?)。这对于用户来说是最关心的方面。这主要指的是搜索引擎进行索引时产生的延迟有多少,现在的绝对大多数搜索引擎都能将这种延迟响应压缩在极短的时间内。同时这部分也会关注搜索结果的质量,可以说是最关键的部分。
  • 查询语言的表现力 (Expressiveness of query language)。即搜索引擎是否有能力满足我们比较复杂的信息需求 (Information Need)。
  • UI 是否简洁 (Uncluttered UI)

以上所有的标准都是可以说是影响 “用户满意度 (user happiness) ” 的影响因子。但是 “用户满意度” 这个指标是很难量化的,因此,我们会选择影响其最重要的因子来简化问题,这个最重要的因子就是 "结果的相关性 (Relevance) ",我们可以通过对这个因子的测量来判断系统对于 “用户满意度 (user happiness) ” 的满足程度。

为了对 IR 系统进行相关性测量 (Relevance measurement) 就需要一个测试集 (Test Collection),它由以下 3 个重要的元素构成:

  1. 一个文档集 (A benchmark document collection)
  2. 一系列用于测试的信息需求 (Information) 集合。我们在第一篇笔记已经说过,信息需求一般表示为查询 (Query)。(A benchmark suite of queries)
  3. 一组相关性判定结果。一般会采用一个二值判断结果 (Binary Assessment) 来判断查询和文档之间要么相关 (Relevant) ,要么不想管 (Nonrelevant)

也就是说,对于一个 IR 系统的评价方式,主要围绕相关和不相关文档展开。对于每个用户的信息需求,将测试集中的文档的相关性简化为一个分类问题进行处理,并给出结果:相关/不相关。这些判定结果被称为相关性判定的黄金标准 (Gold Standard)/绝对真理 (Ground Truth)

现实中有相当多的标准测试集以及相关的评测会议,但是这些在本次的笔记中都不重要,因此不做介绍,只是稍微提一下 TREC (Text Retrieval Conference,文本检索会议) ,这是一个由 NIST (National Institute of Standards and Technology,美国国家标准技术研究所) 组织的大型 IR 系统的年度评测会议,这个框架下定义了很多任务,每个任务都有自己的测试集。但是,其中最著名的测试集还是用于1992 到1999 年间的最早8 次TREC Ad Hoc 任务的测试集。这些测试集总共由 6 张CD 组成,包括189 万篇文档(主要是新闻类文章,也包括其他类型的文章)、450 个信息需求及相关性判定,在TREC 中每个信息需求也称为主题(topic),并用详细的文字进行描述。多个不同的测试集定义在上述数据集的子集上。

下面我们正式来看具体如何度量系统的效果:

无序检索结果集合的评价 (Unranked retrieval evaluation)

和机器学习等其他任务一样,IR 系统最常用的两个基本指标就是正确率 (Precision) 和召回率 (Recall)。它们最早定义于一种非常简单的情况下:对于给定的查询 (Query) ,IR 系统返回一系列文档集合,其中的文档之间并不考虑先后顺序。这里我们先给出正确率 (Precision) 和召回率 (Recall) 的定义:

在这里插入图片描述
为了方便记忆和理解,我们也可以用真阳性 (True Positive) 等概念表示,比如:

在这里插入图片描述

我们也给出 Confusion Matrix:

在这里插入图片描述
有人可能会想要使用准确率 (Accuracy) 来代替上述两种指标,也就是所有文档中,判断正确的文档所占的比例: (tp + tn)/(tp + fp + fn + tn) 。准确率这个指标在大多数的分类任务中用作评判标准是很适合的,但是对于 IR 系统来说并不合适。

绝大多数情况下,信息检索中的数据存在着极度的不均衡性,比如通常情况下,超过 99.9%的文档都是不相关 (Nonrelevant) 文档。这样的话,一个简单地将所有的文档都判成不相关文档的系统就会获得非常高的准确率 (Accuracy),从而使得该系统的效果看上去似乎很好。然而,将所有文档标注为不相关文档(即不返回任何文档)显然不能使用户满意。因为用户往往想浏览某些文档,并且可以假设他们在浏览有用的信息之前能够在一定程度上容忍不相关文档的存在。因此这样看来,准确率的限制太严格。

同时采用正确率和召回率两个指标来度量效果有一个优点,即能够满足偏重其中一个指标的场景的需要。比如:

Web 检索用户希望第一页的所有的结果都是相关的,也就是说他们非常关注高正确率,而对是否返回所有的相关文档并没有太大的兴趣;
一些专业的搜索人士(如律师助手、情报分析师等)却往往重视高召回率,有时甚至宁愿忍受极低的正确率也要获得高的召回率。

而对于正确率 ( p ) 和召回率 ( r ) 这两个指标,我们希望能有一个折中。我们可以考虑一种极端的情况,那就是系统对于某个查询 (Query) 返回了所有文档,此时的召回率是 1,而正确率会比较低。这是因为召回率是一个单调非减函数,而正确率会随着返回的文档数目的增加而减少。 我们所希望的应该是:在容许一定的错误率的情况下,达到一定的召回率。换言之,我们希望召回率尽可能高的同时,保证结果的正确率。

因此就有了一个融合了正确率和召回率的指标:F 值 (F measure)。它是正确率和召回率的调和平均数 (Harmonic mean) :

在这里插入图片描述
这里的 β2 = (1 - α) / α。α ∈[0, 1],β ∈[0, ∞]。默认情况下,平衡 F 值 (Balanced F measure) 正确率和召回率的权重相等,即 α = 1/2 。也就是 β = 1,此时 F 的计算公式可简化为

在这里插入图片描述
平衡 F 值是默认情况,我们可以通过调整权值来选择不同的偏向性。当 β < 1 时,表明强调正确率 (Precision);当 β > 1 时,表明强调召回率 (Recall)。 需要注意的是,正确率、召回率和 F 值的取值范围都是 [0, 1]。

至于为何这里我们选择使用调和平均值而不是算数平均值,前面我们
提到过,我们可以通过返回所有文档来获得 100% 的召回率,此时如果采用算术平均来计算 F 值,那么 F 值至少为 50%。这表明在这里使用算术平均显然是不合适的。如果两个求平均的数之间相差较大,那么和算术平均值相比,调和平均值更接近其中的较小值,用图可以说明:

在这里插入图片描述

有序检索结果的评价方法(Evaluating ranked results)

之前介绍的正确率、召回率和 F 值都是基于集合的评价方法,它们都利用无序的文档集合进行计算。当面对诸如搜索引擎 (Search Engine) 等系统输出的有序检索结果时,有必要对上述方法进行扩展或者定义新的评价指标。

正确率 - 召回率曲线(precision-recall curve)

在结果有序的情况下,通常很自然地会将前面k个(k=1,2,…)检索结果组成合适的返回文档子集。对每个这样的集合,都可以得到正确率和召回率,分别以它们作为纵坐标和横坐标在平面上描点并连接便可以得到如下图所示的正确率 - 召回率曲线(precision-recall curve)

在这里插入图片描述
这条曲线之所以是锯齿状的,其实很简单,因为如果返回的第 k + 1 个文档为不相关 (Nonrelevant),那么召回率不变,但是准确率会下降;若为相关 (Relevant),那么召回率和准确率都会上升。

我们用一个例子来理解:
假设对于一个查询 (Query) 的 Ground Truth,即与其相关的文档为 D1, D3, D4
我们有 2 个检索系统 A 和 B:
A 返回了 2 个文档
B 返回了 7 个文档
具体情况如下:
在这里插入图片描述
我们以系统 A 为例:
第一个返回的文档是 D1,它是相关文档 (Relevant)。因此当前准确率 (Precision) 为 1/1 = 1,召回率 (Recall) 为 1/3。这里特别说一下为何召回率是 1/3,因为根据 Ground Truth 我们知道共有 3 个相关文档,目前返回了其中之一,因此召回率为 1/3。
第二个返回的文档是 D2 ,它是非相关文件 (Nonrelevant)。因此现在准确率变为 1 / 2,召回率依旧是 1/3。可以看到,这时就发生了我们所说的 “召回率不变,准确率下降的情况”


这里我们也给出系统 B 的正确率 - 召回率曲线(precision-recall curve):
在这里插入图片描述

同时,这样的正确率 - 召回率曲线(precision-recall curve)实际上也有助于帮助我们在 K 相同时,选择更好的系统。

我们依旧用之前的系统 A 为例,我们知道系统 A 返回的文档为 {D1, D2},现在我们设想一个系统 A’,这个系统也返回 2 个文档 {D2, D1}。这里我们就可以来看系统 A’ 的曲线:
第一个返回的文档是 D2,它是不相关文档 (Nonrelevant)。因此当前准确率 (Precision) 为 0/1 = 0,召回率 (Recall) 为 0/3 = 0。
第二个返回的文档是 D1 ,它是相关文件 (Relevant)。因此现在准确率变为 1 / 2,召回率是 1/3。
可以看到,虽然最后的准确率和召回率一样,但是显然如果绘制为曲线,A’ 的曲线会在 A 的下方,这就直观体现了 A 比 A’ 更具优势

插值正确率 (Interpolated precision)

现在,我们把系统 A 和 B 看作是同一个系统对于两个不同查询的运行结果

对于正确率 - 召回率曲线(precision-recall curve),我们可以把这些细微的变化去掉来看整体的趋势,这样会使得曲线更平滑,也会更有用。实现这一目的常用的方法就是采用插值正确率 (Interpolated precision)。在某个召回率水平的插值正确率 (Interpolated precision) 定义为对于任意不小于 r 的召回率水平 r’ 所对应的最大正确率

在这里插入图片描述
简单的来说,在 [recall: ] 的区间内找到最大的准确率 (Precision) 取值,即为当前召回率 (Recall) 的插值正确率 (Interpolated precision)。在之前的正确率 - 召回率曲线(precision-recall curve)中,已经用短横线标注出了所有的插值正确率 (Interpolated precision)。

根据之前的正确率 - 召回率曲线(precision-recall curve),找到查询 B 的插值正确率,可得到如下的图:
在这里插入图片描述
查询 A 则可以得到:
在这里插入图片描述

可以看到,这里我们一共标注了 11 个插值正确率 (绿色的点),分别定义在 0.0, 0.1, 0.2, …, 1.0 等 11 个召回率水平上。这就是所谓的 11 点插值平均正确率 (11-point interpolated average precision)。

对于每个召回率水平,可以对测试集中每个信息需求在该点的插值正确率求算数平均。我们这里的例子中,仅有两个查询,对于这两个查询做平均计算,可以得到最后的曲线 (红线):

在这里插入图片描述
一个比较理想的曲线如下图所示:
在这里插入图片描述

使用这样的曲线来判断系统的优劣就会显得非常直观。先然,如果某个系统的曲线低于该曲线,则明显劣于该系统。单数对于比较复杂的曲线对比,比如下图,我们需要进行一定的分析:

在这里插入图片描述
假如我们更看重正确率 (Precision),像是 Web Search 之类的系统,那么,红线表示的系统就更符合要求。但是如果更注重召回率 (Recall),那么蓝线表示的系统会更好,因为它的平均准确率比较高。

MAP (Mean Average Precision )

MAP 也是常用的评价指标。MAP被证明具有非常好的区别性(discrimination)和稳定性(stability)。对于单个信息需求,返回结果中在每篇相关文档位置上的正确率 (Precision) 的平均值称为平均正确率(average precision),然后对所有信息需求平均即可得到MAP。假定信息需求 qj ∈ Q 对应的所有相关文档集合为 {d1, . . . dmj},Rjk 是返回结果中直到遇见 dk 后其所在位置前(含dk)的所有文档集合,则有:

在这里插入图片描述
如果某篇相关文档未返回,那么上式中其对应的正确率值为 0。对于单个信息需求来说,平均正确率是未插值的正确率—召回率曲线下面的面积的近似值,因此,MAP 可以粗略地认为是某个查询集合对应的多条正确率 - 召回率曲线下面积的平均值。

可能上面的讲解不太好理解,这里我们仍使用之前的例子来进行理解:

切记,现在 A 和 B 是同一个系统对于两个不同查询(重申,查询用来表示信息需求)的运行结果!!
在这里插入图片描述
这里,两个查询的平均正确率分别为:
Avg Precision(A) = (1/1) / 3 = 1/3
Avg Precision(B) = (1/1 + 2/3 + 3/4) / 3 = 29/36
所以,此时 MAP 即为:
MAP = (1/3 + 29/36) / 2 = 41/72

使用MAP,就不再需要选择固定的召回率水平,也不需要插值。某个测试集的 MAP 是所有单个信息需求上的平均正确率的均值。这导致的效果是,即使有些查询的相关文档数目较多而有些却很少,但是在最终的MAP 指示报告中每个信息需求的作用却是相等的。

单个系统在不同信息需求集 (查询集合) 上的 MAP 值往往相差较大,不同系统在同一信息需求上的 MAP 差异反而相对要小。这意味着用于测试的信息需求必须足够大、需求之间的差异也要足够大,这样的话系统在不同查询上体现出的效果才具有代表性。

对于许多重要应用特别是Web 搜索来说,该指标对于用户而言作用并不大,他们看重的是在第1 页或前3 页中有多少好结果。于是需要在固定的较少数目(如10 或者30 篇文档)的结果文档中计算正确率。该正确率称为前 k 结果的正确率(precision at k,可简写成 P@k)。该指标的优点是不需要计算相关文档集合的数目,缺点就是它在通常所用的指标中是最不稳定的,这是因为相关文档的总数会对 P@k 有非常强的影响

R-precision

能够解决上述问题的一个指标是 R-precision。它需要事先知道相关的文档集 Rel,然后计算前 |Rel| 个结果集的正确率。其中Rel 不一定是完整(complete)的相关文档集合,可以先将不同系统在一系列实验中返回的前k 个结果组成缓冲池,然后基于缓冲池进行相关性判定从而得到相关文档的集合。R-Precision 能够适应不同的相关文档集大小的变化。一个完美系统的 R-Precision 值可以达到1。

在我们之前的例子中,我们根据 Ground Truth 一直到相关文档为 {D1, D3, D4},因此 |Rel| = 3,所以 R-precision = Prec @ 3. 对于系统 B, 就是 2/3.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值