🐥

【統計】「どっちが面白い?」の主観評価を客観スコアに変える技術(Bradley-Terryモデル)

に公開

私たちの研究室

https://nisk.doshisha.ac.jp/

アドベントカレンダー20日目

https://nislab-advendcallender-2025.vercel.app/

背景

コンテストの審査で、「AとB、どっちが優れているか?」という一対比較(Paired Comparison)のデータ扱うことがあります。これらを集計してランキングを作る際、単なる「勝ち数」ではなく、統計的に妥当なスコアを算出できるのがBradley-Terryモデルです。
今回は、このモデルの数理的な仕組みと、そのパラメータを推定するための最尤推定法について解説します。

1. モデルの定義:強さをどう定義するか

Bradley-Terryモデルでは、比較対象(プレイヤーや作品)i が持つ「真の実力」を \theta_i というパラメータで表します。
このとき、プレイヤー i が プレイヤー j に勝つ確率 P(i > j) は、以下のロジスティック関数(シグモイド関数)で定義されます。

P(i > j) = \frac{1}{1 + e^{-(\theta_i - \theta_j)}}

この数式は、以下の特徴を持ちます。

  1. 実力差が勝率になる: 勝敗は、2者のスコアの差 \theta_i - \theta_j だけで決まります。
  2. 差が0なら五分五分: 実力が同じ(\theta_i = \theta_j)なら、分母が 1+1=2 となり、確率は 0.5(50%)になります。
  3. 差が開くと確率は1または0に近づく: 実力差が大きくなると、勝率は限りなく100%に近づきます。
    つまり、Bradley-Terryモデルとは「勝敗データを使って、この未知のパラメータ \theta(実力スコア)を逆算する問題」と言い換えることができます。

2. 推定の仕組み:最尤推定法 (MLE)

では、手元にある勝敗データ(結果)から、どうやって \theta を求めるのでしょうか。ここで使われるのが最尤推定法(Maximum Likelihood Estimation)です。
これは「手元のデータが観測される確率(尤度)が最大になるような \theta の組み合わせを探す」という手法です。

尤度関数(Likelihood Function)の構築

例えば、以下のようなデータが得られたとします。
• i が j に勝った(確率 P_{ij})
• k が i に勝った(確率 P_{ki})
この全事象が同時に起こる確率(尤度 L)は、個々の確率の掛け算になります。

L(\theta) = \prod_{すべての試合} P(\text{勝者} > \text{敗者})

しかし、確率(0〜1の値)を何百回も掛け算すると、値が小さくなりすぎてコンピュータが計算できません(アンダーフロー)。そこで、両辺の対数を取って「掛け算」を「足し算」に変換します。これが対数尤度関数(Log-Likelihood Function)です。
\log L(\theta) = \sum_{すべての試合} \log P(\text{勝者} > \text{敗者})

最適化問題への帰着

この \log L(\theta) が最大になる地点(山の頂上)を探すことがゴールです。
具体的には、数理最適化アルゴリズム(BFGS法など)を用いて、この関数を最大化する \theta_1, \theta_2, ..., \theta_n のセットを計算機に探索させます。
「今のスコア設定だと、この試合結果になる確率は低いな…じゃあスコアを修正しよう」という試行錯誤を、微分を使って高速に行うイメージです。

3. 実践上の課題:全勝・全敗問題と正則化

理論上は上記の最尤推定で解けますが、現実のデータ(特にデータ数が少ない場合)では問題が起きます。
例えば、「5戦全勝」のプレイヤーがいた場合、モデルは「この人は負ける確率が0だ」と判断し、スコア \theta を無限大(+ \infty)にしようとします。これが計算の発散です。
これを防ぐために、実装時には正則化項(Regularization Term)を加えます。

\text{目的関数} = -\log L(\theta) + \lambda \sum \theta_i^2

後ろの \lambda \sum \theta_i^2 がペナルティとして働きます。「スコアを極端に大きくしすぎるとペナルティを与えるよ」という制約を入れることで、全勝データが含まれていても計算が安定し、妥当なスコアが得られるようになります。

まとめ

• Bradley-Terryモデル: スコア差から勝率を算出する数理モデル。
• 最尤推定法: 「現実の勝敗データ」が最も起こりうるようなスコアを逆算する手法。
• 正則化: データが極端な場合(全勝など)に計算が破綻しないようにする現実的な工夫。
この一連の処理を経ることで、コンテストのような「まばらで主観的な比較データ」からも、客観的なランキングを作り出すことが可能になります。

NISLab 小板・小比賀 研究室

Discussion