kaz.dev

レーティングシステムについて

tag: rating-system, what


レーティングシステムの種類

本ページにおけるレーティングシステムとは、「2人(もしくはそれ以上)におけるプレイヤーの強さなどを数値化したもの」を指す。

下記は二人対戦のプレイヤ強さを数値化したい - Thoth Childrenより引用、抜粋

  1. Ingo Rating Syatem
    • シンプルで西ドイツで長く使われてきた
  2. ECF Rating System
    • こちらもシンプルなレーティングシステム
    • 弱いときから始めている人がレーティングをあげるのは難しいため、何らかの救済措置が必要となる
  3. Elo Rating Syatem(イロレーティング)
    • 最も使用されるレーティング手法
    • レーティングの差分がそのユーザの勝率を示す
    • 大きい値の方が強い
  4. Glicko Rating System(グリコレーティング)
    • Elo Rating Systemにおいてレーティングがインフレしてしまう問題を改善
    • またレーティングの信頼性も算出可能で,どれくらいの幅を持ったレーティングかが計算可能
    • 一部の団体やゲームにて採用されている
    • Glicko2も開発されている.
    • 最後のプレイからの時間も考慮
  5. True Skill
    • MicrosoftがXBoxで採用しているレーティング
    • 特許、商標を出しているため、使用にはライセンス許諾が必要
    • 複数人やチーム対戦などにも対応したアルゴリズムになっている

Chess rating system - Wikipediaを見ると他にもありそう





上記について加筆、コメントをしていく





Ingo Rating Syatem

二人対戦のプレイヤ強さを数値化したい - Thoth Childrenを疑う訳ではないが、軽く調べたところこの記事以外に詳細なスコアの算出方法を見つけることができなかった。

メリット

スコアの導出が簡単でシンプル

デメリット

弱いプレイヤー(もしくは新規プレイヤー)がとても強いプレイヤーに勝った時などのスコアの更新が甘いので、幅広いプレイヤー層や長期間のレーティングには向かなさそう





ECF Rating System

ECFはEnglish Chess Federation(英語チェス連盟) systemの略

導出方法

更新対象の更新後のスコアをRR'、敵スコアRenemyR_{enemy}とすれば

{R=Renemy+50(win)R=Renemy(draw)R=Renemy50(lose)\begin{cases} R' = R_{enemy} + 50 & (win) \\\\ R' = R_{enemy} & (draw) \\\\ R' = R_{enemy} - 50 & (lose) \end{cases}

ここでレートに40以上の差がある時に勝ってもレートが下がってしまう。

A, BのレートをそれぞれRA=300,RB=100R_A = 300, R_B = 100とする
この時「Aが勝った」とすると
RA=RB+50=150R_A' = R_B + 50 = 150
RB=RA50=250R_B' = R_A - 50 = 250
「Aが勝った」のにも関わらずAのスコアはBのスコアより小さい上に、レートが下がってしまった

メリット

スコアの導出がシンプル

デメリット

導出方法で挙げたようなレートが下がってしまう問題があり、あまり適切ではない

その他

イロレーティングとの換算式を有する

参考文献





Elo Rating Syatem

最も有名だと思う

自分はソーシャル・ネットワーク (映画) - Wikipediaという映画で知った

マーク・ザッカーバーグがFacebookをどうやって作ったかが語られるノンフィクション映画
最初の数十分は見るだけでテンションが上がるので、コードを書きたいときなんかは流し見することもある
おすすめです

導出方法

多くの詳細な記事やライブラリがあるので省略

メリット

今回では初めて数学的に裏付けのあるレーティングシステム

各プレイヤーの真の実力を推定する簡単な方法
対戦相手のレーティングとの比較から、予想される勝率を比較的簡単に算出することができる
勝利数が多い選手のレーティングは上方修正され、少ない選手のレーティングは下方修正される。
イロレーティング - Wikipediaより

デメリット

初期のレーティング次第ではレーティングのインフレ・デフレが起こる可能性がある





Glicko Rating System(グリコレーティング)

イロレーティングの問題点などを改善するために作られた
特徴としては最後のプレイからの経過時間が考慮される点
逆にプレイ時間に関係のない場合には使えない?
→ 事前RD計算における c2tc^2 t の定数cを変化させることで時間経過を無視できそう

導出方法

こちらも省略

メリット

時間経過を算出に含めることができるため、「長時間プレイしない=鈍っているのではないか」という点を含めて算出することができる

デメリット

不明

参考文献

http://www.glicko.net/glicko.html





Glicko2 Rating System(グリコ2レーティング)

グリコレーティングとの大きな違いは見つけられなかった(多分信頼度とかの向上を図ってるのかな?論文とかを読めばわかると思う)

The rating scale for Glicko-2 is different from that of the original Glicko system.
However, it is easy to go back and forth between the two scales.
GlickoとGlicko2システムではレーティングスケールが違うが、それらは容易に換算できる
Example of the Glicko-2 system | Professor Mark E. Glickman, Boston University, November 30, 2013

とあるのでやはり大きく違うということはなさそう

導出方法

省略

メリット

グリコレーティングの改良版だと考えれば良いと思う

デメリット

グリコレーティングより少し複雑

参考文献

レーティングについてと,グリコ2レーティング(Glicko-2 System)におけるレーティング算出方法 - 機械学習、たまにゲーム

http://www.glicko.net/glicko.html





True Skill

これまでのレーティングシステムは1対1に対して、True Skillは複数人/チーム対戦などでも対応できる

TrueSkill「まだ Elo レーティングで消耗してるの?」 - Qiitaより引用

メリット

上記で挙げた特徴など

特に次の画像のような収束の速さには驚いた


TrueSkill「まだ Elo レーティングで消耗してるの?」 - Qiitaより引用

デメリット

算出が複雑かつ困難ではあるがライブラリも多いためデメリットというほどではない

その他

Microsoftは近年True Skillの改良版True Skill2を発表しており, True Skillにゲーム内で得られる情報を付加してさらにレーティングの精度を高める工夫が行われている.
二人対戦のプレイヤ強さを数値化したい - Thoth Childrenより引用





まとめ

もともと知っていたイロレーティングについて知るとともに、他のレーティングシステムとその対比についてまとめることが目的でした

True Skillの収束の早さには驚いたので、もう少し調べて使えそうならTrue Skillを使おうと思った