1

I'm a CS student doing a report on alternative voting systems. One of the best systems I believe is a ranked vote. For example.. In a presidential election, each president would be ranked 1-5. (IMO the problem with the US system is that only votes for the winner actually count)

Just wondering if anyone knows the best way to add up the ratings? I have searched around and I know Amazon uses weighted averages. I would think it might make sense to just add up each "star" and the person with the most wins. Maybe someone more mathematically inclined can suggest something better?

John Rotenstein
  • 241,921
  • 22
  • 380
  • 470
theCamburglar
  • 224
  • 1
  • 2
  • 10
  • It depends what you want done with the summary score. If you're really talking about elections, I suppose you should read up on social choice theory. – Frank Feb 16 '15 at 21:00
  • You can change _"US system"_ to _"every voting system on the planet"_ (political ones) – keyser Feb 16 '15 at 21:04

2 Answers2

0

One fun thing you can do to a rating system is pass the votes through a low pass filter. This helps eliminate extremes where some dude out of 100 just wants to troll blam something. This also helps mitigate those people that after they initially post something they 5 star their product with there self made accounts.

An average does almost the same thing, but a low pass filter you can bias the voting system to be harder or easier to raise the ranking or keep a ranking which can vary from subject to subject.

A low pass filter can look as simple as:

ranks = [2,3,1,2,4,2,1,2,3,4,3,4,2]
y = [ranks[0], ranks[1], ranks[2]]

for(i=2; i<ranks.length; ++i)
    currentRank = .2*ranks[i] + .3*y[2] + .2*y[1] + .3*y[0]
    y.push(currentRank)
    y.shift()

There are other properties to using a filter like this, but that would just require to research Digital Low Pass Filters to find those cool properties out :)

Diniden
  • 1,005
  • 6
  • 14
0

If all items have a lot of raters, taking the average should work reasonably well. Problems arise if data is sparse. For example, assume product A has one 5-star rating, and product B has 5 5-star and 5 4-star rating. I would trust product B more, although the arithmetic average is lower (4.5 vs 5).

The underlying issue is to take uncertainty into account. Intuitively, for few ratings we take a prior belief into account that is somewhere in an average range. This excellent blog post formalizes this idea and derives a Bayesian approach.

stefan.schroedl
  • 866
  • 9
  • 19