Balancing value and weight

One of the problems I already faced a few times when building up jamendo was ordering by value and weight. I could have solved it when working on, but well, it waited until today.

First let me explain the problem: Users can rate albums. Then, the website have to order them by popularity. How to compute this? We have 2 parameters: value (The average rating of the album) and weight (the number of users who rated the album). So popularity=f(rating,users);

Most websites use f=rating. So an album rated 10/10 by only one visitor would top another one rated 9/10 by a hundred visitors. Of course, we want to change this behaviour.

I ran into the same issue when redesigning the so-called “sylvinus1” recommendation algorithm for iRATE this afternoon. So after a quick brainstorming with myselft, I decided to start jamendo with:

f = rating * ( users / (users+1) )^2

For those of you who don’t understand this, it will make the website take full account of the rating only when the album was rated by more than ~20 users. Before that, the website won’t fully “trust” the rating, so you’ll end up seeing 5-stars albums ordered after 4-stars albums sometimes.

Of course the formulae isn’t perfect, but we’ll see in a few months if today I was plainly wrong, or if I was enlightened… :)