在Precision和Recall的Recall计算中,如果不知道,如何确定“相关文档的总数”?可以估计吗?

数据挖掘 推荐系统 评估 信息检索 排行 学习排名
2022-03-15 17:19:29

在 Wikipedia 上有一个计算精度和召回率的实际示例:

当一个搜索引擎返回 30 个页面,其中只有 20 个是相关的,而没有返回 40 个额外的相关页面,它的精度是 20/30 = 2/3,这告诉我们结果的有效性,而它的召回率是 20/ 60 = 1/3,这告诉我们结果有多完整。

我绝对不明白如何在需要相关文档总数的现实/生活场景中使用 Precision 和 Recall 。

例如,在我的场景中,我有一组大约 9000 个收集的文档,我正在创建一个包含多种算法(如 Tf-idf、Doc2Vec、LDA ......)的推荐系统。它必须根据一篇选定的文章推荐 TOP 20 最相似的推荐(文章)。由于我不打算为每个推荐者查询手动计算 9000 篇文档中所有相关文章的数量,那么估计相关文章总数的相关方法是什么,以便我可以计算召回率,然后继续计算平均精度?

我发现的关于这个问题的唯一信息是这个讲义,他们建议在其中创建结果池:

有几种方法可以创建相关记录池:一种方法是使用从不同搜索中找到的所有相关记录,另一种方法是手动扫描多个期刊以识别一组相关论文。

但我正在尝试在其他地方找到有关这种“池”方法的更多信息。

常识告诉我,这可能是一种有效的方法:例如,抽取 50 个随机文档并手动计算该随机样本中相关文档的数量,并从中估计相关文档的总数。这可以是一种有效的方法吗?我想我可以为一些推荐结果执行此操作(尽管这会有点耗时)或选择一些测试用户。

1个回答

我认为我的问题的答案是上述方法的“at k”(“@k”)变体:precision@k、recall@k、precision@k 等。我需要将阈值设置为 TOP 20(k =20)个例子,然后评估精度和召回的结果(由我自己或测试用户决定谁将决定推荐是相关的还是不相关的)。对于任何对queirozf.com上相同问题感兴趣的人,我在这里找到了很好的实用示例

例如:

Recall @8 = true_positives@8 / (true_positives@8) + (false_negatives@8))