Elo rating の基本

スポーツにおいて,チームがどれくらいの確率で勝つのかを知りたいとき,どうすればよいのでしょうか。

ここでは,Elo rating (イロレーティング)と呼ばれるシステムについて紹介したいと思います。チェスをはじめとして,最近では FIFA のサッカー代表のランキング付けにも使われるようになりました。

1.まとめ

すごく長い記事になったので,はじめにまとめを記しておきます。

  • Elo rating を使うと,試合で勝つ確率を大まかに予想できる。レーティングの差が大きければ大きいほど,勝つと予想される確率は大きくなる。
  • 試合があるとレーティングは更新される。負けたチームから勝ったチームにレーティングを渡すような形で更新は行われる。
  • 番狂わせが起きると渡すレーティングは大きくなり,予想通りの結果だと小さくなる。
  • Elo rating の予想は万能ではない。例えば,試合数が少なかったり,チームに変化があった後だったりすると,予想される確率は正確性を欠くと考えられる。

2. 勝つ確率の(おおまかな)予測

例えば,レーティング 2000 のチーム(X とします)と 1500 のチーム(Y とします)が対戦をするとしましょう。このとき,X が勝つ確率 P_{winX}は次のように求められます。

P_{winX}=\frac{1}{1+10^{-\frac{2000-1500}{600}}} = 0.872

また,Y が勝つ確率 P_{winY}

P_{winY}=\frac{1}{1+10^{-\frac{1500-2000}{600}}} = 0.128

なお,チェスやサッカーでは勝ち負けだけでなく引き分けもあるため,引き分ける確率を P_{drawX}として

 P_{winX}+P_{drawX}\times 0.5=0.872

となります。

それでは,具体的な数式の仕組みを解説していきましょう。

FIFA の使用している Elo rating では,2 チームのレーティングの差を drとして,以下のような式を用いて勝つ確率を予測しています。

 P_{win}=\frac{1}{1+10^{-\frac{dr}{600}}}

この式だけを見てもわからないと思うので,グラフに落としてみます。

f:id:hoshiotan:20210227142205p:plain

レーティングの差と勝率の関係

相手とのレーティングの差が大きければ大きいほど,勝つと予想される確率は上がります。また,そのグラフはシグモイドカーブを描くことがわかります。これが Elo rating の特徴です。

また,相手とレーティングが同じ時(= 差が 0 のとき),実力が同じと考えているので,当然ながら勝つ確率は 0.5 になっています。

3. レーティングの更新

当然のことながら,チームの実力は時によって変化します。ということは,実力を示すレーティングも変動しなければなりません。

Elo rating では,試合の結果に応じてチームのレーティングを変化させることができます。計算式は次のようになります。

 \Delta R=K\times \Bigl(R-P_{win}\Bigr)

  •  \Delta R はレーティングの変化値で,求めたいものです。( \Deltaは「デルタ」と読んで,変化量を表します。)
  •  K はレーティングの最大の変化値で,適当な数を代入します。
  •  R には結果を代入します。勝ち→ 1 ,負け→ 0 ,(引き分け→ 0.5 )です。
  •  P_{win}にはそれぞれのチームが勝つ確率を代入します。

先程の例で,X が Y に勝ったとしましょう。 Kを 30 とすると,試合後のそれぞれのレーティングは以下のようになります。

X:
 \Delta R=30\times(1-0.872)=3.84
よって,試合後のレーティングは 1700+3.84=1703.84

Y:
 \Delta R=30\times(0-0.128)=-3.84
よって,試合後のレーティングは 1500-3.84=1496.16

試合前と比較すると,X のレーティングは増え,Y のレーティングは減りました。X は試合に勝ったので今までより強いと見なされることになりました。

また,X のレーティングの増加分と Y のレーティングの減少分が同じになっていることがわかります。言い換えれば,Y から X に 3.84 だけレーティングを渡したというふうにみなすこともできます。これはこの場合に限らず成立します。すなわち,負けたチームから勝ったチームにレーティングを渡すような形で更新が行われます。

逆に,Y が X に勝ったとしましょう。試合後のそれぞれのレーティングは以下のようになります。

X:
 \Delta R=30\times(0-0.872)=-26.16
よって,試合後のレーティングは 1700-26.16=1673.84

Y:
 \Delta R=30\times(1-0.128)=26.16
よって,試合後のレーティングは 1500+26.16=1526.16

試合前と比較すると,負けた方の X から勝った方の Y へレーティングが 26.16 渡されたことがわかります。

注目すべき点は,Y が X に勝ったときのほうがレーティングの変化が大きくなっていることです。このように,番狂わせが起きるとレーティングの変化は大きくなります。レーティングの低い Y が勝ったということは,それだけ多くレーティングを修正しなければいけないからです。

逆に,レーティングの高いほうが勝ったら,それは想定に近かったということなので,あまり修正は必要ありません。そのため,レーティングの変化は小さくなります。

4. Elo rating の問題点

1 章で「Elo rating を使えば勝敗の確率の予測ができる」と書いたのですが,それがうまくいかない場合があります。

  1. 試合数を多くこなしていないとき

    試合数を多くこなさないと,レーティングが十分に更新されませず,実際の実力を反映することができません。

    先程の例で,仮に X と Y が対戦した時に勝つ勝率がともに 0.5 だとしましょう。試合をするごとにランダムに勝者を決めてレーティングを更新すると,レーティングの推移は以下のようになります。

    f:id:hoshiotan:20210228122556p:plain

    試合数とレーティングの変化

    実際に試合に勝つ確率は 0.5 なので,2 チームのレーティングはおよそ同じ値になるべきです。しかし,はじめのレーティングがかなり異なっていたため,レーティングが等しくなるまでに 60 試合くらいかかっています。すなわち,試合数が少ないとレーティングの初期値の影響を大きく受けてしまい,正しく確率の予測をすることは難しいと考えられます。

  2. チームに変化があったとき

    例えばチームの主力が怪我で離脱して,そのチームが弱くなったとすると,実際のチームの勝つ確率は下がるはずです。また,強い選手を補強すれば,実際のチームの勝つ確率は上がるはずです。
    しかし,Elo rating は試合をしないと変化することはないので,試合前に計算して得られた確率は元のままで,その確率はあまり信用できないことがわかります。
    このように,チームに変化があった直後の Elo rating はあまり正しくない可能性があります。

5.まとめ(再掲)

  • Elo rating を使うと,試合で勝つ確率を大まかに予想できる。レーティングの差が大きければ大きいほど,勝つと予想される確率は大きくなる。
  • 試合があるとレーティングは更新される。負けたチームから勝ったチームにレーティングを渡すような形で更新は行われる。
  • 番狂わせが起きると渡すレーティングは大きくなり,予想通りの結果だと小さくなる。
  • Elo rating の予想は万能ではない。例えば,試合数が少なかったり,チームに変化があった後だったりすると,予想される確率は正確性を欠くと考えられる。

長くなりましたが,最後まで読んでいただきありがとうございました。