Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何比较排名列表_List_Compare_Ranking - Fatal编程技术网

List 如何比较排名列表

List 如何比较排名列表,list,compare,ranking,List,Compare,Ranking,我有两个排名项目列表。每个项目都有一个等级和相关分数。 分数决定了排名。这两个列表可以包含(并且通常包含)不同的项,即它们的交集可以为空。我需要衡量这些排名。 是否有著名的算法(在文献或现实系统中)可以这样做? 距离的度量应该考虑到项目的分数和等级 有很多方法可以比较排名前k的列表。有些人在做一些简化假设时计算起来非常简单,而另一些人则不那么简单,但在评估列表之间的等级相似性时更加严格。我最近看到的一篇论文,使用信息理论和数据压缩的概念,以一种有统计意义的方式处理了这个问题:这个问题以前从未得到

我有两个排名项目列表。每个项目都有一个等级和相关分数。 分数决定了排名。这两个列表可以包含(并且通常包含)不同的项,即它们的交集可以为空。我需要衡量这些排名。 是否有著名的算法(在文献或现实系统中)可以这样做?
距离的度量应该考虑到项目的分数和等级

有很多方法可以比较排名前k的列表。有些人在做一些简化假设时计算起来非常简单,而另一些人则不那么简单,但在评估列表之间的等级相似性时更加严格。我最近看到的一篇论文,使用信息理论和数据压缩的概念,以一种有统计意义的方式处理了这个问题:

这个问题以前从未得到过回答,但我仍然认为它对很多人来说很重要:

您的两个要求,即列表的非连接性和秩的重要性未通过通用相关性测试得到满足。除此之外,他们中的大多数人(例如Kendall Tau)不考虑订单:

>>> from scipy.stats import kendalltau
>>> kendalltau([1,2,3,4,5], [2,1,3,4,5])
KendalltauResult(correlation=0.79999999999999982, value=0.050043527347496564)
>>> kendalltau([1,2,3,4,5], [1,2,3,5,4])
KendalltauResult(correlation=0.79999999999999982, value=0.050043527347496564)
第一次比较产生的值应该比第二次小得多,因为列表的头部比尾部更重要(第二项要求)

除此之外,我们还可以看到,两个列表需要具有相同的大小和相同类型的元素(第一个要求)

可能的解决方案

满足您所有需求的度量称为。这是所谓的基于平均值的重叠的推广,这在本文中得到了很好的说明。 同一个家伙也出了一个RBO

2018年1月更新:

  • python 3.5.2的另一个实现

    • 也许不能完全解决这个问题,但绝对值得一看

      当排序很重要时,它提供了一种更好的计算排序列表之间相似性的方法,因为它允许基于排序的任意加权

      例如,人们可能更感兴趣的是在列表的前20项中增加相似度,而不是统一地增加相似度


      在中也有一个很好的实现。

      对两个排名列表之间的差异有一个很好且简单的度量。给出了评分列表之间的(dis)相似性度量,但如果两个列表的交集为空,则必须发明一种破解方法(例如,使用一些最大分数;再次参见Cavnar&Trenkle)。参考文章“基于N-Gram的文本分类”(1994)提供了排名列表之间距离的可能度量。但是,给定的示例(比较n-gram的排名列表)没有输入拐角情况的详细信息,也没有输入在不匹配的情况下如何定义“最大”距离。而且这些项目没有相关的分数。事实上,没有匹配的问题已经讨论过了,IIRC。当制作top-k列表时,仅出现在一个列表中的任何项目都会受到k+1的惩罚。谢谢,这对我来说很有效。我已经确定了股票清单[50],并想知道它们每天的变化有多大,主要股票的得分越来越重。干杯