Let assume there are two users named User1 and User2 and we need to calculate the TCI between them. Let assume they have just two films in common, named x and y. User1 ranked the films as tiers x1, y1 and User2 ranked them as x2, y2.
Lets compare two scenarios
1. x1 - y1 = 1; x2 - y2 = 1
2. x1 - y1 = 0; x2 - y2 = 2
With the current implementation the TCI is the same in both scenarios:
1. TCI = (1 + 1)/2 = 1
2. TCI = (0 + 2)/2 = 1
But I believe a difference of 2 Tiers should weigh more then two differences of 1 tier. Instead of average difference of tiers the TCI should be calculated as a square root of the average square of tier differences. It is similar to the distance between two points, which is the square root of sum of squared differences of their coordinates:
Code: Select all
d = sqrt((x1-x2)^2 + (y1-y2)^2)
But here it would be an average square instead of a sum of squares:
Code: Select all
TCI = sqrt(((x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2 . . . )/n)
where
x1, y1, z1, ... rating tiers of User1 for films x, y, z...
x2, y2, z2, ... rating tiers of User2 for the same films.
So with the suggested implementation the TCI would be different in scenario 1 and 2 from above:
1. TCI = sqrt((1^2 + 1^2)/2) = 1
2. TCI = sqrt((0^2 + 2^2)/2) = 1.4