【テクニカル】イロレーティングからディープラーニングへ・事前知識
本ブログで提供しているイロレーティングは、良い感じの予想ができるのですが、いくつか不満点もあります。
- 予想精度: 70〜80%の実績値(【テクニカル】イロレーティング計算精度とK値の関係 - 女子卓球レーティング)がやや低い
- 下位の大会や予選で勝利を重ねるとレーティングが高くなりすぎる(全日本選手権終了記念・日本人選手は強くなったのか?イロレーティング推移で検証(2) - 女子卓球レーティングにおいて柴田選手がレーティング1位になったことがあることが判明)
- 相性が表せない、すなわち佐藤選手や橋本選手が中国選手には強いが日本トップには勝てないといった、単純な推移率(A<B & B<C => A<C)を満たさない関係が表せない
これらを改善する方策として、今流行りのディープラーニングを取り入れたいと考えます。しかし、私自身、ディープラーニングを実問題に適用してみることは初めてで、試行錯誤の経過を含めて、今後ご報告していこうと思います。
ひとくちにディープラーニングといっても、非常にたくさんのモデルがあり、どのモデルを適用すればよいかがポイントになります。いろいろ調べてみた結果、RNN、特にLSTMを適用してみることにしました。
略語 | 正式名称 | 概要 |
RNN | Recurrent Neural Network | 時系列を認識して過去の状態も参考にしながら予測することができるモデル |
LSTM | Long-short term model | 通常のRNNだと少し前のことは忘れてしまうが、LSTMはRNNの一方式で、結構前のことも覚えている |
幸い、Pythonのディープラーニング用ライブラリであるKerasに、LSTMも実装されており、簡単に使えるようです。
LSTMを機能させるには、時系列の数値の組(ベクトル)を学習データとして与えることが必要です。これにより、学習データ以降の時系列を予測することができます。
時系列としては、イロレーティングのために取得した試合データがある、2017年以降の月次を利用します。
各時系列の数値データをどうやって選ぶかは難しいです。そもそも、イロレーティングの不満点を解決するモデルを得るには、任意の選手同士の対戦成績を予測することが必要となります。よって、予測対象の約1000人のランキング選手のそれぞれの対戦成績である1000×1000=100万のデータ(該当月の対戦成績を勝率で表したもの)を採用します。対戦成績データについては、100万のうち有効対戦が月間で数百程度しかない、かなり疎なものになると思います。こういった疎な有効データにおいても、LSTMが効果あるのかは分かりません。
実対戦データに加えて、各選手のイロレーティングをもとにした予測勝率(こちらも100万通り)も追加します。もちろんイロレーティングが対戦成績と強い相関があるためですが、これを加えておくことで、実対戦データが疎である不具合を弱め、かつイロレーティングだけの予測を踏まえた改善予測を得る効果があると考えます。
とりま、いろいろ調べた形での事前知識として、上記のような方針を立てました。今後、これを少しずつ実践していきます。かなり狭いターゲットにしかウケない話ですが、ターゲットに刺さった人は、お楽しみにしてください。