2012-02-05 56 views
1

是否有一种算法,允许基于两个排名中的这些项目的位置的差异,但也可以用该位置“加权”,例如,一个从位置2-> 1的玩家应该排名高于从9-> 8的玩家。排名算法来比较“排名”

玩具为例,我有两个列表/排名:

等级1:

  1. Player的一个
  2. 玩家B
  3. 玩家C
  4. 球员d ...

排名2:

  1. 球员d
  2. 玩家C
  3. Player的一个
  4. 玩家B ...

我当时就想, “重量” 的排名,平均排名差(或其他值),例如,如果玩家从9-> 8,用于排名的值将是(9-8)/ avg(8,9)= 1/8,5。

+0

哪个应该更好? [2-> 1]或[5-> 3]?那么[2000-> 1998]/[2-> 1]呢?你应该制定每个因素的重要性。 – amit 2012-02-05 12:53:45

+0

@amit这就是问题,我不确定哪个应该更重要。我想排名球员,例如网球运动员,并能够在排名中看到最相关的“跳跃”。例如,从2-> 1的玩家应该是最重要的变化,但是由于其“大小”的改进,从2000到1000的“跳跃”的玩家应该是重要的。 我只是想知道有没有人遇到过这个问题。 – 2012-02-05 13:04:25

回答

4

你想要什么似乎或多或少等于Spearman's rank correlation在非参数统计。它基本上总和了amount_moved的平方(旧的等级和新的等级之间的差异)

+0

但是,如果它仅以'amount_moved'的形式,那不会给(9-> 8)=(2-> 1)?即他试图避免的事情? – 2012-02-05 13:31:55

+0

是的,没有。这只是打算让人大开眼界/建议阅读。使'1 <--> 2'大于'9 <--> 10'表示存在一些未知的基础分布(泊松?)。通常,在游戏排名中,amount_played是所用权重的一个因素。在实际情况下,公式中也会出现衰减。 – wildplasser 2012-02-05 13:45:02

+0

如果这两个排名不是由相同的项目做出的呢? Google针对TOIS 2010的“无限期排名相似性度量”。 – 2012-11-26 19:20:01

1

向后数列表。计算位置之间移动的“值”,作为这些数字的平方差。

所以,如果你有在你的名单10项:

  • 2-> 1是10^2 - 9^2 = 19
  • 9-> 8将3^2 - 2^2 = 5

很难说这是不是你在追求什么样的相对重量之后。如果这不适合你,请尝试提高/降低指数以找到适合的东西。

+0

感谢您的回答......我认为这种方式可行。 我想定义一些参数来定义权重。例如,定义一些规则:2-> 1应当与从最后一个位置开始移动1/4的等级相关,或者类似的,以便有方法来定义哪些跳跃是最相关的。 – 2012-02-05 15:10:19