本文转载自:http://www.jianshu.com/p/77ac83db802d/

在PingWest看到一篇《豆瓣电影打分规则竟如此简单粗暴…》,作者写这篇文章是因为豆瓣创始人阿北最近写了一篇博文《豆瓣电影评分八问》,阿北博文是为了回应一些外界对豆瓣电影评分的质疑,然后作者看到这篇博文后,觉得豆瓣电影的评分算法有点low,就写了这样一篇吐槽文章。

那么这个很low的算法究竟是什么样子的呢?此处引用阿北原文。

豆瓣的注册用户看完一部电影,心情好的话会来打个一到五星的分(有时候心情不好也会来)。比方说一部电影有42万用户打分。我们的程序把这42万个一到五星换算成零到十分,加起来除以42万,就得到了豆瓣评分。这个评分会自动出现在豆瓣各处,中间没有审核,平时也没有编辑盯着看。每过若干分钟,程序会自动重跑一遍,把最新打分的人的意见包括进来。

简单说就是计算每部电影评论的算数平均值,并按此值来排名。

对这个算法持怀疑态度,因为如果按照这个算法的话,假设一部小众文艺片有10个用户给了全五星,和一部经典老片比如《十二怒汉》相比,小众文艺片排名比《十二怒汉》还要高,不过这在豆瓣电影TOP250里面不太可能。阿北可能只是为了文章写作方便或是保密起见,把算法故意说简单了,因为假如豆瓣公布了详细的算法,那电影发行方的水军们十分有可能针对这个算法制定出有效的刷分策略的。可怜小编还真信了。

下面是阿北当年在知乎上的回答。

顺着PingWest这篇文章给的链接,我又去阮一峰博客看了他在2012年写的《基于用户投票的排名算法》系列文章,以及这些文章里的参考文章,发现排名算法很好玩很有趣,非常有收获,推荐阅读。

  • 基于用户投票的排名算法(一):Delicious和Hacker News 2012.02.24
  • 基于用户投票的排名算法(二):Reddit 2012.03.07
  • 基于用户投票的排名算法(三):Stack Overflow 2012.03.11
  • 基于用户投票的排名算法(四):牛顿冷却定律 2012.03.16
  • 基于用户投票的排名算法(五):威尔逊区间 2012.03.20
  • 基于用户投票的排名算法(六):贝叶斯平均 2012.03.28

看完这些文章,我就想知道知乎的评论排名算法是怎么样的,于是去知乎找到他们产品经理@黄涛的回答,知乎在2014年底更新的算法使用的正是Reddit在2009年引入的评论排名算法,也就是阮一峰老师在系列文章第5篇中介绍的「威尔逊区间」算法。在用这个算法之前,知乎用的是直接利用好评减去差评的结果来给评论排序,这种算法的缺点我就不介绍了,可以查看参考资料[1]。

「威尔逊区间」算法的数学基础是数学家Edwin B. Wilson在1927年提出的威尔逊区间修正公式,后来芝加哥工程师Evan Miller在2009年写了一篇博客,认为该修正公式可以用来做排名。

这个算法的核心思想是这样的:

  1. 计算每个评论的好评率
  2. 计算每个好评率的置信区间(以 95% 的概率)。
  3. 根据置信区间的下限值,进行排名。这个值越大,排名就越高。

所谓「置信区间」就是说在某个概率下(通常是95%),好评率p会落在的那个区间。比如,某个产品的好评率是 80%,但是这个值不一定可信。根据统计学,我们只能说,有 95% 的把握可以断定,好评率在 75% 到 85% 之间,即置信区间是[75%, 85%]。

置信区间的实质,就是进行可信度的修正,弥补样本量过小的影响。如果样本多,就说明比较可信,不需要很大的修正,所以置信区间会比较窄,下限值会比较大;如果样本少,就说明不一定可信,必须进行较大的修正,所以置信区间会比较宽,下限值会比较小。

因为常见的置信区间计算公式「正态区间」不能很好的照顾小样本数量的准确性,而威尔逊提出的修正公式能很好地修正小样本数量的准确性问题,所以大家采用「威尔逊区间」算法较多,像Reddit、Yelp、Digg,还有知乎。

不过这种算法也有缺点,缺点就是对于那些得票少的新评论很难获得出头之日,因为得票少,置信区间就会宽,排名位置就会低,得到的关注也就会更少。

前面阿北的回答里面提到了IMDB,IMDB是亚马逊旗下的一个类似豆瓣的电影排名网站,他们在处理TOP250电影排名问题时采用了「贝叶斯平均」算法来解决,这个算法的核心思想是既然新兴产品的评分数量很少,那我就为你人工补偿一定的投票。关于这种算法在阮一峰老师系列文章第6篇中有介绍。

更多参考资料:

  1. How Not To Sort By Average Rating
  2. How Reddit ranking algorithms work
  3. 基于用户评价的评分模型
  4. 基于用户投票的打分算法
  5. Reddit评论排名算法
  6. Reddit的排名算法
  7. 数学之美:IMDB.COM排名算法
  8. Hacker News的热门排名算法

作者:gentleming
链接:http://www.jianshu.com/p/77ac83db802d/
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

从豆瓣电影评分算法说起相关推荐

  1. 【电影评分算法】豆瓣、猫眼、IMDb

    豆瓣评分:   评分对象--豆瓣注册用户(注册比较久的老用户评分才有作用,新用户的评分仅作参考)且不是"非正常打分"的帐号:   规则--一人一票,一星至五星,最后换算成10分制: ...

  2. python爬虫豆瓣电影按电影类型_python爬虫之豆瓣电影评分

    想知道一部电影好不好看,豆瓣的评分还是比较靠谱的,于是,搞了搞,写了一个小爬虫: 好像csdn出现bug了,还是游览器的问题,图片插入不进去: 说明文档: 1.直接讲代码保存成.py文件 2.输入你喜 ...

  3. 如何用python完成评分功能呢_Python:豆瓣电影评分

    一.功能需求: 作为一个经常看电影的人,需要对豆瓣电影资源进行分类,豆瓣上有一个交互不友好的地方,每个网页中存在的信息太多,没有办法一次性浏览完,而且部分相应的功能必须点击进入电影界面才能看到,因此个 ...

  4. 豆瓣电影评分分析(数据分析)

    本文主要通过对豆瓣电影爬取的数据进行的简要分析,观察得出各部分之间对应的关系影响. 一.数据抓取 我们要想进行数据分析,首先就要通过爬虫对分析对象网页的数据爬取保存,可以保存到数据库或者文件形式到本地 ...

  5. python豆瓣历史评分_基于Python的豆瓣电影评分查询器

    脚本运行效果: 本代码运行需要先安装requests和BeautifulSoup这两个库. 注意: 请在命令行下使用python xxx.py方式运行脚本,直接打开的话,窗口会自动关闭. 代码如下: ...

  6. 爬取豆瓣电影评分前250部电影

    # 豆瓣Top250 import requests from bs4 import BeautifulSoupdef get_movie():movie_list = []headers = {'u ...

  7. 微信小程序实现评分,包含满星、半星,模仿豆瓣电影评分显示

    微信小程序实现评分功能 前言 本人在用原生小程序开发时,需要用到评分功能,于是自己动手撸了一个评分显示组件.包含满星.半星功能. 废话少说,上才艺: 1.先任意创建组件,index.wxml代码如下: ...

  8. 豆瓣电影评分(微信小程序)——Day1

    陈平说,知己知彼,胸怀天下. 所以开发第一步,查看官方文档.了解到微信小程序是轻量级的应用,无需下载便可应用,但是正是因此优势,对代码有了更多的要求. 划重点: 考虑到包大小对用户体验的影响,平台限制 ...

  9. 你知道豆瓣电影是怎么评分的吗?(实战篇—手把手教你分析豆瓣电影)

    点赞再看,养成好习惯 Python版本3.8.0,开发工具:Pycharm 写在前面的话: 如果你是因为看到标题进来的,那恭喜你,又多了一个涨(入)知(坑)识的机会. 在这篇豆瓣电影Top250的分析 ...

最新文章

  1. 爬虫之selenium控制浏览器执行js代码
  2. C#设计技巧总结 网上转贴
  3. Activity的启动模式与flag详解
  4. 数据冗余的理解和相关概念
  5. 怎样判断一个领导是否值得追随呢?
  6. Java设计模式陈列
  7. 我喜欢的 Linux shell 玩法
  8. Linux下Socket通信(TCP实现)
  9. 19范数理论及其应用
  10. win10系统下第三方软件字体大小调整
  11. 萤火虫算法matlab实现,萤火虫算法,matlab代码.doc
  12. ICO 图标快速制作
  13. 告别微服务:究竟是千军易得还是一将难求
  14. linux下目录压缩,Linux下 目录 压缩 解压缩 打包
  15. 基于android的在线音乐播放器app设计
  16. [bootstrap]如何使用modal
  17. 等待事件 latch:cache buffers chains
  18. 省份、区域(华南,华北...)自定义颜色
  19. PostgreSQL数据库统计信息——examine_attribute单列预分析
  20. java后台jd_2017春季_京东_Java后端研发岗面经

热门文章

  1. 分众发行,移动电影院的防盗链
  2. 彩虹云商城模板NiceShopV0.4完结版
  3. 副业赚钱指南斜杠青年的致富之路
  4. 不怕百战失利,就怕灰心丧气
  5. tpshop开源商城怎么样
  6. Matlab打开grb数据,[转载]grb文件读取
  7. 推荐两个高仿抖音 GitHub 开源项目( iOS 和 Android)
  8. excel总行数_将数据添加到具有总行的Excel表中
  9. 轮式移动机器人基础及滑模控制仿真
  10. 隐藏域 HiddenField