1. ホーム
  2. php

[解決済み] Glicko-2のレーティングシステム。バグか悪用か?

2022-02-14 07:32:58

質問

Glicko-2はチェスで使用される評価システムですが、他の多くの状況で使用することができます。Glicko-2はGlicko-1を改良したもので、旧来のELOレーティングの問題点に対処したものです。

Glicko-2がバージョン1と比較して特別なのは、活動休止期間が長いほど高いレーティング・デビエーション(RD)を取り入れている点である。これは、時間やレーティング期間に関連するシステム定数という概念で実現されています。

著者の書き込み例はこちらです。 http://www.glicko.net/glicko/glicko2.pdf .
この資料の中で、彼は説明しています。

Glicko-2システムは、1つのレーティングにおけるゲーム数が多い場合に最も効果的です。 中~大規模の期間、例えば少なくとも平均10~15試合は行う。 を、1つのレーティング期間に1人当たり レーティング期間の長さ は、管理者の裁量に委ねられます。

アクティブなチェスプレイヤーのグループが1ヶ月の間に平均10-15ゲームをプレイすると仮定すると、管理者は毎月末にレーティングを更新することになります。


Glicko-2のレーティングシステムをPHPで実装する必要があり、以下のものに出会いました。

Glicko-2 の JavaScript 実装

  • このJavaScriptには小さな誤りがあり、そのため、このJavaScriptは 技術文書の例では、作者はそれに近いものを見つけ、そして デバッグをしなかった。

Glicko-2 PHP実装

  • PHPの実装は多くのバグに悩まされていましたが、そのことは 複数回の評価期間を経なければわからない(この評価期間は 技術資料には期待値が記載されていない)

ExcelでGlicko-2計算機

  • 最後にエクセルの電卓はミスがなく、最も優れているように思えました。 チェス関係者の手によるプロフェッショナルなものです。一旦 JavaScriptのバグが解決され、JavaScriptとExcel Calculatorは は互いに非常によく一致した(完璧ではないとはいえ、丸め誤差の範囲内かもしれない)。

PHPとJavaScriptのバグを修正し(作者にissue/patchを提出し)、Excel Calculatorとできるだけ一致させるようにしました。


これで、分析用の正確なGlicko-2実装(3つのうち)ができたと99%確信したところで、不思議なことに遭遇し、今回の話題となったわけです。

Glicko-2の新規プレイヤー向けの推奨デフォルトを考えると。

Rating:      1500
RD:           350
Volatility:  0.06

レーティング1378、RD99の平均的な相手と対峙した場合( ソース 今後12期間(1年間)、1レーティング期間(1ヶ月)に1回だけ、想定した ナショナルクラスA (1800-1999)のレーティング1852を獲得していますが、実際には12ヶ月の間に平均的なレーティングのプレイヤー12人にしか勝っていないのです。

Month   Rating      RD      Volatility      Class
1       1625        259     0.059999        National Class B
2       1682        225     0.059998        〃
3       1718        205     0.059997        〃
6       1784        174     0.059994        〃
12      1852        148     0.059988        National Class A
24      1922        127     0.059976        〃

格付け期間ごとに平均的な相手と2回対戦すれば、平均的な相手8~10人としか対戦せず、約4~5ヶ月でナショナルクラスAに到達することができるのです。

Month   Rating      RD      Volatility      Class
1       1672        215     0.059999        National Class B
2       1733        183     0.059997        〃
3       1770        166     0.059995        〃
4       1797        154     0.059993        〃
5       1819        146     0.059992        National Class A
6       1836        140     0.059991        〃


この仮定は正確ですか?私の計算機にバグがあるのでしょうか?

バグでない場合、他に対策はありますか。

  • 真の評価とは、偏差の下限値であると考える(評価-偏差)。 RD)
  • 非アクティブユーザーのレーティングを表示しない
  • ゲーム数N以下のユーザーを表示しない

解決方法は?

直感に反するようですが、これは実は正しい結果なのです。平均的なプレイヤーと対戦し続けても、期間に関係なく常に勝利するのであれば、あなたは高いランキングを持っていることを実証しています(対戦相手が平均的であっても平均的なランキングではありません)。平均的な(「真の」平均的なランクを持つ)プレイヤーが、全く同じ「真の」ランク(平均的な)の相手と対戦すると、約50%の確率で勝ったり負けたりするはずです。真の」ランクが非常に高いプレイヤーは、平均的なプレイヤーと対戦した場合、より多くの割合で勝つことができます。これは、お互いのランクがどのくらい離れているかによりますが、仮に十分高いランクであれば、90%の割合で勝つことができます。つまり、平均的なプレイヤーと10回対戦するごとに、この高ランクのプレイヤーは1回負けるはずです。

あなたが効果的にモデル化したのは、平均的なプレイヤーに対して毎試合勝てるほど高いランクを持つプレイヤー(12試合以上、24試合以上負けなし)です。つまり、負けなしなので、勝ち続ければスコアは際限なく上がり続けるのです。負けるまでは)期待勝率が100%に近づくほどランクが離れているはずの能力を発揮しているのです。