競馬予想AIの構築方法とスクレイピングによるデータ収集

AIの進化により、競馬の予想方法は大きく変わりつつあります。  
従来の経験則や直感に頼るのではなく、AIや統計解析を利用し、より精度の高い予測を行うことが可能になっています。

しかし、AIツールの構築に必要なデータを集めるには非常に手間と時間が掛かります。  
競馬予想AIモデルの構築に必要なデータ量は、使用するアルゴリズムやモデルの複雑さによって異なりますが、最低でも数百レースの情報は必要となるでしょう。

そこで本記事では、競馬予想AIに必要なデータの種類を解説するとともに、Webスクレイピングによる効率的なデータの収集方法を紹介します。

## 競馬予想AIに必要なデータは？

競馬予想AIを構築するには、膨大なデータを収集し、それをもとに分析を行う必要があります。

例えば、競馬は単純な「速い馬を選ぶ」だけではなく、馬場体重、騎手、調教師、血統などさまざまな要素が複雑に絡み合って結果が決まります。  
逆に、勝敗に関係しない要素もあるでしょう。  
そのため、AIで高精度な予測を行うには、多角的なデータ分析が欠かせません。

ここでは、競馬予想AIに必要な主要データを紹介します。

### レース情報のデータ

競馬予想AIのデータとして、レース情報のデータは欠かせません。  
レース情報には、競馬場、レースの距離、天候、馬場状態などの要素が考えられます。  
これらのデータを収集し、統計的な分析を行うことで、特定の条件下での勝率や連対率の傾向を把握できます。

JRA公式サイトでは、1986年から遡って過去のレース結果を見ることが可能です。  
天候やダートの状態、コーナー通過順位なども収集することができます。

### 馬データ

出走馬のデータも重要な要素の一つです。  
血統、過去のレース成績、馬体重、レース場までの移動距離などのデータを詳細に分析することで、レースごとの適性や勝率の予測ができるかもしれません。

馬のデータもJRA公式サイトから取得が可能です。  
性齢、馬体重（増減込み）、両親の情報、生産牧場等の情報が掲載されています。

### 騎手・調教師データ

騎手や調教師のスキルも、勝敗を決める大きな要因となります。  
経験豊富な騎手はレースの流れを読む能力に長けており、適切なタイミングで仕掛けることで勝利を狙います。  
同様に、優秀な調教師は馬のコンディションを整え、ベストな状態でレースに臨ませることが可能です。

騎手・調教師のデータもJRA公式サイトで取得可能でした。  
調教師の勝率や連対率、3着内率まで記載されています。

### SNSデータ

競馬予想において、数値以外の情報にも目を向けるべきでしょう。  
SNSやネット掲示板では、活発に意見交換がされています。  
これらのデータを活用することで、プロの意見や大穴を狙うなど、異なる視点から分析を行うことが可能になります。

## Octoparseで競馬データをスクレイピングする

今回は、JRA公式サイトのデータソースをスクレイピングという手法を使って収集します。  
スクレイピングツールには、[Octoparse（オクトパス）](https://www.octoparse.jp/)を使いました。

Pythonによるスクレイピングも可能ですが、今回のようなケースはデータ量が多く、種類も多岐に渡ります。  
そのため、ノーコードで操作できるOctoparseの方が、より効率的にスクレイピングを行えます。

Octoparseを使ったスクレイピングの手順は以下のとおりです。

1. **対象のWebページを設定する**
2. **取得する項目を設定する**
3. **データ抽出を実行する**

それでは、実際に競馬に関するデータを収集してみましょう。

### ステップ1. 対象のWebページを設定する

Octoparseを起動して、ホーム画面の「新規作成＞カスタマイズタスク」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/ddde2c6a-f6ce-1f45-9b69-b66a949fb3de.png)

新規タスクの画面が表示されたら、URL入力を「手動で入力」、URLプレビューの枠内に以下のURLを貼り付けます。

https://jra.jp/datafile/seiseki/g1/arima/result/arima2019.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/205b9d78-57fe-1ad7-f46c-0c7abb148853.png)

URLの貼り付け後、「保存」をクリックします。

### ステップ2. 取得する項目を設定する

今回は着順、馬名、騎手、調教師などテーブルにあるデータを全部取得します。  
Octoparseの自動検出機能により、特別な操作不要でレース結果のテーブルが選択されました。

データのプレビュー画面も下部で確認できます。  
また、行・列で不要なデータを削除してカスタマイズも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/8cd2f010-21c1-d316-b6fe-c8328e018558.png)

もし、自動検出が意図するテーブルでない場合は、検出結果を切り替えることもできます。  
画面右の「検出結果を切り替える（1 / 5）」をクリックすると、他のテーブルが参照されます。  
それでも満足できない場合は、手動による選択も可能です。

データ選択後、「ワークフローを生成」から「実行」をクリックします。

### ステップ3. データを取得・閲覧する

「実行」をクリック後、Octoparseがデータの収集を開始します。  
今回は2分40秒でデータを取得できました。  
取得時間の遅延はツールのスクレイピング対策によるものです。詳しくは[コチラ](https://www.octoparse.jp/blog/scrape-websites-without-being-blocked)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/cb5909f4-b7b4-e14c-f0d5-d5ad3ecfd5d5.png)

データをエクスポートすると以下のようにデータが抽出されています。  
エクスポートはExcel、CSV、HTML、JSON、その他データベースなど柔軟に選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/321466cd-a817-5495-e729-725da84dda7f.png)

Excelで出力した結果が以下となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262932/e02fe9a7-2a4a-edff-b8ac-d332e431ec33.png)

## スクレイピングデータの活用方法

スクレイピングによって収集した競馬データは、そのままではAI予測できません。  
データの成形や統計手法の利用が必要です。  
最後に、収集したデータをExcelを活用した分析とAIモデルの考え方を解説します。

### Excelでデータ分析を行う

スクレイピングで取得した競馬データを活用するには、Excelを使った分析が有効です。  
Excelには、統計解析やデータ可視化のための関数が豊富に用意されており、簡単な操作でデータの傾向を把握できます。

例えば、`AVERAGE`関数 を用いて、馬の過去成績やオッズの平均を求めることで、特定の条件での成績を確認できます。  
また、`STDEV`関数 を用いることで、オッズのばらつきを測定し、投資効率の高い馬券の選定に役立てることができます。  
他にも、相関関係を計算する`CORREL`関数、グラフ機能なども活用可能です。

### 競馬予想AIモデルを作る

スクレイピングによって取得した競馬データを本格的に活用するには、AIモデルを構築し、機械学習を用いて勝率を予測する手法が有効です。データを学習させることで、レースの条件ごとにどの馬が有利かを統計的に判断することができます。

学習モデルには、ロジスティック回帰やランダムフォレスト、ディープラーニングなど様々な手法があります。
学習方法によって同じデータでも予想が変わるため、既に結果の出ているレースのデータで予想を繰り返し、より精度を高めていきましょう。

## まとめ

本記事では、競馬予想AIを作るために必要なデータの種類とスクレイピングを活用したデータ収集方法、そしてそのデータの分析と活用方法について解説しました。  
特に、Octoparseを使ったスクレイピングを活用することで、データの収集効率を大幅に向上させることができます。

さらに、AIモデルの性能を維持するためには、継続的なデータ更新が必要不可欠です。  
競走馬は2～3歳でデビューし、5歳～7歳で現役を引退します。そのため、過去のデータだけでは精度の高い予測は難しく、新たなレース結果を迅速に反映する仕組みが求められます。  
その点においても、Octoparseは定期実行や差分のみ取得可能であり、最新データを自動で更新することで、AIの学習モデルを常に最適な状態に保つことができます。

データを蓄積し、AIによる競馬予想の精度を向上させることで、従来の経験則や勘に頼る方法とは異なる、新しい競馬予想の形が見えてくるでしょう。  
スクレイピングとAIを活用し、より効率的で精度の高い競馬予想を実現してみてはいかがでしょうか。