藤井四段のレーティングをベイズ推定してみた

藤井聡太四段が強すぎて,実際のレーティングがどれくらいなのか気になったのでベイズ的に計算してみた.

ベイズの定理から,

p(A|B) = \frac{p(A)p(B|A)}{\int p(A)p(B|A)\mathrm{d}A}

が成り立つ.
Aを藤井四段のレーティング,Bを2017年8月16日までの勝敗データとして,レーティングの分布p(A|B)を調べてみる.
これは,これまでの勝敗データから推定したときに,レーティングがどのあたりにありそうか,というのを確率密度で表現したものである.

ベイズの定理を用いるためには,事前分布 p(A)が必要である.
今回は簡単に0から5000の間の一様分布
 p(A) = \begin{cases}1/5000 & 0 \leq A \leq 5000\\ 0 & \mathrm{otherwise}\end{cases}
とする.すなわち,勝敗のデータがないときは,0から5000までのどこにあるかは全く予想できない,ということを仮定する.

また,尤度関数 p(B|A)については, i番目の対戦( i=1, \dots, N)に関する尤度関数
 p(B_i|A) = \begin{cases}\frac{1}{1+10^{(R_i-A)/400}}&(B_i=\mathrm{Win})\\\frac{1}{1+10^{(A-R_i)/400}}&(B_i=\mathrm{Lose})\end{cases}
を用いて,
 p(B|A) = \prod_{i}^{N} p(B_i|A)

と書ける*1.ただし, R_iは対戦相手のレーティングである.ここでは,http://kishi.a.la9.jp/2017R/1307.htmlの対戦当時の相手のレーティングを用いることにした.

これらを用いて計算した藤井四段のレーティングの分布 p(A|B)は次のようになる*2
f:id:kawa0616:20170816063350p:plain

また,累積分布関数は,次のようになる.
f:id:kawa0616:20170816063336p:plain

これらの結果から,藤井四段のレーティングは2030あたりである確率が最も高いことになる.
また,8/16現在レーティングが1900を超える棋士は存在しないが*3,藤井四段のレーティングが1900を超えている確率は93%ほどもあることがわかる.

結論としては,藤井四段めちゃくちゃ強い!
ただし,これは,イロレーティングの勝率の仮定が正しいときにしか当てはまらない推論であって,
この推論を他の棋士に適用したとき,実際のレーティングと整合する結果が出るのかは別途確認する必要があることに注意しておく*4

ちなみに,初戦から対局を重ねたときの(事後)確率密度関数の変化は次のようになる.
連勝中はレーティングが最大どの程度あるのか,見積もれないというのは直感に合っていて面白い.
f:id:kawa0616:20170816063624g:plain

*1:勝率の計算はElo rating system - Wikipediaを用いた.

*2:分母の積分は数値積分した

*3:棋士ランキング

*4:同様の推論を羽生三冠の直近39局でやってみたところ,レーティングが1847である確率が最も高くなった.8/16現在の羽生三冠のレーティングは1856なので,そこそこ妥当ではありそう.