Take the 2-minute tour ×
MathOverflow is a question and answer site for professional mathematicians. It's 100% free, no registration required.

Here's a mathematical modeling problem I came across while working on a hobby project.

I have a website that presents each visitor with a list of movie titles. The user has to rank them from most to least favorite. After each visit, I want to create a cumulative ranking that takes into account each visitor's individual ranking. Normally I would just take the mean ordinal rank: e.g., if Person A rated "Avatar" 10th and Person B rated it 20th, its cumulative rank would be 15th. However, new movies will be added to the list as the website grows, so each person will have ranked only a subset of the full movie list.

Any thoughts on how I can define "average rank" when some rankings do not cover the whole set? My best idea so far is to model this as a directed graph, where nodes are movies and weighted edges are preferences (e.g. "10 people ranked 'Avatar' right above 'District 9'"), and then finding sinks and sources. How else could one go about this?

(Sorry if this question is too applied.)

share|improve this question
    
It's not a duplicate, but there's some relation to this question: mathoverflow.net/questions/6019/… –  Tom Leinster Feb 21 '10 at 3:48
    
What is the final goal of this; i.e. what do you want your cumulative ranking to reflect? Depending on this, there are various possibilities. E.g. if you just want to get something that generally reflects the popularity of each movie, you can go with a trivial extension of what you do now. For each movie, just compute the fraction of people who ranked it 1st, 2nd, etc. -- the fraction is relative to the total number of people who ranked this movie. Then do something with this (take the average w.r.t. the fractions, or the mode, etc.) –  user3035 Feb 21 '10 at 4:04
    
this is question related to the netflix prize? –  john mangual Feb 21 '10 at 4:14
    
@John: not related to the Netflix Prize, although maybe there is something I can learn from that. –  RexE Feb 21 '10 at 4:20
add comment

1 Answer

up vote 5 down vote accepted

There are a few different ways of approaching the problem. A good reference for this precise problem is 'Rank Aggregation methods For The Web', by Dwork, Kumar, Naor and Sivakumar from the WWW conference in 2001. It's not the most recent work, but it lays out the mathematics nicely.

In general, the way to define an average is to define a metric, and then look at the point that minimizes the sum of distances from the individual lists. If the lists were full (i.e all defined over the same set), you could use Spearman's footrule distance, or the Kendall distance. Since they are not, the general idea is to find some global ranking that's locally optimal (i.e there's no other full ranking that yields a smaller distance to the partial lists and can be obtained by flipping rankings from the current candidate). As an aside, you can compare a full ranking with a partial ranking by merely projecting the full ranking onto the partial ranking and then computing one of the above mentioned distances.

Most of this is worked out in detail in the paper referenced, so your best bet is to start there.

share|improve this answer
    
Thanks Suresh; that is exactly what I was looking for! –  RexE Feb 21 '10 at 5:14
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.