- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文档数据库,我可以在其中执行搜索。对于每一次搜索,都有 n 个肯定。现在,如果我通过 precision@k 和 recall@k 来评估搜索的性能,那么对于后者来说一切都很好:
recall@k = 真阳性/positives = 真阳性/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@k
被计算为 #num_relevant/k
,它的最大值可能是 1(如果检索列表中的所有 k 个排名靠前的文档是相关)。
你的论点是正确的,因为如果#relevant_docs 小于 k 那么你就会被 P@k 指标错误地惩罚,因为在这种情况下即使有完美的检索你也不会得分 1
关于指标。
因此,一个标准的解决方案是同时考虑和计算精度值,而不是在任意 k 值处,而是在召回点处,即在您的排名列表中检索到相关文档的那些位置.然后,您最终会将总和除以相关文档的数量。此度量称为平均精度* (MAP)。下面是计算 MAP 的示例。
假设您检索了 10
个文档,其中 2
与排名 2
和 5
相关(并且总共有 3
个相关文档 - 其中一个未检索到)。
您在召回点(k = 2 和 5 的值)计算 precision@k。
这给出:
1/2 (at position 2, one is relevant out of 2) +
2/5 (at position 5, one 2 are relevant out of 5)
然后将此数字除以 3(已知相关文档的总数)。最后一步有利于实现高召回率的系统,而基于分界点的精度有利于将文档检索到最高排名的系统。
请注意,系统 A 以更高的排名检索相关文档并检索更多的相关文档,其得分要高于无法满足其中一种或两种情况的系统。
另请注意,如果您在总共检索到的 10 个文档中检索到排名前 3 的 3 个相关文档(选中此),您将在此指标上获得满分 1
,这些文档解决了您的担忧激发了这个问题。
关于precision - Top k精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63850906/
我想打印精度为 4 的 float 。我使用 numpy , jupyter notebook我试过: %precision %.4g %precision 2 np.set_printoptions
我不知道如何解决这个问题,我知道浮点数的显式、隐式和 IEEE-754 规范化表示,但如何将其分解为小问题。请帮我想象一下。 最佳答案 让我们假设 IEEE-754 单精度浮点数。在这样一个浮点数中,
我有一个从 Azure Log Analytics 查询返回的值(以字节表示): 我想将其转换为兆字节并使其更易于阅读。在本例中为“4.19 MB”。 当我尝试将字节值转换为兆字节时,我似乎无法让 K
我最近收到的一项家庭作业要求我们采用在计算机中执行时可能会造成精度损失的表达式,并对其进行更改以避免这种损失。 不幸的是,执行此操作的指示尚未非常明确。通过观察各种正在执行的示例,我知道有一些方法可以
这更多的是一个数值分析问题,而不是编程问题,但我想你们中的一些人能够回答它。 在两个 float 相加中,是否有精度损失?为什么? float 和整数相加时,是否有精度损失?为什么? 谢谢。 最佳答案
所以我知道浮点精度(以及 1.1 之类的东西如何不能用二进制精确表示)等等,但我想知道:那么,与数学相关的库如何实现无限精度?换句话说,例如,您将如何以二进制形式准确地表示 1.1?只是一个简短的描述
阅读本文 http://en.wikibooks.org/wiki/Ada_Programming/Types/delta 让我想知道 delta 的极限值是多少是。 例如 delta 127 ran
我有一个文档数据库,我可以在其中执行搜索。对于每一次搜索,都有 n 个肯定。现在,如果我通过 precision@k 和 recall@k 来评估搜索的性能,那么对于后者来说一切都很好: recall
我注意到在 Modelica(使用 Wolfram System Modeler 4.3)中集成延迟固定时间量的脉冲输入的数值问题: model PulseTest "Test FixedDelay
我看过很多关于系统时钟的讨论,据说例如标准 PC 时钟,例如Windows 的精确度仅为+/-10 毫秒,而实时系统时钟的精确度为亚毫秒级。但这些说法意味着什么?这种时序变化的严重程度完全取决于测量时
我一直在阅读一些内容,但我很难理解如何解释“数字 x”。即: type something is digits 6 我知道它的精度是 6 位数字,但我想让我困惑的是这是什么意思。 1) Y.XXXXX
我的 Elasticsearch 映射(我使用的是 ES 2.1)中有一个 date 类型的字段(输入格式 epoch_second)。我知道我可以在该字段上进行排序 { "sort": [
我在 C++ 中使用 CPLEX 来解决集线器位置问题,即 MIP,并且我最近发现了一组非常精确的输入,CPLEX 认为这些输入是不可行的(即 CPXMIP_INFEASIBLE),即使该问题确实可行
简单地说,魔术函数 %precision 不考虑简单变量输出的浮点精度。 #Configure matplotlib to run on the browser %matplotlib noteboo
我正在尝试使用 sass + compass 来制作流体网格,并且在计算它们时我需要我的 % 至少有 8 位数字,但现在 sass + compass 正在将我的小数四舍五入为 3 位数字。我发现如果
希望如此,我可以第一次发帖,告诉我我想问的问题。 我有cpp代码,可记录从fpga向下到纳秒级的时间戳。它将此值写入CSV。在同一个csv中,我正在计算连续时间戳之间的差异。 当我将其导出到pytho
我用JAVA编写了以下方法: public static float surface(float r) { return(4*Math.PI*Math.pow(r,2));
我试图找出为什么我的 Java 程序中会出现这种精度丢失错误。 这是错误: error: possible loss of precision int digit = num/Mat
关于 java-7 功能“精确重新抛出”和 final Exception ex 有很多问题,我找不到我的问题的明确答案。 “精确重新抛出”和final Exception之间有什么关系? publi
SciPy interpolation有 3 种支持的方法: Supported are “linear” and “nearest”, and “splinef2d”. “splinef2d” is
我是一名优秀的程序员,十分优秀!