IR评估中如何衡量ranking、AP、MAP、recall的一些想法和方向

some ideas and direction of how to measure ranking, AP, MAP, recall for IR evaluation

我对如何评估信息检索结果的好坏有疑问,比如计算

相关文档rank, recall, precision ,AP, MAP.....

目前,一旦用户输入查询,系统就能够从数据库中检索文档。问题是不知道怎么评价。

我得到了一些 public 数据集,例如 "Cranfield collection" dataset link 它包含

1.document 2.query 3.relevance 评估

             DOCS   QRYS   SIZE*
Cranfield   1,400    225    1.6

请问如何使用"Cranfield collection"计算求值 相关文档rank, recall, precision ,AP, MAP.....

我可能需要一些想法和方向。不问如何编写程序。

计算准确率和召回率很简单; 精度是相关检索文档占您检索的所有文档的比例。 召回率是检索到的相关文档占所有相关文档的分数。

例如,如果一个查询有 20 个相关文档,而您检索了 25 个文档,其中只有 14 个与查询相关,那么: 精度 = 14/25 和 召回 = 14/20.

但是准确率和召回率应该以某种方式结合,这种方式称为 F-Measure,是准确率和召回率的调和平均值: F-Score = 2*Precision*Recall/Precision+Recall .

AP 告诉您在特定数量的检索文档中相关文档与不相关文档的比例。假设您检索了 25 个文档,并且在前 10 个文档中,检索到了 8 个相关文档。所以 AP(10) = 8/10;

如果您计算并为 1 到 N 添加 AP,然后将其除以 N,您就计算出了 MAP。其中 N 是 yoyr 数据集中相关文档的总数。

文献排名

Okapi BM25(BM 代表最佳匹配)是搜索引擎用来根据匹配文档与给定搜索查询的相关性对匹配文档进行排名的排名函数。它基于概率检索框架。 BM25 是一个 bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of the inter-relationship between the query terms within a document (e.g., their relative proximity). See the Wikipedia 页面以获取更多详细信息。

准确率和召回率

精准措施"of all the documents we retrieved as relevant how many are actually relevant?".

Precision = No. of relevant documents retrieved / No. of total documents retrieved

召回措施"Of all the actual relevant documents how many did we retrieve as relevant?".

Recall = No. of relevant documents retrieved / No. of total relevant documents

假设,当查询 "q" 被提交给具有 100 个相关文档 w.r.t 的信息检索系统(例如,搜索引擎)时。查询 "q",系统从总共 600 个文档中检索到 68 个文档。在检索到的 68 份文件中,有 40 份文件是相关的。所以,在这种情况下:

Precision = 40 / 68 = 58.8%Recall = 40 / 100 = 40%

F-Score / F-measure 是精确率和召回率的加权调和平均值。传统的 F-measure 或平衡 F-score 是:

F-Score = 2 * Precision * Recall / Precision + Recall

平均精度

您可以这样想:您在 Google 中输入内容,它会显示 10 个结果。如果所有这些都是相关的,那可能是最好的。如果只有一些是相关的,比如其中五个,那么最好首先显示相关的。如果前五名无关紧要而好的只从第六名开始,那就太糟糕了,不是吗? AP 分数反映了这一点。

举个例子:

AvgPrec of the two rankings:

排名#1:(1.0 + 0.67 + 0.75 + 0.8 + 0.83 + 0.6) / 6 = 0.78

排名#2:(0.5 + 0.4 + 0.5 + 0.57 + 0.56 + 0.6) / 6 = 0.52

平均精度 (MAP)

MAP 是多个 queries/rankings 的平均精度平均值。举例说明。

Mean average precision for the two queries:

对于查询 1,AvgPrec: (1.0+0.67+0.5+0.44+0.5) / 5 = 0.62

对于查询 2,AvgPrec: (0.5+0.4+0.43) / 3 = 0.44

所以,MAP = (0.62 + 0.44) / 2 = 0.53

有时,人们使用 precision@krecall@k 作为检索系统的性能度量。您应该为此类测试构建一个检索系统。如果你想在 Java 中编写你的程序,你应该考虑 Apache Lucene 来构建你的索引。