たなかし@観る将×データ解析練習場

入院時の暇を利用して王位戦(木村王位×藤井棋聖)を観戦した2日間以来の観る将。データ解析の練習もかねて棋士の強さ解析を実施しながら、マニアックな角度からの観る将ライフを紹介。

勝敗予想モデル

勝敗確率と結果の分布:二項分布

棋士Aと棋士Bが一局交えた時の勝敗の確率はどう計算するか?

 

コインを投げたときに表が出る確率は1/2というところは異論無いところだろう。ただ、コインを2回投げた場合に表と裏が1回ずつ出るとは限らず、表が出る場合も裏が出る場合もある。

サイコロを投げたときに1が出る確率は1/6というところは異論ないところだろう。ただ、サイコロを6回投げた場合に1がちょうど1回出るとは限らず、1が1回も出ない場合もあれば、2回以上出る場合もある。

結果がYesかNoかいずれかである試行をn回行ったとき、Yesは0回出る時もあればn回出る場合もある。このYesの出方は「二項分布」に従う。

ja.wikipedia.org

例えばコインを2回投げる場合、表が出るパターンは0回、1回、2回の3通りあって、表がちょうど1回出る確率は2x(1/2)x(1/2)で50%、0回の確率は(1/2)x(1/2)で25%、2回出る確率も(1/2)x(1/2)で25%である。これらの確率をすべて足すと100%になる。

サイコロを6回投げた場合、1が出るパターンは0回、1回、・・・、6回の7通りある。ちょうど1回1が出る確率は6x(1/6)x(5/6)^5で約40%、1回も1が出ない確率は(5/6)^6で約33.5%である。ちなみに1が続けて6回出る確率は(1/6)^6で約0.002%とのこと。

 

棋士Aと棋士Bが一局交えました。棋士Aが勝ちました。では棋士Aの方が棋士Bより強いですね、とは必ずしもならない。

棋士Aと棋士Bの勝敗確率が本来1/2だったとしたら、1回の勝負で棋士Aが勝つ確率は50%である。仮にその状況で棋士Aが1局勝ったとして、それは確率50%で起こる事象が偶然起きたに過ぎない。ただ勝負を10局、20局と積み重ねていけば、棋士Aの勝つ確率は50%に近づいていくはずである。

math-note.xyz

 

勝敗予想のモデル化-レーティングの方法を応用する

もともと勝敗の確率を知りたいという話でこのブログはスタートしているので、重要なのは本来の勝敗確率をいかに知るか、である。

将棋のプロ棋戦はかなりの数行われているとはいえ、同じ相手と何局も指すのはタイトル戦ぐらいある。タイトル戦のデータだけでは多くの棋士の「戦闘力」を知ることができない。全棋戦のデータを使って、全棋士の「戦闘力」を推定したい。

なので、「モデル」が必要だ。

イロレーティングでは以下のようなモデルを用いて勝敗確率を算出する。

f:id:sdentyu:20220305193123p:plain

イロレーティング - Wikipediaより

WAB棋士Aが棋士Bに勝つ確率、RA、RBはそれぞれ棋士AとBのレーティングの値である。

イロレーティングではこれまでの戦績を一つずつ積み上げてレーティング値を計算しているが、棋戦データとこのモデル式を用いてレーティング値を一気に求めてしまおう、というのが今回のデータ解析のコンセプトになる。

正直うまくいくかはわからない。とりあえずプロ棋士のレーティングの平均値を1500とする条件を設定しないと、今世の中で使われているレーティング値と比較できるものにはならないはずだが(というか条件を設定しないと各棋士のレーティング値そのものも推定できないはずで)、とりあえずそんなに目標を高く設定するのはやめておこう。

 

というか、これ、うまくいくのだろうか。