機械学習(重回帰分析)を利用した競馬のタイム予測~少しルールを変更します~

数週間前から、こちらの記事にてご紹介した方法を用いて、競馬のタイム予測から着順を予測していましたが、これまでの予測結果をもとに、少し方法を変更しようと思います。

従来の方法についてはこちらの記事をご参照ください。

 

従来の方法では、ざっくりまとめると次のような方法で予測していました。

  • 各出走馬について過去レースからのデータをもとに予測タイムを算出する。
  • 全出走馬の予測タイムから着順を予測する。
  • 過去データについては基本的にはできるだけ多くの変数を利用する。
  • 予測の際に外挿値に該当する変数は除外して算出する。
  • 各出走馬の過去レースが5レース以上あるもののみを対象とする。(1等でもこれを満たさない場合には予測をしない)

 

こんな感じで予測タイムを算出していたのですが、これまで実際に予測した結果を見てみるといくつか気になる点が出てきたんですね。

  1. 外挿値として除外された変数が多すぎると予測タイムがとんでもなくずれる。
  2. 特に距離が外挿値として判断されたて除外された場合には予測タイムが大きくずれる。
  3. 変数の1つ「単勝オッズ」は値の範囲が広すぎる(時には数百になる)ので予測タイムとの相関性がかなり低い場合が多い。
  4. 変数の1つ「馬体重変化量」は相対的な値なため、タイムとの相関性が低い。
  5. 過去レースに途中棄権などがあるとデータが0となっていたため、予測データが大きくずれる。

パッと思いつくところでも5つあげられるのですが、全てにいきなり対応すると差がわからないので、とりあえずは一番クリティカルなところから攻めていこうと思います。

 

今回対応するは2と5です。

まず5については、こちらのレースで予測したデータを見ると、外挿値として除外されたデータがなかったにも関わらず、予測タイムが実際のタイムと大きく乖離してしまいました。

詳しく調査したところ、ある出走馬の過去レースデータの中に、途中棄権か出走取り消しなどの理由はわかりませんが、データがなく、タイムが0となっていることが判明しました。

これが原因でタイムの平均値が大きく引き下げられて予測タイムが大きくずれてしまいました。

完全に私のミスなので非常にお恥ずかしいのですが、今後は過去レースデータでタイムは0となっているデータは除外して予測していきます。

きちんと事前に除外していたつもりでしたが、うまくされていませんでした。反省。

今後は無効データはしっかり取り除いていきます。

 

2については、これまでの予測タイムを見ていて気づいたのですが、距離が外挿値として除外された場合には予測タイムが実際のタイムと大きく乖離しがちというものです。

当たり前のことなのですが、タイムと最も相関性が高いものが距離です。

相関性の高い変数がなくなってしまうと予測タイムの精度が一気に下がってしまいます。

 

また、距離とタイムの関係を見てみるときれいな比例関係になっていることがわかります。

当然なことなのですが(笑)

一応調査の結果は表示しておこうと思います。

2018年に日本で行われたレース結果を調べてみると、このようなにきれいな比例関係を示すグラフが得られました。

ちなみに距離とタイムの相関係数は0.980069です。

相関係数とは、ある2種類のデータがどれくらい相関しているかを示します。

-1〜1の間で示され、正の数であれば正の相関、負の数であれば負の相関を意味します。

数字の絶対値が大きければ大きいほど相関は強くなります。

距離とタイムの相関係数は0.980069ですから、ほとんど完璧な比例関係です。

 

このような場合には、タイムを予測する際に変数「距離」が外挿値であっても大きく予測タイムがずれることはないと考えられます。

理由は明白で、今まで予測したことがない距離が出てきても、比例関係となっていることはわかっているので、ある程度の精度で予測できることが保証されるからです。

したがいまして、今後の予測タイムの算出においては、変数「距離」に限っては外挿値と判断されても除外せずに予測タイムを算出します。

予測データの表には外挿値となった場合には距離も表示しますが除外はしません!

 

今回のルール修正では、以上の2点を修正して、引き続きタイムを予測していこうと思います。

新しい算出方法をしばらく試して、今回言及しなかった1、3、4を含めて、また新たな改善点が見つかれば、また1番クリティカルな問題点をあぶり出してプログラムを随時修正していこうと思います。

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。