目次[表示]
はじめに
こんにちは、ライターのmikazukiです。今回は「自分の競馬予想ファクターをプログラミングで再現し、AIで勝負したい!」という想いから始めた自作競馬予想AI開発の奮闘記をまとめます。完成までは一筋縄ではいきませんでしたが、得られた気づきや次の改善ポイントを共有します。
きっかけとゴール設定
-
目的:手元にある“勝ちパターン”をコード化し、安定して活用できるAIモデルを作ること。
-
ゴール:過去データから学習し、指定レースの着順・回収率を予測できる仕組みを持つこと。
ステップ1 データ収集:HTMLスクレイピング
-
ChatGPTで骨格生成
ChatGPTに依頼し、レース結果ページを対象にしたPythonスクレイピングスクリプトを作成。 -
HTML→CSV変換の自動化
-
BeautifulSoupで必要要素を抽出
-
pandasで整形しCSVへ出力
ここまでで「使える学習データ」が揃いました。
-
ステップ2 特徴量エンジニアリング
-
馬番、斤量、人気、前走タイム差、上がり3Fなど、自分の“勝てる”と感じてきた指標を抽出。
-
欠損補完やカテゴリ変数のエンコードを行い、LightGBMで扱いやすい形に整えました。
ステップ3 学習モデルの構築
-
分類:着順上位に入る確率
-
回帰:期待回収率
-
モデルはLightGBMを採用し、交差検証でパラメータを最適化。正直、最初は精度が伸び悩みましたが、「過去5走だけでなくコース別成績を追加する」などで改善が見られました。
ステップ4 予測システムの実装
-
予想したいレースIDを入力すると、
-
出馬表ページをスクレイピング
-
ステップ2と同じ前処理で特徴量を生成
-
事前に学習したモデルでスコアを算出
-
-
出力は◎○▲×の推奨度付き。ひとまず全フローは自動化できました。
現時点の成果と課題
-
成果:スクレイピング→前処理→学習→予測までがワンストップで動く“β版”を完成。
-
課題:的中率・回収率ともに実戦投入レベルには未達。
-
特徴量の追加(調教時計、展開要素など)
-
ハイパーパラメータのさらなる最適化
-
本番環境での高速実行&ブロック回避対策
-
まとめと次回予告
自作競馬予想AIの第一歩は「動くもの」を完成させることでした。今回、その目標は達成でき、開発フローも固まりました。次回は 精度向上のための改良ポイント を掘り下げ、実戦で利益を出せるレベルへ持っていく過程をレポートします。どうぞご期待ください!