如何解决最高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
个与10
和2
等级相关的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 举报,一经查实,本站将立刻删除。