IMDB.COM是目前互联网上最为权威、系统、全面的电影资料网站,里面包括了几乎所有的电影,以及1982 年以后的电视剧集。 它所特有的电影评分系统深受影迷的欢迎,注册的用户可以给任何一部影片打分并加以评述,而网站又会根据影片所得平均分、选票的数目等计算得出影片的加权平均分并以此进行TOP250(最佳250部影片)和Bottom100(最差100部影片)的排行。

评选最佳250部电影时只考虑正式的投票者的投票结果。分值系统采用10分制,最低为awful(令人厌恶)的1分,最高为excellent(出类拔萃)的10分。值得注意的是,虽然很多影片在资料系统中得分很高,但由于未能达到TOP所要求的最低投票数而无法参加排行。

下面就一起来学习下IMDB所使用的排名算法。 imdb top 250用的是贝叶斯统计的算法得出的加权分(Weighted Rank-WR),公式如下:

  • WR, 加权得分(weighted rating)。
  • R,该电影的用户投票的平均得分(Rating)。
  • v,该电影的投票人数(votes)。
  • m,排名前 250 名的电影的最低投票数(现在为 3000)。
  • C, 所有电影的平均得分(现在为6.9)。

仔细研究这个公式,你会发现,IMDB 为每部电影增加了 3000 张选票,并且这些选票的评分都为6.9。这样做的原因是,假设所有电影都至少有 3000 张选票,那么就都具备了进入前 250 名的评选条件;然后假设这 3000 张选票的评分是所有电影的平均得分(即假设这部电影具有平均水准);最后,用现有的观众投票进行修正,长期来看,v/(v+m)这部分的权重将越来越大,得分将慢慢接近真实情况。这样做拉近了不同电影之间投票人数的差异,使得投票人数较少的电影也有可能排名前列。

把这个公式写成更一般的形式:

  • C,投票人数扩展的规模,是一个自行设定的常数,与整个网站的总体用户人数有关,可以等于每个项目的平均投票数。
  • n,该项目的现有投票人数。
  • x,该项目的每张选票的值。
  • m,总体平均分,即整个网站所有选票的算术平均值。

这种算法被称为”贝叶斯平均”(Bayesian average)。因为某种程度上,它借鉴了”贝叶斯推断”(Bayesian inference)的思想:既然不知道投票结果,那就先估计一个值,然后不断用新的信息修正,使得它越来越接近正确的值。

在这个公式中,m(总体平均分)是”先验概率”,每一次新的投票都是一个调整因子,使总体平均分不断向该项目的真实投票结果靠近。投票人数越多,该项目的”贝叶斯平均”就越接近算术平均,对排名的影响就越小。因此,这种方法可以给一些投票人数较少的项目,以相对公平的排名。

“贝叶斯平均”也有缺点,主要问题是它假设用户的投票是正态分布。比如,电影A有 10 个观众评分,5个为五星,5个为一星;电影B也有 10 个观众评分,都给了三星。这两部电影的平均得分(无论是算术平均,还是贝叶斯平均)都是三星,但是电影A可能比电影B更值得看。

解决这个问题的思路是,假定每个用户的投票都是独立事件,每次投票只有n个选项可以选择,那么这就服从“多项分布”(Multinomial distribution),就可以结合贝叶斯定理,计算该分布的期望值。由于这涉及复杂的统计学知识,这里就不深入了,感兴趣的朋友可以继续阅读 William Morgan 的How to rank products based on user input

另外对于无时间参与的评价系统,也可以参考威尔逊得分区,威尔逊得分分区的缺点在于排行榜前列总是那些票数最多的项目,新项目或者冷门的项目,很难有出头机会,排名可能会长期靠后。

参考地址:http://www.imdb.com/chart/top

imdb.com排名算法相关推荐

  1. 投票源码程序_基于用户投票的排名算法

    基于用户投票的排名算法(一):Delicious和Hacker News 互联网的出现,意味着"信息大爆炸". 用户担心的,不再是信息太少,而是信息太多.如何从大量信息之中,快速有 ...

  2. 转:基于用户投票的排名算法系列

    互联网的出现,意味着"信息大爆炸". 用户担心的,不再是信息太少,而是信息太多.如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题. 各种各样的排名算法,是目 ...

  3. 基于用户投票的排名算法

    目录 基于用户投票的排名算法(一):Delicious和Hacker News 基于用户投票的排名算法(二):Reddit 基于用户投票的排名算法(三):Stack Overflow 基于用户投票的排 ...

  4. 你知道“啥是佩奇”,却不一定了解佩奇排名算法

    作者 | 程序员小吴 从初学者的角度学习算法,以动画的形式呈现解题的思路. 来源 | 五分钟学算法 佩奇排名介绍 佩奇排名是根据页面之间的链接结构计算页面的值的一种算法.下面我们通过动画来理解进行计算 ...

  5. 【图】2015年Google搜索引擎排名算法(完整版)

    2015年中旬,国外SEO网站发布了一份2015年Google搜索引擎排名算法的最新数据,从各个角度看待搜索引擎算法排名影响因素的变化.其组织每两年都会成立一个SEO专家调查小组,针对"Go ...

  6. 基于用户投票的排名算法(五):威尔逊区间

    作者: 阮一峰 日期: 2012年3月20日 迄今为止,这个系列都在讨论,如何给出"某个时段"的排名,比如"过去24小时最热门的文章". 但是,很多场合需要的是 ...

  7. 基于用户投票的排名算法(四):牛顿冷却定律

    作者: 阮一峰 日期: 2012年3月16日 这个系列的前三篇,介绍了Hacker News,Reddit和Stack Overflow的排名算法. 今天,讨论一个更一般的数学模型. 这个系列的每篇文 ...

  8. 基于用户投票的排名算法(三):Stack Overflow

    作者: 阮一峰 日期: 2012年3月11日 上一篇文章,我介绍了Reddit的排名算法. 它的特点是,用户可以投赞成票,也可以投反对票.也就是说,除了时间因素以外,只要考虑两个变量就够了. 但是,还 ...

  9. 基于用户投票的排名算法(一):Delicious和Hacker

    作者: 阮一峰 日期: 2012年2月24日 互联网的出现,意味着"信息大爆炸". 用户担心的,不再是信息太少,而是信息太多.如何从大量信息之中,快速有效地找出最重要的内容,成了互 ...

  10. 基于用户投票的排名算法Reddit

    基于用户投票的排名算法(二):Reddit 作者: 阮一峰 日期: 2012年3月 7日 (不好意思,这个系列中断了近两周,我会尽快在这几天,把后面几篇写完.) 上一次,我介绍了Hacker News ...

最新文章

  1. 提高PHP编码的一些技巧
  2. oracle password_verify_function,使用PASSWORD_VERIFY_FUNCTION设置用户密码复杂度
  3. python【蓝桥杯vip练习题库】—Huffuman树
  4. aix下java程序运行问题
  5. php的old函数,laravel单元测试之phpUnit中old()函数报错解决
  6. 提高篇 第五部分 动态规划 第1章 区间类动态规划
  7. SLAM Cartographer(15)位姿图
  8. mysql5.7.23安装详细过程
  9. 强烈推荐 | 百度、阿里、腾讯 40 道面试题超全面总结
  10. js实现本地上传图片及预览
  11. net use 命令使用
  12. win10安装Visual Studio2019时卡在了提取文件处
  13. 实施ERP系统软件的十个好处,你造吗?
  14. python求平均值,python 怎么求平均值
  15. 【VScode技巧】:VScode界面显示模糊
  16. 微信朋友圈营销如何做好头像_昵称_签名_背景基础设置?
  17. Quantum Espresso Hands-On实战训练(五)——电荷密度可视化
  18. 在线版音乐播放器APP(一)
  19. 个人python开发数据分析面试题分享
  20. Qt项目实战之网络电子白板-安晓辉-专题视频课程

热门文章

  1. Linux下ppp拨号+电信3G模块
  2. java小红球下载_小红球闯关
  3. 手机qq2010java触屏_手机QQ2010(Java触屏)Beta2发布:操作更流畅
  4. 模拟人生java版攻略_模拟人生免费版简易攻略小技巧
  5. 图片 360度旋转动画
  6. 关于工作后定居城市的思考以及房价…
  7. 泛微OA前端经验总结
  8. 如何进行邮件营销,邮件营销群发是否有效?
  9. 1038:苹果和虫子
  10. GSM/GPRS之一-GSM基础知识