はじめに
この記事はレーティングシステムの中で最も有名な手法であるイーロレイティングについて学ぶ。
イーロレイティングは次のような特徴を持つ。
- プレイヤーのレートは正規分布に従う
- 試合によるレートの変動を試合ごとに計算できる
- 試合によるレートの変動は相手プレイヤーと自分のレート差に依存する。
なおこの記事は、前回記事の続きであるが、この記事単体でもElo raitingは理解していただけると思う。
Elo rating
イーロレイティングははじめに、初期のレートを決定してその後に試合結果からレートを更新するという方法を取る。その為、試合結果を増やした時の計算を行いやすいのが利点である。
試合結果の更新は次の式に基づいて行われる。
r_{i}(new) = r_{i}(old) + K ( S_{ij} - \mu_{ij}) \tag{1}
ここで、$S_{ij}$は試合結果によるパラメータでチェスの場合次のようなものが用いられる。
S_{ij} =
\begin{cases}
& 1 & \text{ i win} \\
& 0 & \text{i lose} \\
& 1/2 & \text{draw}
\end{cases} \tag{2}
さらに、$\mu_{ij}$は次のようにlogistic関数を用いて表せる。
\mu_{ij} = \frac{1}{1 + 10^{-d_{ij}/400}} \tag{3}
K因子について
(1)式に登場したKという定数は、レート変動の大きさを表している。
一回の試合が大きくレートを変えるようなものならこの変数を大きく変えたりすればよい。
例えば、サッカーでのK因子は次のように決定されている(Unofficial)
- $K=60$ W-cup決勝
- $K=50$ 国際戦
- $K=40$ W-cupトーナメント
- $K=30$ その他トーナメント
- $K=20$ 親善試合
S因子について
(2)式で表せるS因子はチェス用のものである。他にもサッカーでは次のようなS因子が用いられている。
S_{ij} =
\begin{cases}
& 3 & \text{ i win} \\
& 0 & \text{i lose} \\
& 1 & \text{draw}
\end{cases}
logistic関数のパラメータについて
(3)式でlogistic関数内に400というマジックナンバーが出てきたことに驚いていると思う。
この400という数字は、勝率に関係しており、400倍のレート差があると勝率が10倍になるというものである。
例えば、私のチェスレートは600程であり、チェスの世界チャンピオン、ボビーフィッシャーと2000以上のレート差がある。簡単のためにレート差を2000として私がボビーフィッシャーに勝つ確率を計算すると次のようになる。
$$
10^{-\frac{2000}{400}} = 10^{-5} = 0.001 \text{[%]}
$$
つまり、私は10万回試合すれば一回はボビーフィッシャーに勝てるという事である。(あくまで計算上は)
例題(RLCS)
今回例としてロケットリーグチャンピオンシップ(RLCS)シーズン10のリーグ戦結果を用いてレーティングを求めてみる。
ロケットリーグ(RL)はサッカーのようなルールなので、S因子についてサッカーのものを用いようと思ったが、RLには引き分けが無いので、チェスと同じ(2)式を用いることにした。
K因子としては400を利用し、初期レート400、logistic関数のパラメータを1000にしてみた。
この条件で試合結果からレートを導出すると次のようになった。
order | team name | rate |
---|---|---|
1 | V1 | 451.672 |
2 | OXG | 421.988 |
3 | RGE | 421.529 |
4 | SQ | 392.316 |
5 | VOLT | 312.495 |
この結果は前回、前々回導出した結果と同じ順位となり、ある程度の保証がある事が分かった。
最後に
今回とても有名なレーティングシステムであるイーロレイティングについて書いた。
個人的には、レートの更新にすべての試合結果を用いないことが、レートを更新しやすいため使いやすいと感じた。イーロレイティングについては様々な記事があるので分からなかったことが他の記事を読んでみるのもいいと思う。個人的にはこの記事が面白かった。