17 Oct 2017 in Algorithms
An interesting article about rating based sorting:
PROBLEM: You are a web programmer. You have users. Your users rate stuff on your site. You want to put the highest-rated stuff at the top and lowest-rated at the bottom. You need some sort of "score" to sort by.
WRONG SOLUTION #1:
Score = (Positive ratings) − (Negative ratings)
WRONG SOLUTION #2:
Score = Average rating = (Positive ratings) / (Total ratings)
Score = Lower bound of Wilson score confidence interval for a Bernoulli parameter
with a ruby implementation of:
require 'statistics2' def ci_lower_bound(pos, n, confidence) if n == 0 return 0 end z = Statistics2.pnormaldist(1-(1-confidence)/2) phat = 1.0*pos/n (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n) end
Whole article at evanmiller.org/how-not-to-sort-by-average-rating.html.