简评《基于用户投票的排名算法》

来源:互联网 发布:连接sql server数据库 编辑:程序博客网 时间:2024/06/05 05:54

最近微博timeline上老是出现一些关于《基于用户投票的排名算法》的讨论,一直没认真读。今天又有人在讨论,花了点时间仔细读了一下,写的真是不错,让我立马有了更新一下自己的空间的冲动。文章的作者是阮一峰。第一次注意到他是读《黑客与画家》的时候,他是译者。当时略有些纳闷,阮一峰不是做时政评论的么,怎么还翻译畅销书?今天就更纳闷了,怎么做时政评论的还搞计算机技术的普及?特意查了一下,原来搞时政评论的叫阮次山,阮一峰则似乎是上海财大的老师,次山和一峰,分别是第二座山和第一座峰,的确容易混淆。

《基于用户投票的排名算法》系列共有六个帖子,可分两部分,前半部分介绍和分析了reddit, stackoverflow, delicious等社区利用用户评分对帖子做排名的方法,后半部分则介绍了遗忘模型、贝叶斯平均和威尔逊区间三种方法,分别对应于利用用户评分时最需要考虑的几个因素。Google等搜索引擎用pagerank等基于链接关系的方法来度量网页的质量和重要性,UGC网站则只能利用显示或隐式的用户评分来度量内容的质量和重要性,所以这类方法对于UGC网站浏览或搜索排序相当重要。

原贴内容很实用,也相当有质量,不用我再多介绍,直接看原贴就可以了。主要想讨论一下置信度的使用问题。

利用用户评分来估计帖子的质量分值,除了平均值或期望值外,还可以得到置信区间。威尔逊区间一节主张采用类似于reddit的方法,用置信区间下限来为帖子排名。因为如果有两个帖子,一个有100个用户打分,平均分为4.9分,另一个有一个用户打分,评分为5分,按平均值排名第二个帖子会排在前面,不符合我们的直观期望。

这个问题其实有几种策略,需要要根据产品需要来选用。第一种策略策略当然就是原贴种主张的威尔逊区间方法,也就是reddit的做法。这是一种相当保守、不求有功、但求无过的做法,会让那些发帖时间早且用户评分高的帖子永远排在前面,而新的有价值的帖子,尽管用户评分高,但因为积累的票数少,置信度低,很难有展示机会。不是很清楚reddit为什么会采取这么保守的一种策略,其实要避免前面提到的问题,常规的解决方法应该是另一节中提到的贝叶斯平均法。贝叶斯平均和通常的平均值方法的差别,是最大后验和最大似然的差别:引入合适的先验信息(不妨假定没有被用户评分的帖子的分值都是2.5),会使第二个帖子的期望值大幅降低,而第一个帖子微幅下降,使得最后排名更符合我们的直观期望。相比reddit的方法,贝叶斯平均的结果不会那么保守。


不管是reddit的方法,还是贝叶斯平均,都存在马太效应的问题。高分的帖子会得到更多的展示机会,进而得到更多的用户好评,新的高质量的帖子则永远得不到展示机会,即便他的质量可能更高。为避免这种问题,可以采用第三种策略。两个期望值相等的帖子,置信度低的那个会被排在前面。这主要是基于这样的考虑:我们给用户展示内容,一方面是要尽量把好的内容展示给用户,另一方面,还需要把那些我们不确定质量优劣的内容展示给用户,让他们去评价,以便我们判断其质量,获取这类信息能帮助我们在未来更有效地把高质量的内容展示给用户。第三种策略就是平衡这两种需要的方案,当然,如何寻找平衡点,是个需要相当技巧的问题,具体方法,可以参考增强学习领域的相关的研究结果。

#书评
原创粉丝点击