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

ブログ    

推薦する

...

AIがデータセンターの設計をどう変えるか

AI システムへの世界的な支出は 2023 年から 2026 年の間に 2 倍になると予想されており...

レポート予測:Appleは2020年にSiriオペレーティングシステムをリリースする

[[271210]]海外メディアの報道によると、マングローブ・キャピタル・パートナーズは今週、201...

Huang が H100 を「ブースト」: NVIDIA が大規模モデル アクセラレーション パッケージを発表、Llama2 推論速度が 2 倍に

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

TSN タイムセンシティブネットワークテクノロジーの簡単な分析

産業インテリジェンスの継続的な発展に伴い、産業インターネットは産業インテリジェンス発展のための重要な...

自動運転の倫理的ジレンマを解決する: 道徳規範を数式に変換する

暴走列車が線路を走っています。5人が線路に縛られており、列車に轢かれそうになっています。この時点で、...

人工知能はさまざまな業界でどのように応用されているのでしょうか?

「人工知能」という用語は、人間の意思決定を模倣または複製できる機械とは対照的に、複雑でインテリジェ...

人工知能によって破壊される可能性のある7つの業界

[[417720]]人工知能は最先端の技術から人々の日常生活に組み込まれる技術へと急速に進化していま...

...

カンファレンスで GitHub のトップ 10 AI アップデートが発表されました。

著者 | タスミア企画 | ヤン・ジェン制作:51CTO テクノロジースタック(WeChat ID:...

ディープニューラルネットワークはディープフェイクを検出できる

開発者がディープフェイクのパンドラの箱を開けたことで、本物と区別がつかないほどリアルな写真を偽造する...

米メディア:OpenAI、自社技術の軍事利用を禁じる条項を削除

米国の調査報道サイト「ザ・インターセプト」が1月12日に報じたところによると、ChatGPTの親会社...

自動化ロボットのHMI設計の詳細な説明

[[260977]] [51CTO.com クイック翻訳] ロボットの操作インターフェースをカスタマ...

...