【问题标题】:Top k precision前k精度
【发布时间】:2020-12-30 04:53:48
【问题描述】:

我有一个文档数据库,我在其中执行搜索。每次搜索都有 n 个正数。现在,如果我通过precision@k 和recall@k 评估搜索的性能,那么对于后者来说一切正常:

recall@k = 真阳性 / 阳性 = 真阳性 / n

真阳性的数量在 [0, n] 范围内,因此recall@k 在 [0, 1] 范围内 - 完美。 然而,关于precision@k,事情变得很奇怪。如果我计算

精度@k = tp / (tp + fp) = tp / k

precision@k 在 [0, n/k] 范围内,这对我来说没有太大意义。例如,考虑边缘情况 n=1。一个不能增加 tp 因为只有不超过 n 个正数,一个也不能减少 k 因为,嗯,它被称为precision@k,不是吗?

我做错了什么?

我正在谈论的一个例子可以在 [1] 图 8b 中找到。您可以看到前 1..200 个查询结果的精确召回曲线。尽管数据库中的阳性结果少于 200 个,但准确率还是相当高的。

[1]https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/19skfc3ZfKo/pdf

【问题讨论】:

    标签: precision information-retrieval precision-recall


    【解决方案1】:

    由于precision@k 被计算为#num_relevant/k,它的最大值可能为 1(如果检索到的列表中所有排名靠前的文档都是相关的,则会发生这种情况)。

    您的论点是正确的,如果 #relevant_docs 小于 k,那么您将受到 P@k 指标的错误惩罚,因为在这种情况下,即使检索完美,您也不会在 1 上得分指标。

    因此,一个标准的解决方案是考虑和计算精度值,而不是在任意 k 值,而是在 召回点,即在您的排名列表中检索相关文档的位置.然后,您最终会将总和除以相关文件的数量。此度量称为平均平均精度* (MAP)。下面是一个计算 MAP 的示例。

    假设您检索了10 文档,其中225 的等级相关(并且总共有3 相关文档-其中一个未检索到)。

    您在召回点计算precision@k(k = 2 和 5)。

    这给出了:

    1/2 (at position 2, one is relevant out of 2) +
    2/5 (at position 5, one 2 are relevant out of 5)
    

    然后你将这个数字除以 3(已知 rel 文档的总数)。最后一步有利于实现高召回率的系统,而基于截止点的精度有利于将文档检索到最高排名的系统。

    请注意,系统 A 以更好的排名检索相关文档并检索更多数量的 rel 文档,其得分将优于无法满足其中一种或两种情况的系统。

    另外请注意,如果您在总共检索到的 10 个排名中检索到前 3 个排名中的 3 个 rel 文档,那么您将在此指标上获得完美的 1(检查此),这解决了您对此的担忧问题。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2017-04-14
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2018-03-04
      • 2016-08-19
      相关资源
      最近更新 更多