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 グラフィックス アルゴリズム標準

ブログ    
ブログ    

推薦する

...

テスラのオプティマスヒューマノイドロボットが再び進化:視覚に基づいて物体を自律的に分類し、ヨガもできる

9月24日のニュース、本日早朝、テスラ オプティマスの公式Twitterアカウントが新しいビデオをア...

AIに関する誤解

企業は意思決定を強化し、消費者体験を向上させるために、幅広いアプリケーションで人工知能を活用すること...

予知保全のための機械学習

[[197940]]要点:将来のシステム障害を監視し、事前にメンテナンスをスケジュールするための予測...

エイリアンがトレンド検索リストのトップに!米国が初のUFO公聴会を開催

昨日、米国議会の公聴会が中国国内の複数のメディアのトレンド検索のトップに躍り出た。 これを一言でまと...

機械学習におけるモデルドリフト

今日、機械学習モデルはビジネス上の意思決定の主な原動力となっています。他のビジネス戦略と同様に、これ...

...

メタは触覚手袋を開発し、メタバースで猫を撫でたい人もいれば、大胆なアイデアを持つ人もいる

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

人工知能と機械学習の違いは何ですか?

[[210283]]人工知能 (AI) と機械学習 (ML) は、現在非常に注目されている流行語で...

小紅書探索チームが新たな枠組みを提案:大規模モデル蒸留のためのネガティブサンプルの価値を検証

大規模言語モデル (LLM) はさまざまな推論タスクで優れたパフォーマンスを発揮しますが、ブラックボ...

ブロックチェーン技術における機械学習

近代化は世界を変える可能性のある新しい画期的なものをもたらしました。現実世界の問題は、単純な従来のア...

GPTベースの開発者ツール

localGPT - GPT モデル ツールのローカル展開localGPT を使用すると、GPT モ...

マイクロソフトとフェイスブックが共同で人工知能ソフトウェアを開発し、グーグルの主導的地位に挑戦

マイクロソフトはすでにオープンソースの人工知能ソフトウェアを持っています。しかしここ数カ月、マイクロ...