微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最高k精度

如何解决最高k精度

我有一个用于搜索的文档数据库。对于每次搜索,都有n个肯定值。现在,如果我通过precision @ k和callback @ k评估搜索性能,那么后者的工作就可以了:

recall @ k =真实正数/正数=真实正数/ n

真实肯定的数量在[0,n]范围内,所以callback @ k在[0,1]范围内-完美。 但是,关于precision @ k的事情变得很奇怪。如果我计算

precision @ 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的示例。

假设您检索了1个与102等级相关的2文档(并且其中有5个相关文档总计-未检索到其中之一。)

您可以在召回点(k的值分别为2和5)计算precision @ k。

这给出了:

3

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

请注意,系统A能够更好地排名相关文档,并且能够获取更多的相关文档,因此其得分要高于无法满足这两种情况之一或两种情况的系统。

还请注意,如果您在总共检索的10个排名中,前3个rel文档检索到了3个rel文档(请选中此复选框),那么您将在此指标上获得满分1/2 (at position 2,one is relevant out of 2) + 2/5 (at position 5,one 2 are relevant out of 5) ,这可以解决您的关注激发了这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。