全員と対戦しなくても順位を予想できるレーティングについて

みなさんこんにちは。
事情により急遽登場することになりました。
最近、ネットの対戦将棋にハマっている菊池です。

見知らぬ人と手軽に対局出来るネット将棋は、棋力アップの自主トレにもってこいです。 

とは言うものの、

先日は三間飛車にあっけなくやられ、たったの25手で投了。しばし呆然としてしまいました。清々しい程のやられっぷりに、駒落ち定跡からやり直そうと決心したことは言うまでもありません。

写真

さて、そんなネットの対戦将棋では、サービス利用者の中で自分がどれぐらいの順位なのか表示されるようになっています。全ユーザーと対局したわけでもないのに、順位が分かるのはどうしてなのか?どうやら、一部ユーザーとの対局結果を使って、全体の中での順位を計算で予想することができるようなのです。

さて、どうやって?

ということで、ざっと計算方法を調べてみましたので、さわりだけ紹介してみたいと思います。 

イロレーティング (Elo rating system)
レーティングで調べると、まっさきに出てくるのがこのイロレーティングです。
国際チェス連盟や将棋クラブ24などで採用されているそうなので、実績十分といったところでしょうか。計算方法も見た限りでは、実装できそうな雰囲気です。

グリコレーティング (Glicko/Glicko-2 rating system)
上記イロレーティングを改良した方法で、データの信頼度を表すパラメータが追加されています。元々Glickoという方法が公開されていましたが、さらに改良を加えたGlicko-2という方法が公開されています。どちらも計算方法はいくつかのステップを踏むようになっていて、イロレーティングよりも明らかに複雑です。
Wikipediaのページを見ていただくと解ると思いますが、この計算式を見る限り、数学から離れていると実装するのが大変そうですね。。。

などなど、上記二つが主な手法のようです。
 
これらを実際に使う場合、計算方法を自分でコードに落としてもいいですが、GithubGoogle Codeには参考になるコードが沢山ありました。なので、あの計算式に怯えることなく、自分の得意なコードの世界で理解することができると思います。
 
みんな、役に立ちそうなコードは公開しようね!

コードがあればなんとかなるので、僕は一部の対戦成績から、全体の中でのランキングをあれこれ予想してみたくなりました。 将棋、囲碁、チェス、オセロなどはもとより、相撲やプロレスのような格闘技なども計算してみたい。その結果はどう出るのか!?

こうやって、いろいろ予想できるのは面白いですね!
みなさんも機会があったら使ってみてはいかがでしょうか。

ではまた!