副業 競馬

競馬予想AIを自作してみた体験記 ― スクレイピングからモデル構築までの奮闘と次なる課題

はじめに

こんにちは、ライターのmikazukiです。今回は「自分の競馬予想ファクターをプログラミングで再現し、AIで勝負したい!」という想いから始めた自作競馬予想AI開発の奮闘記をまとめます。完成までは一筋縄ではいきませんでしたが、得られた気づきや次の改善ポイントを共有します。

きっかけとゴール設定

  • 目的:手元にある“勝ちパターン”をコード化し、安定して活用できるAIモデルを作ること。

  • ゴール:過去データから学習し、指定レースの着順・回収率を予測できる仕組みを持つこと。

ステップ1 データ収集:HTMLスクレイピング

  1. ChatGPTで骨格生成
    ChatGPTに依頼し、レース結果ページを対象にしたPythonスクレイピングスクリプトを作成。

  2. HTML→CSV変換の自動化

    • BeautifulSoupで必要要素を抽出

    • pandasで整形しCSVへ出力
      ここまでで「使える学習データ」が揃いました。

ステップ2 特徴量エンジニアリング

  • 馬番、斤量、人気、前走タイム差、上がり3Fなど、自分の“勝てる”と感じてきた指標を抽出。

  • 欠損補完やカテゴリ変数のエンコードを行い、LightGBMで扱いやすい形に整えました。

ステップ3 学習モデルの構築

  • 分類:着順上位に入る確率

  • 回帰:期待回収率

  • モデルはLightGBMを採用し、交差検証でパラメータを最適化。正直、最初は精度が伸び悩みましたが、「過去5走だけでなくコース別成績を追加する」などで改善が見られました。

ステップ4 予測システムの実装

  • 予想したいレースIDを入力すると、

    1. 出馬表ページをスクレイピング

    2. ステップ2と同じ前処理で特徴量を生成

    3. 事前に学習したモデルでスコアを算出

  • 出力は◎○▲×の推奨度付き。ひとまず全フローは自動化できました。

現時点の成果と課題

  • 成果:スクレイピング→前処理→学習→予測までがワンストップで動く“β版”を完成。

  • 課題:的中率・回収率ともに実戦投入レベルには未達。

    • 特徴量の追加(調教時計、展開要素など)

    • ハイパーパラメータのさらなる最適化

    • 本番環境での高速実行&ブロック回避対策

まとめと次回予告

自作競馬予想AIの第一歩は「動くもの」を完成させることでした。今回、その目標は達成でき、開発フローも固まりました。次回は 精度向上のための改良ポイント を掘り下げ、実戦で利益を出せるレベルへ持っていく過程をレポートします。どうぞご期待ください!

-副業, 競馬
-, , , , , , , , ,

S