Вопрос

Is there an algorithm that allows to rank items based on the difference of the position of those items in two rankings but also "weighted" with the position, e.g. one Player that goes from position 2->1 should be ranked higher than a player that went from 9->8.

Toy example, I have two lists/ranks:

Rank 1:

  1. Player a
  2. Player b
  3. Player c
  4. Player d ...

Rank 2:

  1. Player d
  2. Player c
  3. Player a
  4. Player b ...

I was thinking to "weight" the ranking difference with the average ranking (or other value), for example, if a player goes from 9->8 the value used to rank will be (9-8)/avg(8,9) = 1/8,5.

Это было полезно?

Решение

What you want seems more or less equivalent to Spearman's rank correlation in non-parametric statistics. It basically sums the squares of the amount_moved (the difference between the old rank and the new rank)

Другие советы

Number your list backwards. Calculate the "value" of moving between positions as the difference of the squares of these numbers.

So if you've got 10 items in your list:

  • 2->1 would be 10^2 - 9^2 = 19
  • 9->8 would be 3^2 - 2^2 = 5.

Hard to tell if this is exactly what you're after without knowing what kind of relative weights you're after. If this doesn't quite suit you, try raising/lowering the exponent to find something that fits.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top