① 从豆瓣电影评分算法说起
在PingWest看到一篇《豆瓣电影打分规则竟如此简单粗暴…》,作者写这篇文章是因为豆瓣创始人阿北最近写了一篇博文《豆瓣电影评分八问》,阿北博文是为了回应一些外界对豆瓣电影评分的质疑,然后作者看到这篇博文后,觉得豆瓣电影的评分算法有点low,就写了这样一篇吐槽文章。
那么这个很low的算法究竟是什么样子的呢?此处引用阿北原文。
简单说就是计算每部电影评论的算数平均值,并按此值来排名。
对这个算法持怀疑态度,因为如果按照这神手个算法的话,假设一部小众文艺片有10个用户给了全五星,和一部经典老片比如《十二怒汉》相比,小众文艺片排名比《十二怒汉》还要高,不过这在豆瓣电影TOP250里面不太可能。阿北可能只是为了文章写作方便或是保密起见,把算法故意说简单了,因为假如豆瓣公布了详细的算法,那电影发行方的水军们十分有可能针对这个算法制定出有效的刷分策略的。可怜我还真信了。
下面是阿北当年在知乎上的 回答 。
顺着PingWest这篇文章给的链接,我又去阮一峰博客看了他在2012年写的《基于用户投票的排名算法》系列文章,以及这些文章里的参考文章,发现排名算法很好玩很有趣,非常有收获,推荐阅读。
看完这些文章,我就想知道知乎的评论排名算法是怎么样的,于是去知乎找到他们产品经理 @黄涛的回答 ,知乎在2014年底更新的算法使用的正是Reddit在2009年引入的评论排名算法,也就是阮一峰老师在系列文章第5篇中介绍的“威尔逊区间”算法。在用这个算法之前,知乎用的是直接利用好评减去差评的结果来给评论排序,这种算法的缺点我就不介绍了,可以查看参考资料[1]。
“威尔悉磨逊区间”算法的数学基础是数学家Edwin B. Wilson在1927年提出的威尔逊区间修正公式,后来芝加哥工程师Evan Miller在2009年写了一篇 博客 ,认为该修正公式睁瞎斗可以用来做排名。
这个算法的核心思想是这样的:
因为常见的置信区间计算公式“正态区间”不能很好的照顾小样本数量的准确性,而威尔逊提出的修正公式能很好地修正小样本数量的准确性问题,所以大家采用“威尔逊区间”算法较多,像Reddit、Yelp、Digg,还有知乎。
不过这种算法也有缺点,缺点就是对于那些得票少的新评论很难获得出头之日,因为得票少,置信区间就会宽,排名位置就会低,得到的关注也就会更少。
前面阿北的回答里面提到了IMDB,IMDB是亚马逊旗下的一个类似豆瓣的电影排名网站,他们在处理TOP250电影排名问题时采用了“贝叶斯平均”算法来解决,这个算法的核心思想是既然新兴产品的评分数量很少,那我就为你人工补偿一定的投票。关于这种算法在阮一峰老师系列文章第6篇中有介绍。
更多参考资料: