mainに戻る

掘り出し物ランキングのスコア計算について

ランキングで使用しているスコア計算式の解説

#アルゴリズム#DLsite

掘り出し物ランキングのスコア計算について

このページでは、ランキングで使用しているスコア計算式について解説します。

何のためのスコア?

平均評価が高いだけだと、評価数が少ない作品が上に来やすくなります。逆に、DL数がとても多い作品は「安定して人気」ですが、掘り出し物が埋もれがちです。

そこでこのスコアは、評価平均評価数DL数を合わせて、「まだ知名度は高くないが質が良い作品」を見つけやすくします。

入力データ

  • dl = dl_count(DL数。多いほど人気)
  • rc = rate_count(評価数。多いほど信頼できる)
  • avg = rate_average_2dp(平均評価 0〜5)

事前の基準値

  • mu0 = ゲームジャンル全体の平均評価(事前集計)
  • m = 20(疑似件数:評価が少ないときの保険)
  • k = 3(事前評価数)
  • d = 100(事前DL数)
  • r0 = 30(信頼度の立ち上がり)
  • s = 3000(DL減衰開始の目安)
  • c = 2000(減衰の緩さ)

計算の流れ

1. 評価が少ない作品のブレを抑える(ベイズ平均)

bayes_avg = (mu0 * m + avg) / (m + rc)

評価数が少ないときは「ジャンル平均」に寄せて過大評価を防ぎます。

2. 評価率をなめらかにする(少数サンプル対策)

eval_rate = (rc + k) / (dl + d)

評価数が少なくても極端に上がりすぎないよう補正します。

3. 評価数の信頼度(多いほど信頼できる)

conf = 1 - exp(-rc / r0)

評価数が増えるにつれて信頼度が上がります(最初はゆっくり)。

4. DL数が大きすぎる作品をやや減衰

saturation = 1 / (1 + max(0, dl - s) / c)

大ヒット作品が上位を独占しすぎないようにします。

5. 品質と最終スコア

quality = bayes_avg * conf
final_score = quality * eval_rate * saturation

「評価の高さ × 信頼度 × 掘り出し補正」で最終順位を決めます。

補足

mu0 は事前に集計してデータベースに保存しています。手動更新時は crawl-dlsite update-stats を実行すると最新の mu0 が反映されます。