Evaluation
- 在IR中, 我们更多的时候关心的是效能(effectiness), 而把效率(efficiency)放在第二位进行考虑. "效能"强调的是做正确的事, 而"效率"强调的更多的是更快地朝目标迈进.
Efficiency Measures
- Efficiency Indexing
如何评估一个索引化方法的效率? 通常我们通过以下几个参数来进行评估:
1. Elapsed Indexing Time: 建立文档索引的总时间
2. Indexing temporary space: 在建立索引的过程中所暂时需要使用的磁盘空间
3. Index size: 存储索引文件所需要的磁盘空间 - Efficiency Query
评估一个检索方法时, 我们通常通过以下几个方面来评估它的效率:
1. Query throughput (查询吞吐量): 一秒内能够处理的查询数量
2. Query latency (查询延迟): 一个用户获取查询结果所需要的等待时间
Effectiveness Evaluation
- A measure is a model --- so you need to use the measure that best models the task you are considering (models the user satisfaction and behaviour)
Precision and Recall
- 在检索中, 如果在检索结果中只考虑"相关"和"不相关"两种情况的话, 我们可以用召回率(Recall)和准确度(Precision)来表示本次检索的:
|.|表示这个集合的元素数量.
- 如果这两个指标用来衡量一个IR系统的话, 那么在检索过程中需要达到的目标是:
1. 尽可能检索到更多相关的文件(Recall)
2. 尽可能减少不相关文件的数量(Precision)
F-measure
- 有些时候, 在比较两个不同的系统的时候, 如果我们使用召回率和准确率进行比较的话, 可能会存在Trade-off的情况(也即每一个系统都在某个参数上优于其他系统, 但在另一个参数上却劣于其他系统). 在这种情况下, 我们可以使用F-measure来进行系统间的性能评估.
F-measure是召回率和准确率的调和平均, 也即:
此处, b是一个参数, 用于强调召回率相较于准确率的重要程度:
b > 1: 更看重召回率
b < 1: 更看重准确率
b = 1: 两个参数同样重要 -- F1测试 - 将信息检索作为一个分类问题来看时, 我们可以列出一个混淆矩阵:
Rank-based Measure
- 但是, 我们信息检索的结果并不是以集合的形式展现的, 而是以排序(Ranking)的方式展现给用户. 那么我们需要将准确率和召回率应用到Ranking上, 才能较为准确的评估搜索结果.
- 一种较为简单的方法是, 在Ranking中的某个位置截断, 计算截断之前的召回率或准确率. 例如, p@10: 前10位的准确率 = 前十名中相关文档的数量 / 10
- 那么, 如果我们对一个Raking的总体表现做一个评估的话, 要如何实现呢? 这里使用到平均精确率(Average Percision)的概念: 平均精确率也即在Raking中所有相关文档的精确率平均数. 示例如下, 假设一共有6个相关文档且全部被检索到:
num_rel是所有相关文档的数量(包括已检索到和未检索到的相关文档).
那么, 对于没有在Ranking中出现的相关文档, 又应该如何处理呢? 我们将其对于平均精确率的贡献视为0. 示例如下, 假设一共有6个相关文档, 但只有5个相关文档被检索到Raking中:
- 如果同时有多个查询呢? 有如下两种方法可以进行评估:
1. Mean Average Percision (MAP):
2. Geometric MAP:
- 但是, AP测试也有一定的局限性, 下面的情况表明了AP是头重脚轻的(Top heaviness).
在这种情况下, S1的AP = (1+1+1+1+1)/5 = 1, 而S2的AP = (1/6 + 1/7 + 1/8 + 1/9 + 1/10) = 0.646.
Task and User Models
- 每一种测量方法的背后其实都隐含着一个任务和用户模型
Task: 用户的目标是什么
User Model: 用户的行为是怎样的
例如, 在精确率(Percision)中, 我们的任务就是寻找相关文档, 并尽可能剔除不相关文档, 而用户在这种假设下, 会无序地检查每一个检索到的文档. 而在召回率(Recall)中, 我们的任务则变成了尽可能多地检索到所有的相关文档, 而用户则会将相关文档数量和检索结果进行对比. - 如果我们假设任务是找到一个相关文档或者唯一的那一个相关文档, 用户在此时的行为则是: 从头至尾有序地查看文档, 并会在找到第一个相关文档的时候停止. 那么这时我们的测量方法则是Reciprocal Rank(RR).
而Mean Reciprocal Rank(MRR)则计算的是多个查询的平均RR值.
Gain Discount Framework
- 在RR中, 我们可以将其视为用户的收益, 而第一个相关文档可以被视为对收益做出了固定值为1的贡献.
而每一个不相关的文档对于收益的贡献值则视为0.
每一个排名都对应着对于收益的不同程度的减益(discount) -- d = 1/rank
用户收获找到相关文档的收益, 但同时会被排名减益. - 至此, 我们可以依据这个框架得出一个新的测量方式 normalised Discount Cumulative Gain(nDCG): 但是, 如果继续沿用原有的框架, 那么公式中的gain(rel)只能是0或1(相关或不相关), 而discount(k)在原框架中, 又会因为rank的增长而下降得太快. 所以在nDCG中, 需要稍作改动:
其中, rel_k表示第k个相关文档的相关系数. 其中的系数"2"代表了相关文档的重要程度, 如果需要更重要相关度, 可增大此系数进行表示.
问题: discount中的log底数应该如何选择呢?
答:TBA - 另外一个测量方式称为Rank Biased precision (RBP), 也即排序偏差准确率. 在此种假设下, 用户总是会检查Ranking中的首个文档, 然后会有p的概率浏览下一个文档, 或者以1-p的概率停止浏览.
此处我们可以用用户模型来定义一个减益系数: 用户检视第i个文档的可能性:
同时, 用户会从相关文档中获得收益, 而收益函数测表示为:
当第i个是相关文档时, r_i = 1, 反之r_i = 0.
然后, 我们得到RBP在gain-discount框架下的表达式:
此处的p系数同样代表了用户的耐心程度(0 <= p <= 1). 更高的p系数代表着更有耐心的用户, 反之说明用户更没有耐心.
The C/W/L Framework
- 在C/W/L框架下, 用户总是会通过寻找相关文档来获得增益. 对于每一个文档, 用户需要决定是否继续检视整个Ranking.
- C: continue
假设一个用户正在查看第i个文档, 那么用户继续查看第i+1个文档的可能性为:
这里的系数J是什么? - W: weight
假设有条件延续概率C_i, 那么可用W_i表示用户在第i个文档上花费的注意力占用户总注意力的比例(fraction of total user attention spent on the document at rank i).
- L: last view
假设有条件延续概率C_i, 那么可用L_i表示查看的最后一个文档是第i个的用户的比例.
Graded Relevance -- uRBP
- 现在, 我们更多的希望在对于文档相关性的评估方面, 能有更多的不同, 也即不使用二进制的评估方式, 而是在gain-discount的框架下, 从多方面对于文档的相关性进行评分. 为此, 我们引入一个新的测量方法: understandability-biased RBP (uRBP). 在uRBP中, 它的减益和RBP相同, 但增益会从相关性和易懂性两个方面进行考虑:
p^{k-1}: 排名的减益
r(d@k): 相关性的增益
u(d@k): 易懂性的增益
Pooling(池化)
- 我们知道, 在实际工作中对于所有的文档进行详尽的评估是不可能的. 因此, 在需要同时对多个检索系统的大量检索结果进行评估时, 我们常使用池化的方法来生成一个检索结果的子集, 然后对这个子集进行评估.
1. 在每个搜索引擎的检索结果中选择前k条结果
2. 移除重复的文档
3. 对这些文档进行评估(文档不需要是有序的) - 但是, 这样的评估方法也同时存在着缺点 -- 它是不完整的
因为很有可能会有一些相关文档并没有被池化的系统检索到
Statistical Test
- 当我们对两个系统的效能进行比较时, 我们需要考虑一个可以表示meaningful difference的指标, 因此, 我们需要通过显著测试(significance test)来实现. 显著测试大多基于假设(Hypothesis):
- Null hypothesis: 两个系统A, B之间并无区别
Alternative hypothesis: 两个系统A, B之间存在差别
- 如果实验拒绝了null hypothesis, 那么说明alternative hypothesis成立.
- 显著测试能帮助我们量化评判效能的证据. - - 要想在离线评估方法上应用显著测试, 我们需要得到系统在一系列查询中的表现
- 然后, 我们需要在matched pairs(paired test/matched paris)中进行对比, 如m(A, q_i)和m(B, q_i).
- 测试会产生p值, 也即null hypothesis为真的概率. 较大的p值说明测试得到的两个系统之间的不同会和实际值相等或者更大. 较小的p值则说明null hypothesis是错误的.
- 为此, 我们需要设置一个拒绝null hypothesis的阈值α, 如果p <= α, 则拒绝null hypothesis. 通常我们会设置α=0.05, 0.01