ランクシステムについて

Last-modified: 2013-08-30 (金) 03:55:19

概要

KGSのランクシステムは、対局者のランク差に対して期待勝率を設定し、その期待勝率と
過去の対局成績から統計的に棋力を推定するという方法をとっています。
これにより棋力の安定した二者間に適切なハンデを与えられると期待できます。
一方で急激な棋力の上昇に追随しにくいといった欠点も指摘されています。

期待勝率

ランク差に対する期待勝率は以下の式で求められます。
P=1/(1+exp(-k*ランク差))
この式をグラフにすると次図のようになります。
期待勝率
グラフからわかるように、ランク差が大きくなると勝率は1または0に近づいてゆき、
ある程度のランク差以降はほぼ1または0となります。

式中のkの値を変えることでグラフの勾配を変化させることが出来ます。
次のグラフは赤:kの値が小さい時、緑:kの値が大きい時のものです。
k値にによる期待勝率の変化
k値を大きくすると同ランク差でも勝率が高く(低く)なることがわかります。
KGSはこの値を変えることでランクシステムの調整を行うことが出来ます。
また対局者のランクによって使用するk値が変わります。高段者ほど大きなk値が使われています。
これは一般に高段者ほど1ランクの差が大きいと考えられているためです。
(例えば互い先で5割の成績を残している2者が2子局を打ったときの勝率を考えた時、
黒番の勝率は高段者の方が高くなるだろうということです。)

KGS Rating Mathによるとversion3.0では
30k~5kでk=0.85、2d以上でk=1.30が使われているようです。
この値を元に実際に計算した期待勝率の例を以下に示します。

ランク差   勝率
     30k-5k  2d+
0.0    50%   50%
0.5    60%   66%
1.0    70%   79%
1.5    78%   88%
2.0    85%   93%
2.5    89%   96%

ランクの計算

期待勝率を使うことによって、対局成績と対戦相手のランクから各ランクにおいてその対局成績が生じる確率が求められます。
例えば次のような対局成績があるとき(すべて互先とします)

相手12k8k10k9k11k
勝敗勝ち負け勝ち負け勝ち

自分のランクを10kと仮定するとこの組み合わせが生じる確率は
12kに勝つ確率 × 8kに負ける確率 × 10kに勝つ確率 × 9kに負ける確率 × 11kに勝つ確率
= 0.85 × 0.85 × 0.5 × 0.7 × 0.7 = 17.5%
となります。同様に9kと仮定した場合は
0.93 × 0.7 × 0.7 × 0.5 × 0.85 = 19.2%
です。
これを仮定ランクを変数として計算すると次のようなグラフが描けます。
仮定ランクの生じうる確率
このグラフから9.4kの可能性が最も高いと推定されます。

実際には、対局ごとに対局時期や相手のランクの信頼度といった要素で重み付けが行われています。

KGSのシステムはこの計算をすべてのユーザーに対し常時再計算し続けています。この反復によってランクの推定がより正確になっていきます。

ハンデによる補正

囲碁は置石やコミといった方法でハンデをつけて対局することが出来ますが、
KGSではランク計算時にこのハンデによる補正を考慮します。
具体的には両者のランク差からハンデに応じた値を引きます。

ところで、KGSでも世間一般と同様1ランク差を置石1子に換算していますが、
互先と定先の差が1子差という一般的な認識は正しくありません。
1ランク差を上手が最初に一回パスすることと考えるのならば、1子差は逆コミ5.5目であるべきです。
つまり次のようになります。
互先←0.5子→定先←1子→2子局←1子→3子局←1子→4子局
KGSのハンデ補正は次のようになっています。

ハンデコミ5.5コミ0.52子+コミ0.53子+コミ0.54子+コミ0.5
補正値00.51.52.53.5

また、これも一般に誤解されがちに感じますが、置石の数とランク差が線形の関係である保証はどこにもありません。
つまり、Aさん>Bさん>Cさんという棋力で、AとB、BとCがそれぞれ2子局で勝率5割の成績だとしてもAとCが4子で勝率5割になるとは限らないということです。
経験的に置石の数が小さいうちはあまり問題にはならないでしょうが、置石が増えてきた場合はわかりません。おそらくこの理由から、KGSではランク計算に使われる公式戦は6子局までとなっています。

信頼度

KGSのランクシステムには、あるユーザーについてランクの推定がどの程度正しいのかを示す「信頼度」というパラメーターが存在します。

例えばAさんとBさんの二人のランク推定グラフが次のようだとします。
ランクの信頼度
どちらも10kと推定されますが、BさんのグラフはAさんより緩やかで9kと10kの確率に余り差が無いことがわかります。Aさんが9.8k~10.2kなのに対しBさんは9.0k~11kといった感じでしょうか。
Aさんのほうがランクの正確性、つまり信頼度が高いということです。

一般にグラフのピークの幅が狭く鋭いほど信頼度は高くなります。

信頼度はランク計算時に対局の重み付けに使われます。信頼度の高い相手との対局は重要視されます。

信頼度が一定値より低くなるとランクに「?」が付きます。

対局時期による重み付け

正確なランクを推定するには対局データが多いほうがいいわけですが、しかし現在の棋力を推定するのに、有段者の3年前の2桁kだった頃の成績、とかに意味があるとは思えません。

KGSでは対局時期によって最近のものは重く、古いものは軽く重み付けを行っています。
また、成長中の級位者ともうあまり棋力の変化しない有段者では重みが軽くなっていくスピードが違います。30k~15kでは15日、1d以上では45日の半減期が設定されています。(半減期とは30~15kでは15日で重みが半分になり、さらに15日後の30日でもう半分の4分の1になる…ということです。)180日より古い対局は考慮されません。