知ってるようで知らないELOレーティングの仕組み

はぁいどうもー！
バーチャルツイッタラーのはじぽんでーす！
最近全くバズらなくてフォロワーが微妙に減っちゃってるのは密かな悩みです！
（バズったことなど一度もない）

さてさて、今日のお題はですね、なんとこちら！じゃーーん！
『ELOレーティング』　ﾊﾟﾁﾊﾟﾁﾊﾟﾁ!!
エロレーティングじゃないですよ？イロレーティングと読みましょうｂ

さぁ皆さん。レーティングってどういう仕組みか知ってますか？

ふむふむ？対戦者それぞれにレーティングの数字を持っていて、
負けたほうの数字が勝ったほうの数字に移動するやつ？
そんで同じレート帯での対戦なら基準値の移動で、
レートの高い人がレートの低い人に勝ったら少なく移動、
レートの低い人がレートの高い人に勝ったら大きく移動じゃないかって？

はい、もうこの記事ここで終わってもいいくらいの正解だと思います！！
それでは皆さん良いお年を！！！



え？まだ何か喋れって！？！？

うーん。

困った。

じゃあちょっとうんちくっぽいものをググったからペタペタ貼っていくよ！！（）

# 始まりはチェス
1960年ごろにチェスマスターだったアルパド・エムリック・イロさんが、それまでのレーティングの計算式を改良して新しいものを考案したのが、名前からとってイロレーティングとなったそうな。
当時はパソコンなんてない時代なのできっと手計算だったに違いない。（電卓はあったかな？）

# 何に使われてる？
チェスのほかに将棋、囲碁、我らがオセロは当然のこと、スポーツでもサッカー、ラグビー、テニスなどで使われてるっぽい。
もちろん最近ではオンラインゲーム系で大量に使われてるよね。

# どうやって数値決めるの？
仮定のゲームで、レート2000の人とレート1600の人の実力差ってどんくらいだと思う？
これをオセラーお馴染みのオセロクエストに置き換えたら大体感覚的にわかるよね。
でもこれを数値化するとしたらこういう表現ができる。

『2000の人は1600の人に11回やれば10回勝てる』

こういう言い方なら知らないゲームだとしても強さの比較がしやすいよね。
例にあげたレート400差はWikiにあった基準値なのでおそらくいろんなゲームで自由に変えてるんだと思う。
こんな風にレートの比較したときにある程度勝率と一致するように工夫がされているんだ。
より詳しく知りたい人はググったら簡単に出てくるよ！数式アレルギーに注意！

# 勝敗でレートが上がったり下がったり
レート適正値になるには、対局ごとに数値が変動するわけだけど、
この時の変動値が、さっき話した勝率とレート値の関係に収束するために
小難しい数式に当てはめてごにょごにょやってるらしいよ！！
まぁ基本は近いレート同士で基準値、相手が上になるほど勝てば大きく上がって、下になるほど小さくなる。
負けた時はその逆；；

# 引き分けは0.5勝
引き分けた時は無効でもいいんだけど、ものすごく強い人に中級者が引き分けたらレートほしいよね。
そういう時は半分勝って半分負けたという体でレート変動してしまえばOK

# レーティング初期値
レーティング参入したばかりの人には何かしら初期値が与えられるよね。
日本オセロ連盟なら900スタートとかのように。
この数字の決定も平均的な数字を使った数式があるみたい。
だけど導入時に試行錯誤をある程度したのち最終的には固定化してるイメージ。
ずっと変動だとインフレ、デフレに流されちゃいそうだし。

# 最初から強い人いるよね。
ネットだけでやってた人が大会出てくる場合。
オセロでは通常通りの計算しかないけど、オセロクエストのように収束までは爆上がりとかあったり、
仮レートみたいな制度で通常の計算とは別の計算を導入してるところもあるみたい。

# 引退の考え
さて、長い歴史の競技であれば、ベテラン選手はやがていなくなってしまいます。
その時、レートはどうなる？
消滅するような仕組みがなければ残り続けるわけで。
でも上位陣がほとんど現役じゃなかったらレーティング的にはちょっと使いにくいよね。
そうなると引退したとみなされる選手は、レーティング表示から外すしかなくなる。

ここで抱える問題は、引退選手の抱え込んだレートによって残った現役選手間でのインフレやデフレが起こってしまうということ。
オセロクエストではそのサイクルが激しいのでその対策をやってるようだけど、リアルで調整入れるのも問題ありそうなので長年の課題になりそう。

# 数学好きにおすすめ
はじぽんではとてもじゃないけど数式の解説とかできるはずがないので、数学好きの皆さんはぜひELOレーティングをググってみたらいいんじゃないかな？
いうて高校生数学の内容に収まってると思うし（その範囲でもワイに厳しい…）

ってなわけで、ちょっとしたELOレーティングのうんちくでした！ではでは！バイバイ！！

# ちょぉぉぉぉっと待っったぁぁぁぁぁ！！！
え？なんや？
まだなんかあるん？

# 日本オセロ連盟公式レーティングについて
お、おう…せやな。
実はな。この記事書いてる途中に気が付いたんだがな…

＿人人人人人人人人人人人人人人人人人人人人人＿
＞　オセロ連盟は実はELOレーティングじゃない　＜
￣Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y￣

Oh...

# なんか疲れてない？
あのあの、見出しで会話してくるのやめてもらえませんか？
いや、まぁ、これまでの調べごとが無駄になったかなと焦ったけど、
ベースはELOレーティングの仕組みでそれをもっといい感じに改良してるっぽい。
なんとか分布とかわからんやつ続出してるけど。

# そろそろ本題

いや、自己紹介が適当すぎてアレだったんですけど、
私、日本オセロ連盟のシステムアドバイザーという役割を頂いておりまして、
これから公式レーティングを作り替えるプロジェクトを始めようとしてるんですわ。

そこで計算のコアである部分をよくわからないので調べたのがきっかけでこの記事書き始めたわけですが、
レーティング管理の前任の方の記事を読み進めるといろいろな努力の結晶であることが見えてきました。

岩田さんの記事：
http://othello-rating.blogspot.com/2015/12/blog-post_25.html

ここは軽めに書いていて、さらに記事中にリンクされている田中さんの記事（のアーカイブ）を読んでみると、
レーティングの始まり世代から改変の歴史まで、数式を交えて解説されているものがあります。

かいつまんでおくと、連盟レートでは下の表の勝率になるような調整がされているということですね。

|レート差|勝|負|
|--:|--:|--:|
|100|2|1|
|200|4|1|
|300|8|1|
|400|16|1|

もちろん、必ずこの勝率になるわけではないですよ！？
統計的な意味でこういう数字に収束するってことですね。

# そしてこれをプログラムにするわけですね
はい。ていうか現レーティングがしてくれてます。
ただ、その、コードがですね。非常に言いにくいのですが、、、読めません。
えっと、はい。玄人向けです。
https://github.com/szrdiwt/othello_rating/blob/master/rate_cal.pl

計算式もよくわからんし、コードも解読難しいけど、コードを地道に読み解くほうが自分にとっては早いだろうなぁというところですねぇ。

てなわけでグダグダ記事になってしまったけれども、
いかがでしたでしたか？（）

ではでは今度こそ！よかったらチャンネル登録（無い）
バイバーイ！