レーティング計算法

プレイヤーA,B,Cのレートを、未知数Ra,Rb,Rcと する。
AとBの対局でAが勝利する確率Pabは、
    Pab  =  1 / ( 1 + exp(k*(Rb-Ra)) )  
また、
    Pac / Pca = (Pab * Pbc) / (Pcb * Pba)
であると推定する。

プレイヤー A,B,C,…
対局 T1,T2,T3,…Tn
勝者 w1,w2,w3,…wn
敗者 l1,l2,l3,…ln
があったとして、このことが起こる確率、
    (1/(1+exp(k*(Rl1-Rw1))) * (1/(1+exp(k*(Rl2-Rw2))) * … * (1/(1+exp(k*(Rln-Rwn)))
を最大化するRa,Rb,Rc,…を求める。

参考

イ ロレーティング - Wikipedia
KGSについてのページ
Sensei's Library: KGSRating Math
碁のレーティングについて


元データ

Go4Go.net - Professional Game Collection
 2005/01/01から2008/03/29まで国内の主要棋戦は概ね最終予選からである。
Go News
 2007 年の三星杯・LG杯予選。

計算不能な分を除いて、473人7,710局となった。
計算対象 (日本棋士の名前がローマ字表記のものはこのデータを使用)

日本棋院の棋戦データ
概ね 2005/01/01以降。若干の漏れはある。
計算不能な分を除いて、740人18,475局となった。
計算対象

シンプルなモデル

プレイヤーA、BのレートをRa,Rbとしたとき、この二人の対局でAが勝利する確率Pは、
    P = 1 / ( 1 + exp( k * (Rb - Ra ) )

ここで、kは通常のELOレーティングでは定数が用いられ、単なるスケーリングである。
碁のレーティングの場合、ハンディに換算して捉えるとわかり易い。従って適切な数値にする必要がある。囲碁の神様がコミ無し碁を打てば、おそらく先番必勝 でk=+∞となる。逆にルールを覚えたばかりの人が打てば、kは0に近くなる。 KGSでは k=0.85 for 30k-5k, k=1.30 for 2d+としている。

今回の計算では k = 0.95 + ( Ra + Rb ) / 40 とした。kを定数とした場合の線形性が崩れ、多少収束が悪くなるがとくに問題ではないだろう。

レートの差1でコミ分程度と設定しているが、適度なスケーリングかどうかは、プロに手合割で打って貰わなければわからない。

計算結果−一般的なレーティングに準じたもの−。
日本棋士 全棋士
Top of this page