二者で行う勝負事には相性というものがあります。二者間の勝率の期待値は必ずしも両者の実力差のみに依って決まるものではなく、相性にも依存するというわけです。極端な場合には、「AはBに勝ち越し、BはCに勝ち越すが、AはCに負け越す」といったような実力だけでは説明できない“じゃんけん”のような状態が出現することもあります。

イロレーティングにおいては、相性という要素は考慮されていません。相性を調べるにはイロレーティングを超えた解析が必要になります。イロレーティングについては「イロレーティング 1:棋力ってなんだ?」「2:あなたのレートは……」の解説記事をご参照ください。

相性を考慮すると、AのBに対する勝率の期待値P(A, B)から計算されるレート差

\[dr(A, B) = 400 \log_{10}(\frac{P(A, B)}{1 - P(A, B)})\]

は、両者のレートR(A)、R(B)のレート差

\[dR(A, B) = R(A) - R(B)\]

とは異なっているはずです。その差

\[x(A, B) = dR(A, B) - dr(A, B)\]

を“相性によるレート補正”と定義しましょう。イロレーティングの立場から見ると、この相性による系統的なずれは系統誤差ということになります。

今回は、floodgate棋譜集(2012~2016年版)において、この“相性によるレート補正”の大きさがどの程度であるのかを見積もりたいと思います。

もし勝率の期待値や両者のレートが精確に分かっているのであれば、上の式をそのまま計算することで、補正値を精確に算出することができます。しかしながら、現実のfloodgate棋譜集においては勝率の期待値もレートもそれなりに大きな不確かさを有しており、補正値を精確に求めることはできません(※補正値の不確かさは、各々の不確かさの二乗和の平方根)。

そこで、今回、考えるのは、個々の補正値ではなく、補正値の分布のばらつきの大きさです。個々の補正値の不確かさが大きくても、全体の分布のばらつきについてなら、ある程度は精度良く見積もることができます。

一般的に分布のばらつきの大きさDの二乗は、

\[D^{2} = \sum_{a, b} w(a, b) [x(a, b)]^{2}\]

と書くことができます。ここで、aとbについての和はデータがある全ての組み合わせについての和です。また、重み関数w(a, b)は

\[\sum_{a, b} w(a, b) = 1\]

のように規格化されています。

もし重み関数が定数であるならば、Dは標準偏差に該当します。しかしながら、x(a, b)は、aとbの組み合わせ毎に異なる不確かさs(a, b)を有しているため、不確かさの大きなデータと小さなデータを対等に取り扱うことは合理的ではありません。

このような時、(古典的な)統計学では、Dの不確かさUを最小にするように重み関数を決定します(※詳細は記事の最後に付記)。結果的に、不確かさの大きなデータの重みは小さくなり、不確かさの小さなデータの重みは大きくなります。

実際に用いるデータは、30手以上の投了決着棋譜に限定し、それぞれの組み合わせにおいて30勝以上かつ30敗以上のデータのみを採用します。また、計算に使用するレートの数値は最尤法によるものです。具体的には「floodgate棋譜集レートの最尤法との比較一覧(2012~2016年版)」をご覧ください。

結果は以下の通りです。レート毎の分類は、各組合せの平均レートで行っています。

  • 全体:D±U = 33.2±1.4
  • レート2000~2500:D±U = 33.5±2.0
  • レート2500~3000:D±U = 31.3±2.2
  • レート3000~3500:D±U = 39.5±4.0

結果的に、相性によるレート補正値の分布のばらつきの大きさは大体33程度だということが分かります。また、レート3000以上に限定すると、やや不確かさは大きいですが、40程度に上昇しています。

(以下、加筆と修正[2017年2月16日])

さて、上記のように単純に不確かさUを最小化してしまうと、重み関数w(a, b)が補正値x(a, b)に依存してしまいます。これはあまり性質がよくないので、重み関数が補正値に依存しないように、重み関数内の補正値の二乗をDの二乗で置き換えるという方法も考えられます(※詳細は記事の最後に追記)。

そのように重み関数を定数化した時の結果は以下の通りです。

  • 全体:D±U = 47.3±1.6
  • レート2000~2500:D±U = 50.0±2.5
  • レート2500~3000:D±U = 43.1±2.5
  • レート3000~3500:D±U = 50.6±4.4

この方法においては、補正値の大きなずれに対する抑制がかからないため、ばらつきの大きさが大きめに出る傾向があり、全体でも50弱の数値になっています。また、不確かさを最小にした場合に比べて、当然ですが、不確かさも大きくなっています。

この2つの方法は、それぞれ別の量を測っていますので、どちらが正しいというわけではありません。ものすごく大雑把に捉えると、方法に依りますが、レート補正値の分布のばらつきの大きさは大体30~50程度であるということは言えるでしょう。

以上、今回は、floodgate棋譜集(2012~2016年版)における“相性によるレート補正”の分布のばらつきの大きさを統計学的に見積もりました。結果として、方法に依りますが、大体30~50程度という数値が得られました。

もし仮に分布が正規分布であるとするならば、ばらつきの大きさの2倍であるレート60~100以上の相性差となる相手は22人に1人となり、3倍のレート90~150以上の相性差となる相手は370人に1人となります。

この結果は、あくまでもfloodgateの参加者に限定されたものであり、また、floodgate棋譜集のレート推定における理論誤差を含んだものであるという点には注意が必要です。

-------------------

付記:重み関数の計算

補正値x(a, b)が不確かさs(a, b)を有するということは、補正値は平均x(a, b)、標準偏差s(a, b)の確率分布に従う確率的な量であると考えることができます。以下の計算では、この確率分布を正規分布であると仮定します(※元々、補正値は3つの量の和/差であるため、中心極限定理を鑑みると、この仮定はそんなには悪くはないはずです)。

確率的な期待値として、Dの二乗を書き直すと、

\[D^{2} = \sum_{a, b} w(a, b) < [X(a, b)]^{2} - [s(a, b)]^{2} >\]

となります。ここで、X(a, b)は補正値の確率変数を表し、アングルブラケットは期待値を表しています(※確率分布の重みを付けての積分)。実際に、期待値を計算してみると、

\[D^{2} = \sum_{a, b} w(a, b) [x(a, b)]^{2}\]

となっています。

Dの不確かさUの二乗は、Dの二乗の不確かさを

\[u^{2} = < [ \sum_{a, b} w(a, b) [ [X(a, b)]^{2} - [s(a, b)]^{2} - D^{2} ] ]^{2} >\]

とすると、

\[D + U \approx \sqrt{D^{2} + u^{2}} \approx D + \frac{u}{2 D}\]

ですので、

\[U^{2} = \frac{u^{2}}{4 D^{2}}\]

となり、この期待値を注意深く計算すると、

\[U^{2} = \frac{1}{2 D^{2}} \sum_{a, b} [w(a, b)]^{2} [s(a, b)]^{2} [ 2 [x(a, b)]^{2} + [s(a, b)]^{2} ]\]

となります。

これを、規格化条件の下、重み関数w(a, b)について最小化すると(※ラグランジュの未定乗数法)、

\[D^{2} = \sqrt{\frac{V(4)}{V(0)}}\]

が得られ、また、

\[U^{2} = \frac{1}{V(2) + \sqrt{V(0) V(4)}}\]

も得られます。ここで、

\[V(n) = \sum_{a, b} \frac{[x(a, b)]^{n}}{[s(a, b)]^{2} [ 2 [x(a, b)]^{2} + [s(a, b)]^{2} ]}\]

を導入しました。

この時、重み関数w(a, b)は、

\[w(a, b) = \frac{(1 - U^{2} V(2)) / V(0) + U^{2} [x(a, b)]^{2}}{[s(a, b)]^{2} [ 2 [x(a, b)]^{2} + [s(a, b)]^{2} ]}\]

となります。

-------------------

追記:重み関数の定数化(2017年2月16日)

重み関数が補正値に依存しないように、重み関数内の補正値の二乗をDの二乗で置き換えると、

\[w(a, b) = \frac{1}{v(0) [s(a, b)]^{2} [ 2 D^{2} + [s(a, b)]^{2} ]}\]

と書くことができます。ここで、

\[v(n) = \sum_{a, b} \frac{[x(a, b)]^{n}}{[s(a, b)]^{2} [ 2 D^{2} + [s(a, b)]^{2} ]}\]

です。

この重み関数を用いると、Dの大きさは、

\[D^{2} = \sum_{a, b} w(a, b) [x(a, b)]^{2} = \frac{v(2)}{v(0)}\]

をDについて解くことで求めることができます。

適当な最尤法を用いると、大体はこの方法に近くなります。