【问题标题】:rank correlation algorithm秩相关算法
【发布时间】:2013-03-21 23:55:08
【问题描述】:

我有一个朋友排行榜。然后,我得到更多相同朋友但排名不同的列表。 是否有算法可以检查哪个列表最接近原始排名?

谢谢

【问题讨论】:

  • 我认为你可以通过使用在 O(n log n) 中运行的 array inversions algorithm 来做到这一点。基本上,您采用原始排名,并按升序为每个项目分配一个 ID,然后在“不同排名”中搜索每个 n 个项目,以从初始排名中为它们分配相应的 ID(您应该能够有效地做到这一点)然后你将我上面提到的算法应用于分配给“不同排名”的 ID。

标签: algorithm math ranking correlation


【解决方案1】:

这可能取决于您对两个排名之间“距离”的衡量标准。

例如,如果我们定义

dist(R1, R2) = Sum abs(position of i in R1 - position of i in R2), over all i

然后你可以将每个i的位置存储在一个数组中

pos[Peter] = 3

表示Peter 显示为您排名中的第三位朋友。

通过使用pos 计算上述总和,可以在线性时间内找到最接近的排名。

【讨论】:

  • 这是一个很好的解决方案。但是,它并没有告诉我很多关于距离的重要性。假设我有一个排名列表,其中有 200 个朋友落后 1 位,另一方面,我有一个排名列表,其中一个朋友的排名落后 200 位。距离将是相同的。不过排名第二的排名比排名第一的差很多。
  • 您可以通过取位置差异的平方或立方来惩罚较大的差异。
【解决方案2】:

我认为您应该比较它们之间的排名距离,但使用权重。因为例如排名第1的用户在第10位,这是一个很大的差异,但是如果排名第101位的用户在第110位,则变化不大。因此,您应该对排名较高的用户的差异设置更高的系数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 2016-02-17
    • 2021-02-11
    • 1970-01-01
    • 2011-01-20
    • 2012-02-28
    • 2012-08-25
    • 2013-03-21
    相关资源
    最近更新 更多