競馬AI開発についての第4回です。
今回は予測に使用するデータの収集方法について記述します。
どこからデータを集めるか?
前回競馬AI開発にあたりどのようなデータを使用するべきか検討しましたが、その際にどこからデータを収集するかが重要です。
王道は、
の2パターン(もしくは両方を組み合わせ)ですね。
1は一般の競馬ファンでも手軽に利用することができます。
例えばTARGETで取得できるデータのうち、レースに関するデータは下図の通り、基本的な情報はもちろんのこと、各馬券の合計票数などJRA公式データならではの情報が手軽に入手できるのがポイントです。
ちなみに、少し前に某有名競馬AIの開発担当者とお話しする機会があり、

と伺ったら、

という回答でした。
2の場合は自分で専用のプログラムを作成する必要があるので手間がかかりますが、どのデータをどのように取得するかをすべて自分で決められるので非常にカスタマイズ性が高いです。
また、1の方法では実運用を考えたとき、
競馬開催日に毎回ソフトを手動で起動して、必要なデータを出力して、それをAIモデルに投入して、、、
というのが手間なので、2の方法により全自動でデータを取得できるようにプログラムを組むことも可能です。
まあソフトの操作自体を自動化することもできなくはないんですがちょっと大変です。
また、TARGETで取得できる元データ(JRA-VAN DataLab.)を自力で開発する手ももちろんありますが、データ仕様を把握してプログラムに起こすだけでそれなりに労力がかかるので、まずは手軽に取得できる方法で競馬AIを開発して、もっとたくさんデータが欲しい!精度を上げたい!自動化したい!となったら徐々にステップアップしていく形でいいかもしれません。
上記内容については他に参考になるサイトがたくさんある&後述のスクレイピングに関しては注意点がありますのでこちらではあまり詳しく記述しません。
私がデータ取得にあたり最初に参考にしたのは、おそらく競馬AI開発者なら99%目を通したであろう、stockedgeさんの記事です。
自分は現在、こちらの内容をベースにさまざまな方法でデータを調達するようにしています。
その他参考にしたサイト
- 第2回 競馬データベースを作ろう!(全体像)
- Chainerで競馬予想をしてみる
- 第3回 データ解析に必要な競馬データを集める
- netkeibaをスクレイピングして競馬データベースを作成【Python】
- 競馬のデータ分析をプログラミング(スクレイピング)でやってみたお話
- 競馬予想AIを作る
- データ収集から機械学習まで全て行って競馬の予測をしてみた
スクレイピングについて
スクレイピング(WEBサイトからHTMLを読み込み・解析してデータを収集すること)をする際は、WEBサイトの利用規約を確認し、サイトへ過度な負荷をかけない(プログラムに一定時間の待機命令を入れる)など配慮が必要です。
そのような実情があるのであまり大きな声では言えないのですが、個人的にはスクレイピングは是非チャレンジして欲しいです。
競馬以外でも活用できて、作業が自動化される(目に見えて分かる)ため、自分も最初の頃はなんとなく充実感があってモチベーションが上がりました(^ ^)
とはいっても大体の競馬AI開発者はいずれかのサイトでスクレイピングをしているとは思われますが。。。
参考にしたサイト
- Pythonでクローリング、スクレイピングする前に確認しておきたいこと
- Webスクレイビングの注意事項一覧
- データ収集を大幅に効率化する「スクレイビング」とは?手法やルール・注意点を解説!
- スクレイビングは違法?3つの法律問題と対応策を弁護士が5分で解説
- Pythonでスクレイビング(メモ3:スクレイピング実行)
- 競馬データ分析のためのpythonスクレイピング
まとめ
今回は、
・競馬AI開発に必要なデータの収集方法
について解説しました。
ここからいよいよデータ作成やモデル構築の作業といった競馬AI開発のキモとなる部分に入っていきます。
技術的な情報に関しても適宜別記事で紹介できればと思っています!