グリコレーティングとは
グリコレーティングは、
チェスや
囲碁のような対戦型
ゲームにおいて、プレイヤーの強さを数値で評価するための
アルゴリズムです。
イロレーティングをベースに、マーク・グリックマンによって開発されました。このシステムの特徴は、レーティングだけでなく、その信頼性を示すレーティング偏差(RD)を導入している点です。
グリコレーティングの仕組み
グリコレーティングは、プレイヤーのレーティングとRDを用いて、そのプレイヤーの強さを評価します。RDは、レーティングの正確さを示す指標で、
標準偏差と同じ意味を持ちます。例えば、レーティングが1500、RDが50のプレイヤーの場合、その真の強さは95%の確率で1400から1600の間にあると推定されます。
ゲーム後のレーティング変動は、RDに大きく依存します。RDが小さいほど、レーティングは正確に評価されているため、変動幅は小さくなります。逆に、RDが大きい場合は、情報が少ないため変動幅が大きくなります。RD自身も、
ゲームをプレイするごとに減少しますが、長期間
ゲームをプレイしないと徐々に増加します。
グリコレーティングとグリコ2レーティング
グリコレーティングの改良版として、グリコ2レーティングがあります。グリコ2レーティングでは、レーティング変動率(σ)という新しい指標が導入され、より詳細な評価が可能になっています。
これらの
アルゴリズムは
パブリックドメインとして公開されており、
Lichess、
Free Internet Chess Server、
Chess.comなどの多くのオンライン
ゲームプラットフォームで利用されています。
グリコレーティングの算出方法
以下に、グリコレーティングの具体的な算出方法を説明します。グリコ2レーティングの算出方法は異なります。
初期値
レーティングが未設定のプレイヤーの場合、初期値としてレーティング1500、RD350が用いられるのが一般的です。
ステップ1:事前RDの算出
新しいRDは、古いRDと、最後に
ゲームをプレイしてからの経過時間を用いて計算されます。
RD = min(√(RD0^2 + c^2t), 350)
ここで、tは最後に
ゲームをプレイしてからの経過時間(レーティング期間)、cはプレイヤーのスキルが時間経過とともに不確かになる度合いを示す定数です。この値は、データ分析から算出したり、RDが未レーティング者のRDに戻るまでの時間を元に推定したりできます。
例えば、標準的なプレイヤーのRDが50で、100レーティング期間で未レーティング者のRD350に戻ると仮定した場合、定数cは以下の式で求められます。
350 = √(50^2 + 100c^2)
c = √((350^2 - 50^2) / 100)
ステップ2:新レーティングの算出
m回の一連の
ゲーム後の新レーティングは、以下の式で求められます。
r = r0 + (q / (1/RD^2 + 1/d^2))
Σ[i=1 to m] g(RD_i) (s_i - E(s|r, r_i, RD_i))
各値の意味は以下の通りです。
`g(RD_i) = 1 / √(1 + 3q^2(RD_i^2) / π^2)`
`E(s|r, r_i, RD_i) = 1 / (1 + 10^(g(RD_i)
(r - r_i) / -400)`
`q = ln(10) / 400 ≈ 0.00575646273`
`d^2 = 1 / (q^2 Σ[i=1 to m] g(RD_i)^2
E(s|r, r_i, RD_i) (1 - E(s|r, r_i, RD_i)))`
ここで、
`r_i`は各対戦相手のレーティング、
`s_i`は各
ゲームの結果(勝利は1、引き分けは1/2、敗北は0)を表します。
ステップ3:新RDの算出
ゲームをプレイすることで、プレイヤーのスキルがより正確に評価できるため、RDは減少します。新しいRDは以下の式で計算されます。
RD' = √((1/RD^2 + 1/d^2)^-1)
まとめ
グリコレーティングは、プレイヤーの強さを数値化するだけでなく、その評価の信頼性も考慮した、より高度なレーティングシステムです。オンライン
ゲームを中心に広く利用されており、プレイヤーのスキルを公平に評価する上で重要な役割を果たしています。
関連情報
イロレーティング: グリコレーティングの基礎となったレーティングシステム。
TrueSkill:
マイクロソフトが開発した、グリコレーティングをベースにした
アルゴリズム。
外部リンク
Mark Glickman's World - Glicko Ratings (英語)
RobKohr/glicko - JavaScriptグリコ2実装
mmai/glicko2js - JavaScriptグリコ2実装
sublee/glicko2 - Pythonグリコ2実装
*
PlayerRatings - Rグリコ実装