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

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

対局データの前処理

連盟対局データ

BTモデルが使えそうで、Rを使って解析もできそうなことがわかった。では解析に使う各対局の勝敗データはどこから取ってこようか。

ふつうに考えれば連盟がHPで公開している対局結果だろう。

月間対局結果|対局予定・結果、記録|日本将棋連盟

HP上に表形式で各対局の結果を月別に公開している。これはコピペしてExcelに貼り付けてそれをRに取り込めば、それほど大きな加工をしなくても使えそう。

ただ、いくつか問題がある。

  1. NHK杯銀河戦の結果が入っていない。これらの短時間棋戦の結果を解析に使わないと、短時間棋戦における強さの推定が難しくなってしまう。どこか別のデータソースを確保する必要がある。しかもこれらのテレビ棋戦の場合は放映日と対局日は違うので、できれば対局日の情報が欲しい。
  2. 新人王戦・加古川青流戦には奨励会三段が、また各棋戦にはアマチュアが参加しているが、原則これらの対局結果は取り除くことにする。

 

テレビ棋戦のデータ

NHK杯

NHK杯の結果も連盟で別ページにまとめられているが、放送日の記載こそあれ、対局日は不明。NHKもHPで公開しているが、状況は同じで連盟HPの方が使いやすい。

対局日の記載もあるデータソースは、Wikipedia。奇特な誰かが対局日もまとめてくれている。これを使おう。

第71回NHK杯テレビ将棋トーナメント - Wikipedia

ちなみに、NHK杯の予選の対局日程はどこにもかかれていない。結果だけなら連盟HPにあるので、これを使うかどうか…。

 

銀河戦

さて銀河戦。連盟HPはNHK杯と状況は同じ。銀河戦Wikipediaは対局結果がまとめられていない。囲碁将棋チャンネル棋譜データに対局日記載があるので、1局ずつ調べなくてはならない。。

将棋 - 銀河戦|囲碁・将棋チャンネルホームページ

ちなみに予選の結果は、連盟HPに他棋戦の結果と区別せずに記載されている。なぜNHK杯銀河戦で扱いが違う…。

 

アマ棋士データの使用

将来プロ棋士になるアマ棋士

連盟の対局データでは、奨励会三段の棋士は「三段」、アマ棋士は「アマ」と、それぞれ名前の末尾に記載されている。ただ、過去に「三段」あるいは「アマ」だった棋士がプロ棋士になるケースはある。「三段」「アマ」だから一律に対局データから取り除くという対応はしたくない。なので「三段」「アマ」表記は一旦取り外す。

 

棋士番号リストと引退棋士取り扱い

ではプロ棋士奨励会三段含むアマ棋士をどう区別するか。棋士番号リストを使う。これは連盟HPで公開されているものを使えばよい。

棋士番号順一覧|棋士データベース|日本将棋連盟

棋士番号は当然引退棋士にも与えられている。ある程度過去の対局まで遡ってデータとすることを考えると、今現在引退しているかどうかは全く重要ではない。むしろ区別する必要はない。

 

データ解析上の注意点

ただし、RでBTモデルを扱うBradleyTerry2パッケージの特性上、変数としての棋士はfactor化する必要があり、対局データを持たない棋士がこのfactor定義に紛れ込むと推定ができなくなることがわかった。棋士番号そのものをfactor化(as.factor(棋士番号))すると失敗する。

そこで、対局のあった棋士のリスト(先後の棋士リストをrow_bindしてdistinctする)と棋士番号のある棋士のリストをinner_mergeして、対局データがありかつプロ棋士である棋士に限ったfactor変数を作り、先後棋士のデータを作成したfactor変数で置き換えることで対処することにした。

 

女流棋士・女流棋戦

なお、女流棋戦の結果も連盟のデータには入っているが、女流棋士の結果を意図的に取り除く理由はないので、そのまま使おうと思う。強豪女流棋士は通常棋戦でも結果を残している(データが多くある)ので、棋士女流棋士を混ぜて解析を行っても全く問題はない。

ただし、女流棋士は諸事情により所属が分かれていたりフリーの棋士がいるので、リストが分散している。そこでここでもWikipediaに協力してもらうことにする。

将棋の女流棋士一覧 - Wikipedia

 

三段リーグデータの活用

なお将来的には奨励会三段リーグの結果も利用できるようにしようと思っているが、HPで公開されている三段リーグの結果表からは先後の区別が読み取れないという重大な欠点がある。

断片的に先後データが取得できる場合もあるが、対局も多いので手入力は面倒である。従ってデータを使うとしても先後データは欠測のままにする。

先後データをどう欠測処理するかはBTモデルへの理解が深まってから考えたいので、奨励会三段データの活用は、一回保留としたい。

 

これでBradleyTerry2パッケージを利用するBTモデル解析の準備は完了です!!