Over the weekend I added a Highest Rated tab to the SpokenWord.org homepage. This is something I’ve done before on sites like IT Conversations, and it’s always a challenge. On one hand you want the feature to honestly display the highest-rated programs, but on the other hand you don’t want the list to get stale. You want to avoid the situation in which the most-popular items become increasingly popular and lock themselves into the top slots.
Working with my personal on-call mathematician, Bruce Sharpe, I’ve implemented an algorithm that is at least a good first cut. There are a number of tweakable parameters that have yet to be tweaked. The concept is to discount ratings by two factors: (1) discount each individual rating by the age of that rating; and (2) discount the adjusted average rating by the inverse of the number of ratings the object has received. Highest Rated is therefore influenced by (but not the same as) a popularity index.
At Bruce’s urging, I’m using the tanh() (hyperbolic tangent) function to determine the curves for both discounting formulas. In about 34 years of writing code I can honestly say that’s a first for me. I once wrote an entire floating-point runtime library in assembler language — yeah, that’s a challenge! — but I’ve never had much need for those trig functions myself.
The Highest Rated tab on the homepage currently shows too many programs from IT Conversations because of the recovery from a recent database coding error (mine), but over the next few days as the ratings age, the fairness of algorithms should kick in yielding more valuable data.