Hacker News new | ask | show | jobs
by tabtab 3221 days ago
What about having a scaling factor to adjust the impact of quantity (total) of individual ratings as needed? Rough draft:

  sort_score = (pos / total) + (W * log(total))
Here, W is the weighting (scaling) factor. Total = positive + negative
2 comments

IMDB uses something like this. It's called a "weighted" rating system. In the IMDB version what happens is that you calculate the average of all ratings of all items, and then push an item's rating towards the average. The fewer ratings it has the more it's pushed.

See http://www.imdb.com/help/show_leaf?votes for details.

That formula will give an item a higher score the more down votes it gets. A better approach is

score = (pos + a) / (tot + b).

Where a<b, e.g. a=1, b=2.

See this post why that formula follows from Bayesian reasoning: http://julesjacobs.github.io/2015/08/17/bayesian-scoring-of-...

I'm not sure what you mean in the 1st sentence. Example? The problem with the 2 weights is that it's 2 values that have to be given, and for large quantities neither makes much difference. It's why I used log().
The log(total) term increases without bound whereas the pos/tot term is at most 1, so in the limit of a lot of votes you will beat an item with fewer votes even if all your votes are downvotes.

That there are two configurable parameters is a good thing. One parameter controls how much of a penalty you get for having few votes, the other controls how many votes count as "few".