Hacker News 中文摘要

RSS订阅

Hacker News 排名机制:评分、争议与惩罚(2013) -- How Hacker News ranking works: scoring, controversy, and penalties (2013)

黑客新闻(Hacker News)排名基本公式多年已知,但疑问仍在:公布代码是真实算法吗?排名仅基于投票还是有无形因素?含美国国家安全局(NSA)的故事会被压低吗?热门故事为何评论后从首页消失?通过分析前60个故事数天,发现公式大体准确,但20%首页故事遭各类惩罚,标题含NSA的被罚后快速下降,争议故事满40条评论后受重罚。

正文

多年来 Hacker News 排名基础公式已知,但疑问仍在:公布代码是真算法吗?纯票数还是隐形因素?NSA 故事会被压吗?你评论后热门故事为何突然消失?

通过分析前几天前 60 篇 HN 故事,可回答这些:公布公式基本准,但排名调整远超预期,20% 首页故事受各类惩罚。标题含 NSA 被罚速降。争议故事超 40 评论重罚。下文详述评分与惩罚。[编辑注:HN 已不再罚 NSA 文章。]

文章根据赞数、提交时间和各类惩罚用以下公式评分:

分数=\frac{ \left( 票数-1 \right) ^{.8}}{ \left( 年龄_{小时} + 2 \right) ^ {1.8}} * 惩罚

因时间指数大于票数,分数终归零,无文久留首页。此指数称 gravity(重力)。

你可能以为每次访问都按公式算分排序,但为效率只对个别故事偶重排。赞时重排移动,他文不变。可能卡高位,故每 30 秒随机选前 50 之一重排。页面可缓存 90 秒。

典型一天的原始分数与第一名位置

以下图片显示 11 月 11 日全天前 60 文章原始分(未罚)。每线一文,按页位置着色。红线为 HN 第一。注意因惩罚,原始分第一常非排名第一。

Hacker News 一天内的原始文章分数。红线表示第一名文章。由于惩罚,第一名文章不总是分数最高。

图表有趣点:分数骤升后缓降数小时。公式致恒定票速峰快降缓,实测峰更快因首两小时票多速降。两因素致陡曲线。

每日几文远高于余,中部多文。有些分高但不幸挡于更流行后。有些在跌升间短暂第一。

看顶分(图顶)与排名第一(红)差可知惩罚时施。Getting website registration completely wrong 晨初第一,因争议罚速降,Linux ate my RAM 短暂第一,Simpsons in CSS 超之。稍后 Apple Maps 到第一后遭争议罚失首位速降。Snapchat 到顶但早 8:22 重罚掉出图。Why you should never use MongoDB 极流行本该久居第一,但速罚徘徊 #7。Severing ties with the NSA 初遭 NSA 罚但极流行仍第一,后遭更重罚逼降。末 $4.1m goes missing 被罚,即便无罚也快输 FTL。

绿三角示争议罚,蓝三角示重罚消失,轻罚未显。

显然 HN 第一非「自然」,乃常罚所致。不确定这些惩罚来自 HN 管理员还是被标记的文章。

自动受罚的提交

些提交按标题自动罚,些按域名。标题含 NSA 自动罚 .4。查 awesome、bitcoin、bubble 无罚。多网站自动罚 .25 至 .8:arstechnica.com、businessinsider.com、easypost.com、github.com、imgur.com、medium.com、quora.com、qz.com、reddit.com、rt.com、stackexchange.com、theguardian.com、theregister.com、theverge.com、torrentfreak.com、youtube.com(确更长,异于 banned 站)。

eterm 提出一个有趣理论:流行源多人并行提交致票多于「应得」,自动罚流行站抵消。

惩罚的影响

由公式可算罚影响。罚 .4 等效每票算 .3,排名降速快 66%。罚 .1 等效每票 .05,降速 3.6 倍。故 .4 显效,.1 极严。

争议:防 flamewar,评「过多」重罚。公布代码 contro-factor 超 20 评且评多于票,缩放 (votes/comments)^2。实际不同:评多于票且至少 40 评。实证疑指数 3 非 2。争议罚突灾,高排一文触 40 评即没。例:Why the Chromebook pundits are out of touch with reality 触 40 评从 #5 到 #22;Show HN: Get your health records from any doctor 在 #17 触 40 评彻底消失。

我的方法

每分爬 /news 和 /news2(守每分 2 页指南)。Beautiful Soup 解 HTML,Python 处理,matplotlib 画图。思路:公式生原始分找异常。如 11/09 8:46 前 10 故事原始分:Pyret 2.802、The Big Data Brain Drain 1.407、The NY Times endorsed 1.649、S.F. programmers 0.785、Marelle 0.844、Sprite Lamp 0.738、Why Teenagers 0.714、NodeKnockout 0.659、ISO 1 0.805、Shopify accepts Bitcoin 0.483、Show HN: Understand closures 0.452。

注意三篇排名低于预期:The NY Times、Marelle、ISO 1。算 NY Times 罚因子 .47-.85,余 .87-.93 和 .60-.82。多数按分排,例外低排即罚,表明公式同公布代码。若不同(如重力大)会漂,但未见。

技术显罚存给范围,定确切难。误差:邻文也罚、不常重排暂错、罚变、票数与实差(坏票压)。得近似罚,数值不稳。

一天中的惩罚

下图示全天算得惩罚。每线一文,起 1(无罚),罚时降。似有 0.2 和 0.4 罚及多 0.8-0.9。多罚施于早 9 点(管理员到?),日间更多。图噪在改算法。

Hacker News 惩罚情况

平均约 20% 首页文被罚,38% 第二页被罚(首页率低因罚文本难上首页)。罚远超预期。

11/11 首页被罚文列表很长,包括 Why the Climate Corporation Sold Itself to Monsanto、Getting website registration completely wrong、Why You Should Never Use MongoDB、Severing Ties with the NSA、$4.1m goes missing as Chinese bitcoin trading platform GBL vanishes 等数十篇(涵盖多家媒体域名及 NSA 标题文章)。

评分公式的代码

Arc 源码可用及更新公式。代码定义常数 gravity=1.8、timebase=120分等,frontpage-rank 方法基于赞和年龄分排。惩罚因子由 if 定:非故事/投票罚 .8;空 URL 罚 nourl-factor*;标 bury 罚 0.001 沉底;默认结合争议与 gag/lightweight。争议因子抑 flamewar。gag(笑话)罚 .1,lightweight 罚 .17。实际惩罚比代码复杂。

结论

HN 首页位置非基于赞的优绩主义。细查可见评分公式。赞为显因素,复杂惩罚系统使文降或消,不止防 spam 也影响流行文。若评多于票,别加评论否则杀之。

更新(11/18):谈惩罚的文章被罚

讽刺此文被罚。登首页后分钟级重罚 0.2 掉出。黑线位置,灰线无罚应排 #5,罚后未回首页(1-30)。绿线原始分。(11/26: 告知因 voting ring detection 误触。)

这篇文章在登上 Hacker News 首页后不久被惩罚

评论

社区主要围绕 HN 排名算法的惩罚机制展开技术探讨,分歧点在于争议帖降权是否合理,以及是否存在外部干预或刷票影响。

质疑争议帖降权的合理性

  • 认为评论多的帖子同样受罚,仅以“争议”作为降权理由不够充分(少数人) > 帖子带很多评论也被惩罚,用争议来解释我觉得不太扎实(@PreciousH)

怀疑存在外部干预或刷票操纵

  • 有人以某游戏请愿帖上首页后迅速被埋为例,怀疑特定行业对站点影响力超出预期(少数人) > 我曾看到游戏请愿帖一小时内就从首页消失,觉得某些行业对这网站的影响比大家想的大(@anon_cow1111)
  • 另有读者断定投票团伙和付费刷票农场在此活跃,且争议话题评论区猫腻尤多(少数人)

反驳 HN 对 YC 系公司存在偏袒

  • 指出分析显示包括某 YC 公司在内的多个网站都受自动降权惩罚,说明所谓偏袒并不存在(少数人) > 连 YC 公司旗下的网站也在自动惩罚名单里,那些说 HN 偏袒的人可以歇了(@seizethecheese)

认为二次机会池让部分故事异常粘首页

  • 观察到版主将初期冷清的故事直接放入首页后,这些故事往往停留很久,虽可能有幸存者偏差(少数人)

发现高声望用户发帖得分与赞数脱钩

  • 有用户注意到当账号声望达到很高水平后,发帖所得分数明显少于获得的点赞数(少数人) > 到我十万声望左右时,发帖得分比点赞数少了一大截(@zdw)

认为无算法排序下惩罚分析失效

  • 有读者表示若通过严格按时间线、无算法的第三方界面浏览,原帖的整套惩罚逻辑便不成立(少数人)

有价值的补充

  • 排名计算是“懒惰”的:并非每次页面加载都重算分数,而是投票时重算,每三十秒随机选前五十中的一个重算,加上九十秒缓存,所以首页位置常有几分钟的偏差;这也解释了为何惩罚值是范围而非确定数字(@NiklasKoehler)
  • 有读者推测过去十三年间排名算法已远比文章描述复杂(@tptacek)
  • 原帖作者意外现身,称不知为何时隔十三年被翻出,增添一丝轻松气氛(@kens)