数学之美:StackOverflow问答排名算法

标签: 程序设计 StackOverflow 算法 | 发表时间:2012-07-08 17:09 | 作者:标点符
出处:http://www.biaodianfu.com

先前的文章介绍了 StackOverflow的系统架构,这次继续排序话题,学习的是StackOverFlow的排序算法。

StackOverflow的排序共分为两类,1个是问题排序,1个是答案排序。这里主要介绍的是关于热门问题的排序。

在分析问题前可以先考虑下,如果是你来做这个排名算法需要考虑哪些因素?

1、问题的投票人数,StackOverflow允许用户投反对票,所以这里可以使用绝对投票数,即正面票-负面票数量。绝对数越高问题越热门。

2、问题浏览量,或是有效浏览量,有效浏览量可以建立一个停留时间的阀值去衡量。浏览的越多则越热门。

3、问题的答案数,理论上说答案越多则问题的越热门,但这也并不绝对,有些好的问答可能只有一个好的答案。

4、问题答案的认可数,即是否存在一个被大量认可的答案。这里存在两种情况,被提问者认可或被其他访问者投票。多少的投票量可以认为是问题答案被认可也是需要考虑的问题。

5、问题的提问时间和问题的最后答复时间,问题的受欢迎程度应该是随时间变长而变得不热门。

5、提问者的声望和回答问题的声望,声望越高的问题肯定质量越到,越值得去推荐。

在08年8月23日的时候,StackOverflow的创始人 Jeff Atwood曾经公布了一个热门问题的排名算法( 链接):具体为

此算法目前是否还继续使用或者是否改变不得而知。下面我们详细介绍下问题排名中涉及到的变量。将其转化成Python代码为:

import time, math
def hot (Qviews, Qanswers, Qscore, Ascore, date_ask, date_active):
    Qage = round((time.time() - date_ask) / 3600)
    Qupdated = round((time.time() - date_active) / 3600)
    return (math.log10(Qviews) * 4 + Qanswers * Qscore / 5 + Ascore )/(pow((Qage + 1) - (Qage - Qupdated) / 2,1.5))

1、Qviews(问题的浏览次数)

– log(Qviews)*4

某个问题的浏览次数越多,就代表越受关注,得分也就越高。这里使用了以 10为底的对数,用意是当访问量越来越大,它对得分的影响将不断变小。

2、Qscore(问题得分)和 Qanswers(回答的数量)

(Qanswers * Qscore)/5

Qscore(问题得分)= 赞成票-反对票。如果某个问题越受到好评,排名自然应该越靠前。Qanswers 表示回答的数量,代表有多少人参与这个问题。这个值越大,得分将成倍放大。这里需要注意的是,如果无人回答,Qanswers 就等于0,这时 Qscore 再高也没用,意味着再好的问题,也必须有人回答,否则进不了热点问题排行榜。

3、Ascores(回答得分)

–sum(Ascores)

一般来说,”回答”比”问题”更有意义。这一项的得分越高,就代表回答的质量越高。但是简单加总的设计还不够全面。这里有两个问题。首先,一个正确的回答胜过一百个无用的回答,但是,简单加总会导致,1个得分为 100 的回答与 100 个得分为 1 的回答,总得分相同。其次,由于得分会出现负值,因此那些特别差的回答,会拉低正确回答的得分。

4、Qage(距离问题发表的时间)和 Qupdated(距离最后一个回答的时间)

–((Qage+1) – ((Qage – Qupdated)/2)) ^ 1.5

Qage 和 Qupdated 的单位都是小时。如果一个问题的存在时间越久,或者距离上一次回答的时间越久,Qage 和 Qupdated 的值就相应增大。也就是说,随着时间流逝,这两个值都会越变越大,导致分母增大,因此总得分会越来越小。

总结:Stack Overflow 热点问题的排名,与参与度(Qviews 和 Qanswers)和质量(Qscore 和 Ascores)成正比,与时间(Qage 和 Qupdated)成反比。

关于上述的答案是否合理的,是否可以再改良,答案是肯定的,如果是你你会怎样去推荐热门问答呢?

参考地址: http://meta.stackoverflow.com/questions/11602/what-formula-should-be-used-to-determine-hot-questions

 

Related posts:

  1. 数学之美:Reddit的排名算法
  2. 网站统计:第一方Cookie和第三方Cookie
  3. 使用DNSPod来处理网站的均衡负载

相关 [数学之美 stackoverflow 排名] 推荐:

数学之美:StackOverflow问答排名算法

- - 标点符
先前的文章介绍了 StackOverflow的系统架构,这次继续排序话题,学习的是StackOverFlow的排序算法. StackOverflow的排序共分为两类,1个是问题排序,1个是答案排序. 这里主要介绍的是关于热门问题的排序. 在分析问题前可以先考虑下,如果是你来做这个排名算法需要考虑哪些因素.

数学之美:Reddit的排名算法

- - 标点符
上一篇文章介绍了 Hacker News 的排名规则. 这次要介绍的是另外一个社会化新闻类网站 Reddit. Reddit对文章和评论使用了不同的排名算法,这边文章要介绍的是前者,后面的关于评论的排名在后面的文章作再作介绍. Reddit与Hacker News有很大的不同点就是,Hacker News文章标题前面只有一个向上的小箭头,即只能投赞成票,而Reddit的每个文章标题前会有两个箭头,即一个向上,一个像下.

StackOverflow的404错误页

- yboren - 酷壳 - CoolShell.cn
不知道大家有没有注意到StakeOverflow的404错误页面. 这个是一个很有意思的图片,不知道你看懂了吗. 看上去像Python,又像 Ruby,还像 Perl,当然也有 C的影子,还有Brainfuck. 是的,这是一个杂交程序,杂交了Python,Ruby,Perl,C,还有Brainfuck(注意其中的#号),所有的语句都是输出“404”字符串.

StackOverflow 一個程式設計問答網站的架構

- - SSORC.tw
了解由來看一下 WIKI. 110 個網站 (一個月成長 3~4 個). 5 億 6 千萬個瀏覽數 (一個月). 尖峰時刻 2600 ~ 3000 request /sec. 只有 25 台 server 運作. 大部份使用微軟的產品架構. 沒使用雲端服務,因為會托慢速度,且難維護與最佳化. SQL Server 為 384 GB RAM 與 2TB 的 SSD (intel 710).

StackOverflow:你没见过的七个最好的Java答案

- - ITeye资讯频道
原文来自: DZone. 译文来自: 后端技术杂谈. StackOverflow(后边简称so)发展到目前,已经成为了全球开发者的金矿. 它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西. 这篇文章是在我们审阅了so上最流行的Java问题以及答案后从中挑出来的.

数学之美:垂心的各种优雅的性质

- FiO_chn - Matrix67: My Blog
    下面这些文字来源于我在初三数学竞赛课的一份讲义. 这节课的主题本是四点共圆,但由此引出了三角形中很多漂亮的性质,让人深感数学之美. 在此整理出来,献给所有还在中学读书的读者,以及早已远离中学数学的 80 后. 不管大家是否喜爱数学,想必都会被这些奇妙的结论所震撼.     三角形的奇迹首先表现在各个“心”上:三角形内部的每一组有几何意义的线条都交于一点.

数学之美:45幅耀眼夺目的分形艺术作品

- zx - cnBeta.COM
感谢山边小溪-关注前端开发技术的投递. 美国著名的物理学家惠勒曾说过这样一句话:谁不知道熵概念就不能被认为是科学上的文化人,将来谁不知道分形概念,也不能称为有知识. 想必要是按这个标准算的话,很多人都不能称为有知识. 其实,在我们生活的这个世界里,分形无处不在. 分形(Fractal)一词,是曼德勃罗创造出来的,其原意具有不规则、支离破碎等意义,分形几何学是一门以非规则几何形态为研究对象的几何学.

数学之美:45幅耀眼夺目的分形艺术作品欣赏

- 锦达 - 博客园-首页原创精华区
  美国著名的物理学家惠勒曾说过这样一句话:谁不知道熵概念就不能被认为是科学上的文化人,将来谁不知道分形概念,也不能称为有知识. 想必要是按这个标准算的话,很多人都不能称为有知识. 其实,在我们生活的这个世界里,分形无处不在.   分形(Fractal)一词,是曼德勃罗创造出来的,其原意具有不规则、支离破碎等意义,分形几何学是一门以非规则几何形态为研究对象的几何学.

世界黑客排名

- 2楼水饺 - 煎蛋
黑客世界也有这自己的排名,如果你打算雇佣牛逼黑客做点xxxx事情,不妨看看这个网站 RankMyHack.com ,它号称是世界上第一个黑客排名系统. 除了能够收集到一些黑客战绩和信息之外,RankMyHack.com 还开放给任何一个想加入该排名的盆友. 提交你的战绩,然后将RankMyHack 给出的一段代码插入到你所黑掉的网站予以证明.

[转]排名算法(一)--PageRank

- - 工作笔记
转自: https://blog.csdn.net/isuccess88/article/details/70339759. PageRank是Google研发的主要应用于评估网站可靠度和重要性的一种算法,是进行网页排名的考量指标之一. 本文将对PageRank的原理进行讲解,并以此为出发点介绍如何利用Transwarp Data Hub的Graphene在实际中满足相关分析需求.