Jamie Ramsamy
Jamie Ramsamy

Reputation: 141

Algorithm for Rating Objects Based on Amount of Votes and 5 Star Rating

I'm creating a site whereby people can rate an object of their choice by allotting a star rating (say 5 star rating). Objects are arranged in a series of tags and categories eg. electronics>graphics cards>pci express>... or maintenance>contractor>plumber.

If another user searches for a specific category or tag, the hits must return the highest "rated" object in that category. However, the system would be flawed if 1 person only votes 5 stars for an object whilst 1000 users vote an average of 4.5 stars for another object. Obviously, logic dictates that credibility would be given to the 1000 user rated object as opposed to the object that is evaluated by 1 user even though it has a "lower" score.

Conversely, it's reliable to trust an object with 500 user rating with score of 4.8 than it is to trust an object with 1000 user ratings of 4.5 for example.

What algorithm can achieve this weighting?

Upvotes: 14

Views: 4934

Answers (4)

Vikas Kumar
Vikas Kumar

Reputation: 138

simboid_function(value) = 1/(1+e^(-value));

rating = simboid_function(number_of_voters) + simboid_function(average_rating);

Upvotes: 1

antonakos
antonakos

Reputation: 8361

You can use the Bayesian average when sorting by recommendation.

Upvotes: 3

Dan
Dan

Reputation: 592

I'd be tempted to have a cutoff (say, fifty votes though this is obviously traffic dependent) before which you consider the item as unranked. That would significantly reduce the motivation for spam/idiot rankings (especially if each vote is tied to a user account), and also gets you a simple, quick to implement, and reasonably reliable system.

Upvotes: 2

drewrobb
drewrobb

Reputation: 1604

A great answer to this question is here: http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

Upvotes: 10

Related Questions