- @ThothChildren
- 2018.6.12
- PV 620
二人対戦のプレイヤ強さを数値化したい
ー 概要 ー
ゲーム等の二人対戦においてプレイヤーの強さを数値化したい場面は多く、ゲームに限らずスポーツその他においても必要になることがあります.ここでは二人対戦のチェスにおいて使われてきた数値化方法を中心に紹介していきます.(数値化をレーティングとも言う)
この章を学ぶ前に必要な知識
条件
- 二人のプレイヤの初期値を適宜決める必要あり
効果
- プレイヤの強さを示す数値を得る
ポイント
- チェスでは古くからプレイヤの数値化を行ってきており、国ごとに採用している評価方法は異なる
- 数あるレーティングでもElo Ratingは様々な場面で活用される
- TrueSkillはMicrosoftから発表された手法だが、特許のため使用にはライセンス取得が必要
- Ingo Rating, ECF Rating, Elo Rating, Glicko Rating, True Skillについて紹介する
解 説
ゲームなどにおける二人対戦のプレイヤ強さの数値化手法について紹介します.
ここでは導出などは行わずあくまで紹介に止めます.
・Ingo Rating Syatem
シンプルで西ドイツで長く使われてきた.
・ECF Rating System
こちらもシンプルなレーティングシステム.弱いときから始めている人がレーティングをあげるのは難しいため、何らかの救済措置が必要となる.
・Elo Rating Syatem(イロレーティング)
最も使用されるレーティング手法.レーティングの差分がそのユーザの勝率を示す.大きい値の方が強い.
・Glicko Rating System(グリコレーティング)
Elo Rating Systemにおいてレーティングがインフレしてしまう問題を改善.またレーティングの信頼性も算出可能で,どれくらいの幅を持ったレーティングかが計算可能.一部の団体やゲームにて採用されている.Glicko2も開発されている.最後のプレイからの時間も考慮.
・True Skill
MicrosoftがXBoxで採用しているレーティング.特許、商標を出しているため、使用にはライセンス許諾が必要.複数人やチーム対戦などにも対応したアルゴリズムになっている.
| 二人対戦のプレイヤ強さを数値化したい |
1.Ingo Rating System | |
Ingoのレーティングはかなりシンプルなものになっている.
全員のレーティングの平均を求めて、(50% - プレイヤーの勝率) * Xポイント分の計算をして更新する.Xは適宜決める. | Ingo Rating Systemについて |
$$R = R_{average}-X \times (50 - \frac{N_{win}}{N_{total}}) $$ | R_averageはそのゲームに参加した人のレーティング平均
Xは係数(10とか)
N_winは勝ちの回数,N_totalは試合数 |
2.ECF Rating System | |
$$\begin{eqnarray} \left\{ \begin{array}{l} R = R_{enemy} - 50 + 100(win) \\ R = R_{enemy} - 50 + 0(lose) \end{array} \right.\end{eqnarray}$$ | レーティングの更新式
引き分けなら更新なし |
ECFは統計的な背景を考慮せずに算出するレーティングアルゴリズム.
非常にシンプルで、勝った場合は50増えて、負けた場合は50失う.
ただし、プレイヤ間で40以上の差があると勝ってもレーティングが下がってしまうので、そのようなことはしないように注意. | ECF Rating System |
3.Elo Rating System | |
Elo Ratingは様々な場面で使われる最も有名なレーティングアルゴリズム.チェスのレーティングのために開発され、二人組の競技にて計算することを想定している.
各ユーザの強さ(その日のパフォーマンスを含めて)を正規分布で近似できることを前提としている.
レーティングの差分を計算することで相手に対する勝率を計算することができるのが特徴.
算出も更新も用意なアルゴリズムとなっている. | Elo Rating Systemについて |
Elo Ratingを実際に適用した試合結果等についてまとめている動画は数多くあるので、どのような使われ方をしているかは右のリンク参照願います. | 外部リンク Elo Ratingに関連する動画 |
$$\begin{eqnarray} \left\{ \begin{array}{l} E_a = \frac{1}{1+10^{(R_b-R_a)/400}} \\
E_b = \frac{1}{1+10^{(R_a-R_b)/400}} \end{array} \right.\end{eqnarray}$$ | E_a : Aが勝つ確率
E_b : Bが勝つ確率 |
$$R_{a_{new}} = R_a + K(S_A-E_a) $$ | 新しいレーティングの更新式
S_Aは勝ち数で勝ったら1負けたら0引き分けは0.5で足し算したもの.
複数回試合した場合はS_AもE_aも和を取って上記の更新式に代入すれば良い. |
余談だが、Facebookのマークザッカーバーグが作成していたFacemashのランキングアルゴリズムはElo Ratingによるものらしい | Elo Rating Systemの余談 |
4.Glicko Rating System | |
Glicko Rating SystemはEloを改善したアルゴリズムになっており、採用実績も多い.
改善点は、
・インフレしないような工夫
・レーティングの信頼性を算出(前回プレイしてから時間が立っている等)
を行っている. | Glicko Rating Systemについて |
詳しいGlicko Ratingの算出方法は右を参照 | 外部リンク Glicko Rating |
5.True Skill | |
True Skillは複数人やチームでの対戦などにも適用することのできるレーティング手法.
各人のプレイヤの強さは正規分布で近似できることを前提としており(Eloも同じ)、
それらのパラメータを求める(分布を推定する)のが主な作業.
分布をモデル化してそれらをつなぎ合わせたファクターグラフを作成、そこから試合の結果を反映して各人の分布の更新を行います. | True Skillについて |
True Skillについては公式の説明をしているページ、よくある質問に対する答えなどを用意していますので、参考にしてください | 外部リンク True Skillについて(公式) |
Microsoftは近年True Skillの改良版True Skill2を発表しており,
True Skillにゲーム内で得られる情報を付加してさらにレーティングの精度を高める工夫が行われている.
| 外部リンク True Skill2 |
この章を学んで新たに学べる
Comments