Hacker Newsのランキングアルゴリズムの仕組み

Hacker Newsのランキングアルゴリズムの仕組み

[[83666]]

この記事では、Hacker News ウェブサイトの記事ランキング アルゴリズムの仕組みと、このアルゴリズムを独自のアプリケーションで使用する方法を紹介します。このアルゴリズムは非常にシンプルですが、人気のある記事を強調表示したり、新しい記事を選択したりする際に非常に優れたパフォーマンスを発揮します。

news.arc のコードに潜入

Hacker News は、Y Combinator の創設者 Paul Graham が作成した Lisp 方言である Arc で開発されています。 Hacker News はオープンソースであり、そのソースコードは arclanguage.org で見つけることができます。 news.arc プログラムをさらに詳しく調べると、次のようなランキング アルゴリズムのコードが見つかります。

  1. ; 投票数を年齢(時間)で割って重力乗します。
  2. ;スライダー重力をスケールできたら面白いでしょう
  3.  
  4. (=重力* 1.8時間ベース* 120前方閾値* 1    
  5. nourl-factor* . 4軽量係数* . 3 )
  6.  
  7. ( def frontpage-rank (s (o scorefn realscore) (o 重力 重力*))
  8. (* (/ (let base (- (scorefn s) 1 )
  9. ( if (> base 0 ) (expt base . 8 ) base))
  10. (expt (/ (+ (アイテムの年齢 s) 時間ベース*) 60 ) 重力))
  11. ( if (no ( in s!type 'story ' poll)) 1  
  12. (空白 s!url) nourl-factor*
  13. (軽量s) (最小軽量係数*
  14. (制御因子))
  15. (制御因子))))

基本的に、Hacker News が使用するランキング アルゴリズムは次のようになります。

  1. スコア = (P-1) / (T+2)^G
  2.  
  3. で、
  4. P = 記事が受け取った投票数(-1 は記事を投稿した人の投票が削除されることを意味します)
  5. T = 論文投稿から現在までの時間(時間)
  6. G = 重力、news.arc のデフォルト値は 1.8

ご覧のとおり、このアルゴリズムは簡単に実装できます。以下では、このアルゴリズムがどのように機能するかを見ていきます。

重み(G)と時間(T)がランキングに与える影響

重みと時間は記事のランキングスコアに大きな影響を与えます。通常、次のようになります。

  • T が増加すると、記事のスコアは減少します。つまり、記事が古ければ古いほど、スコアは低くなります。
  • 重みが増すと、古い記事のスコアはより速く低下します。

このアルゴリズムを視覚化するには、Wolfram Alpha でプロットします。

スコアは時間の経過とともにどのように変化するか

時間が経つにつれてスコアが劇的に下がることがわかります。たとえば、24 時間前の記事は、投票数に関係なく、スコアが非常に低くなります。

プロットステートメント:

  1. プロット(
  2. ( 30 - 1 ) / ( t + 2 ) ^ 1.8
  3. ( 60 - 1 ) / ( t + 2 ) ^ 1.8
  4. 200 - 1 )/(t + 2 )^ 1.8  
  5. )ここでt = 0 .. 24  

重み付けパラメータがランキングに与える影響

グラフからわかるように、重みが大きくなるにつれて、スコアは急速に低下します。

プロットステートメント:

  1. プロット(
  2. (p - 1 ) / (t + 2 ) ^ 1.8
  3. (p - 1 ) / (t + 2 ) ^ 0.5
  4. (p - 1 ) / (t + 2 )^ 2.0  
  5. )ここでt = 0 .. 24 、p = 10  

Python言語実装

前述したように、このスコアリング アルゴリズムは簡単に実装できます。

  1. def calculate_score(投票、item_hour_age、重力= 1.8 ):
  2.     戻り値(投票 - 1 ) / pow((item_hour_age + 2 ), 重力)

重要なのは、アルゴリズムの各要素がスコアにどのように影響するかを理解し、アプリケーションでスコアをカスタマイズできるようにすることです。この記事でそれが明らかになったことを願っています。

楽しいコーディングを!

編集:

ポール・グラハムは改訂されたHNランキングアルゴリズムを共有しました。

  1. (=重力* 1.8時間ベース* 120前方閾値* 1  
  2. nourl-factor* . 4軽量係数* . 17ギャグ係数* . 1 )
  3.  
  4. ( def frontpage-rank (s (o scorefn realscore) (o 重力 重力*))
  5. (* (/ (let base (- (scorefn s) 1 )
  6. ( if (> base 0 ) (expt base . 8 ) base))
  7. (expt (/ (+ (item-age s) timebase*) 60 ) 重力))
  8. ( if (no ( in s!type 'story ' poll)) . 8  
  9. (空白の s!url) nourl-factor*
  10. (キーをメモしてください) 001  
  11. (* (制御因子)
  12. ( if (mem 'gag s!keys)
  13. ギャグ要素*
  14. (軽量級)
  15. 軽量係数*
  16.                                                 1 )))))

Hacker Newsのランキングアルゴリズムの仕組み

翻訳リンク: http://www.aqee.net/how-hacker-news-ranking-algorithm-works/

<<:  百度がナレッジグラフをひっそりとリリース、次世代検索エンジンのプロトタイプを公開

>>:  OpenGL ES 入門: 組み込み 3D グラフィックス アルゴリズム標準

ブログ    
ブログ    

推薦する

Jupyter Notebookの3つの大きな欠点は、この新しいツールによってすべて補われています。

Jupyter は、機械学習とデータサイエンスの分野でよく知られるようになりました。メモ、コード、...

MIT の驚くべき証明: 大きな言語モデルは「世界モデル」ですか?アンドリュー・ン氏の視点が再び確認され、LLMは空間と時間を理解できる

大きな言語モデルの中には世界モデルがあるのでしょうか? LLM には空間感覚がありますか?そして、こ...

...

Qinglang RoboticsがCIIEの「ブラックテクノロジー」を体験していただきます

浦江の潮が満ち、第3回中国国際輸入博覧会が開幕!「人工心肺」「88カラットのブラックダイヤモンド」「...

HSBC、コロナウイルス危機中にAIガードレールを導入

規制の厳しい業界の企業は、AI を導入しようとすると、いわゆる「ブラック ボックス」問題に直面するこ...

今後20年間で、人工知能は中国で9000万の雇用を生み出すだろう

今後20年間で、人工知能やロボット、ドローン、自動運転車などの関連技術により、中国での雇用は約12%...

GPT-4 脳を解読する 0 コード!海外のネットユーザーがLLMのガードレールを突破し、AIに段階的に爆弾を作らせる

ネットユーザーが何か新しいものを思いつきました! OpenAI は大規模言語モデルの安全ガードレール...

DALL·E 3のベンチマーク!メタ最強の文豪エミュの技術レポートを公開

数日前、OpenAIはDALL·E 3をリリースしたばかりで、ビジュアルイメージは再び新たな段階に上...

...

...

...

Huggingfaceによる大規模モデル進化ガイド:GPT-4を完全に再現する必要はない

ビッグデータダイジェスト制作ChatGPTが人気を博した後、AIコミュニティは「百式戦争」を開始しま...

...

...

MIUI 10の最後の開発バージョンが間もなくリリースされます。MIUI 11も間もなく登場します。

8月22日、MIUIは、より良い最適化効果を実現し、Miファンに優れたシステム体験をもたらすために...