概要
Hacker Newsのランキングアルゴリズムは公開されているが、実際には多くの調整やペナルティが存在 NSAや特定ドメインの記事には自動ペナルティが適用 コメント数が多い「論争的」記事には大幅な順位降下ペナルティ 全体の約20%の記事が何らかのペナルティを受けている 順位変動の仕組みやペナルティの影響を詳細に分析
Hacker Newsランキングアルゴリズムの実態
- Hacker News のランキングは、公開されている基本式に従っているが、 多くの調整やペナルティ が加えられている現実
- 記事のスコアは アップボート数・投稿からの経過時間・ペナルティ係数 で算出
- 時間の影響(グラビティ)が強く、どんな記事も長くトップに残ることはない設計
- 記事の再ランク付けは 効率化のため随時でなく、投票時や30秒ごとにランダムで1件のみ 実施
- 90秒間のキャッシュ利用で、表示と実際の順位にタイムラグが発生
ペナルティの種類とその影響
- タイトルやドメイン による自動ペナルティの存在
- 例:NSAを含む記事タイトルは自動で0.4のペナルティ
- 特定ドメイン(arstechnica.com, github.com, reddit.com等)は0.25〜0.8のペナルティ
- ペナルティを受けると 各投票の重みが減少 し、記事のランキング降下速度が加速
- 例:0.4のペナルティは投票1件が0.3件分の効果、順位降下は通常の1.66倍
- 0.1のペナルティは投票1件が0.05件分、降下速度は3.6倍
論争的(Controversial)記事への対応
- コメント数が多く、かつ投票数よりコメントが多い記事 は「論争的」とみなされ大きなペナルティ
- 実装では40コメント超かつコメント数>投票数で適用
- ペナルティ係数は(votes/comments)^3(推定)で、急激な順位降下やトップページからの消失につながる
- この仕組みが 人気記事の突然の消失 の主因
ペナルティの実態と頻度
- 約20%のフロントページ記事がペナルティ対象、2ページ目では38%
- ペナルティは1日を通じて適用されるが、特に午前9時ごろに集中(モデレーターの活動時間帯?)
- 記事によってはペナルティの適用・変更が複数回発生
分析手法と観察結果
- /newsと/news2ページを毎分クロールし、 Beautiful SoupとPythonでHTML解析・スコア計算
- 公開されているスコア式と実際の順位の乖離から ペナルティの有無や強度を推定
- 隣接記事にもペナルティがある、ランク付けの間隔、投票数と実際のカウント差異などにより、 正確なペナルティ値の特定は困難
- それでも ペナルティ適用の存在・頻度・影響 は明確に観測可能
まとめ
- Hacker Newsのランキングは「自然」ではなく、手動・自動のペナルティで大きく調整
- NSAや特定ドメイン、論争的な話題など、 「不都合」な記事が目立たないよう制御
- 多くの人気記事がペナルティで順位を落とし、アルゴリズムだけでは説明できない現象が多発
- ユーザーの目に触れる記事の選定には 見えないフィルターや調整 が多数存在
おそらく、これが過去13年でかなり複雑になったんだろうね。