一个评价排名算法
参考:http://gfnpad.blogspot.com/2010/04/blog-post_27.html
许多网站都有内容打分系统,比如搜狐的高清视频,android市场的软件,豆瓣的书评等,可以打0~5分,最后按照分数由高到低排列。
但是这样的排名存在一些问题。评价少的时候可能极不客观,特别是如果自己可以给自己的内容打分的时候。一部电影,有1000个人打分,平均得分为4.5分,另一部刚刚上传的电影只有1个人打分,打了5分,那部电影应该排在更前面呢?
所以新的评价少的资源,应该认为它的得分接近于网站的平均分(当然为了新内容不至于被埋没,可以载设定新电影榜之类的)。
而评价多的资源则应该让它的得分接近于用户的实际平均打分。
实际可以引入贝叶斯评价
本项综合平均分 = ( (整体平均评价人次 * 平均得分) + (本项评价人次 * 本项平均评分) )/(整体平均评价人次 + 本项评价人次)
实际应用中整体平均评价人数和资源平均分都不并不需要真正的去计算他们,给一个估算值即可, 也可根据网站需要( 如对新内容的重视程度等 )去凋整这两个值。比如为了推介新电影,可以给一个8分(10分制),网站人气不高的话,总评价人数可以取100之类的。
那么计算公式变成
本项综合平均得分=(800+本项评价人次 * 本项平均得分) /(100 + 本项评价人次)
只有3个人评价,平均打分为5的电影,综合平均分为7.9分
1000个人评价,平均打分为5分的电影,综合平均分为5.3分





