その他
Hacker Newsのランキングの仕組み:スコアリング、論争、ペナルティ(2013年)
How Hacker News ranking works: scoring, controversy, and penalties (2013) (righto.com)
要約
この記事は、2013年時点のHacker Newsのランキングアルゴリズムを詳細に分析しています。投稿スコア、投稿からの経過時間、そして「NSA」という単語を含む記事やコメント数が40を超えた「論争」のある記事に対するペナルティがランキングにどのように影響するかを解説しています。ランキングは単純な投票数だけでなく、これらの要因によって動的に調整されていることが示されています。
全文翻訳
Hacker Newsのランキングが実際にどのように機能するか:スコアリング、論争、ペナルティ
長年、Hacker Newsのランキングの基本的な計算式は知られていましたが、疑問は残っていました。公開されているコードは実際のアルゴリズムを示しているのか?ランキングは純粋に投票数に基づいているのか、それとも目に見えない要因が影響しているのか?NSAに関する記事はランキングで下に押しやられるのか?コメントした後に人気の記事が突然フロントページから消えたのはなぜか?数日間にわたってトップ60のHN記事を注意深く分析することで、これらの疑問に答え、さらに多くのことを明らかにできます。
公開されている計算式は、大部分において正確です。予想よりもはるかに多くのランキング調整が行われており、フロントページのストーリーの20%は何らかの方法でペナルティを受けています。「NSA」という単語がタイトルに含まれるものはすべてペナルティを受け、すぐに順位を落とします。「論争」のある記事は、40コメントに達すると厳しくペナルティを受けます。この記事では、スコアリングとペナルティについて詳しく説明します。[編集:HNは現在、NSAの記事にペナルティを課していません(詳細)。]
ランキングの仕組み
記事は、アップボートスコア、記事が投稿されてからの経過時間、およびさまざまなペナルティに基づいて、以下の計算式でスコアリングされます。
`score = (log(upvotes) + 1) * 24 * 60 * 60 / ((now - time_since_submission_in_seconds) + 2)^1.5`
時間の方が投票数よりも大きな指数を持っているため、記事のスコアはいずれゼロにまで低下するため、何もフロントページに長く留まることはありません。この指数は重力として知られています。
Hacker Newsを訪れるたびに、ストーリーが上記の計算式でスコアリングされ、ランキングを決定するためにソートされていると予想するかもしれません。しかし、効率化のため、ストーリーは個別に再ランキングされるのは時々だけです。ストーリーがアップボートされると、再ランキングされ、リストの上または下に適切な位置に移動し、他のストーリーは変更されません。これにより、再ランキングの量は大幅に削減されます。
しかし、ストーリーが投票されなくなり、高い位置に固定されてしまう可能性もあります。これを避けるため、30秒ごとにトップ50のストーリーのいずれかがランダムに選択され、再ランキングされます。その結果、投票されていないストーリーは、投票されていない場合、何分も「誤って」ランク付けされる可能性があります。さらに、ページは90秒間キャッシュされることがあります。
生のスコアと典型的な日の1位
以下の画像は、11月11日の1日を通して、トップ60のHN記事の生のスコア(ペナルティを除く)を示しています。各線は記事に対応し、ページ上の位置に応じて色分けされています。赤い線はHNのトップ記事を示しています。ペナルティのため、生のスコアが最も高い記事が必ずしもトップ記事ではないことに注意してください。
このチャートはいくつかの興味深いことを示しています。記事のスコアは急速に上昇し、その後数時間かけてゆっくりと低下します。スコアリング計算式はこの大部分を説明しています。一定のペースで投票される記事は急速にピークに達し、その後徐々に下降します。しかし、観測されるピークはさらに速いです。これは、記事が最初の1〜2時間で多くの投票を得る傾向があり、その後投票率が低下するためです。これら2つの要因を組み合わせると、急峻な曲線が得られます。
毎日、他の記事をはるかに上回るスコアを持つ記事がいくつかあり、中間に多くの記事があります。非常に良いスコアを持つ記事もありますが、より人気のある記事の後ろに固定されてしまう不運な記事もあります。他の記事は、1つの記事の低下と別の記事の上昇の間に、一時的に1位になります。
生のスコアが最も高い記事(グラフの上部)と、ランク付けされたトップ記事(赤い線)との差を見ると、ペナルティがいつ適用されたかがわかります。記事「Getting website registration completely wrong」は早朝に1位になりましたが、論争によりペナルティを受け、ページを急速に下降しました。これにより、「Linux ate my RAM」が一時的に1位になり、その後「Simpsons in CSS」に追い抜かれました。少し後、「Apple Maps」は1位に達した後すぐに論争ペナルティを受け、1位の座を失い、ランキングを急速に下降させました。「Snapchat」の記事はHNのトップに達しましたが、午前8時22分に非常に重くペナルティを受け、チャートから完全に消えました。「Why you should never use MongoDB」は非常に人気があり、ペナルティによって急速に低下し、約7位にとどまった以外は、その日の大部分を1位で過ごしたでしょう。「Severing ties with the NSA」はNSAペナルティで始まりましたが、非常に人気があったため、それでも1位になりました。しかし、すぐにさらに大きなペナルティが課され、ページの下方に押しやられました。最後に、一日の終わりに「$4.1m goes missing」がペナルティを受けました。結果として、ペナルティがなくてもすぐに「FTL」に1位を譲るはずでした。
緑色の三角形とテキストは、「論争」ペナルティが適用された場所を示しています。青色の三角形とテキストは、記事がペナルティによって消滅し、トップ60から外れた場所を示しています。より軽いペナルティはここでは表示されていません。
HNの1位のコンテンツが「自然」ではないことは明らかであり、多くの記事に対する継続的なペナルティの適用による結果です。これらのペナルティがHN管理者によるものか、フラグが付けられた記事によるものかは不明です。
自動的にペナルティを受ける投稿
一部の投稿は、タイトルに基づいて自動的にペナルティを受け、他の投稿はドメインに基づいてペナルティを受けます。「NSA」という単語がタイトルに含まれる記事は、すべて0.4の自動ペナルティを受けるようです。私は、awesome、bitcoin、bubbleなどの他の単語が自動ペナルティを引き起こすかどうかを調べましたが、それらはペナルティを受けていないようです。
多くのウェブサイトが0.25から0.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。実際のリストはもっと長いと確信しています。(これは、かつてリストされていた「禁止」サイトとは別です。etermによる興味深い理論の1つは、人気のあるソースからのニュースが複数の人によって並行して投稿され、記事の「価値」以上のアップボートにつながるというものです。人気のあるウェブサイトに自動的にペナルティを課すことは、この効果を相殺するのに役立ちます。)
ペナルティの影響
スコアリング計算式を使用すると、ペナルティの影響を計算できます。記事が0.4のペナルティ係数を受け取ると、これは各投票が0.3票としてカウントされることに相当します。あるいは、記事は通常の66%速くランキングを低下させます。0.1のペナルティ係数は、各投票が0.05票としてカウントされること、または記事が通常の3.6倍の速度で低下することに相当します。したがって、0.4のペナルティ係数は大きな影響を与え、0.1は非常に深刻です。
論争
Hacker Newsでの炎上を防ぐため、コメント数が「多すぎる」記事は「論争」として厳しくペナルティを受けます。公開されているコードでは、contro-factor関数は20コメントを超え、かつコメント数がアップボート数よりも多い投稿に対して機能します。そのような記事は(votes/comments)^2でスケーリングされます。しかし、実際の計算式は異なります。コメント数がアップボート数よりも多く、少なくとも40コメントある投稿に対して有効です。経験的なデータに基づくと、指数は2ではなく3であると疑っていますが、これを証明していません。
論争ペナルティは、記事のランキングに突然壊滅的な影響を与える可能性があり、ある瞬間に高くランク付けされていた記事が、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コメントに達したときにトップ60から完全に消えました。
私の方法論
私は/newsと/news2のページを1分ごとにクロールしました(1分あたり2ページというガイドラインを下回っています)。私は(やや醜い)HTMLをBeautiful Soupで解析し、Pythonスクリプトの大きな束で結果を処理し、理解不能だが強力なmatplotlibで結果をグラフ化しました。
分析の基本的な考え方は、計算式を使用して生のスコアを生成し、異常を探すことです。ある時点(例:11/09 8:46)で、トップ10ストーリーの生のスコアを計算できます:
2.802 Pyret: A new programming language from the creators of Racket 1.