メインコンテンツへスキップ
見出し画像

【競馬AI開発#22】目的変数を最適化する

    このシリーズでは、競馬予想AIを作ることを通して、機械学習・データサイエンスの勉強になるコンテンツの発信や、筆者が行った実験の共有などを行っていきます。

    ■今回やること
    今回は、競馬予想AIの「目的変数」に着目します。
    目的変数とは「機械学習モデルに予測させるターゲット」のことで、現状のモデルでは1着に入った馬を「1」、それ以外を「0」とラベル付けして二値分類を行っています。

    画像

    インプットするデータのイメージは上記のようになっていて、機械学習モデルは「馬ごとの過去成績」や「騎手の過去成績」など大量の特徴量(=予測材料)と目的変数の対応関係を学習します。
    今回は、この目的変数の設定を見直すことで、さらなる精度向上を目指していきます。

    ■動画(概要編)

    ソースコードは、下に進んでダウンロード・解凍すれば使うことができるので、適宜手元で参照・実行しながらお読みください。

    ■筆者のプロフィール
    東京大学大学院卒業後、データサイエンティストとしてWEBマーケティング調査会社でWEB上の消費者行動ログ分析などを経験。
    現在は、大手IT系事業会社で、転職サイトのレコメンドシステムの開発を行っています。

    定期購読をすると、今月更新される記事に加えて#1〜#4の記事が980円で全て読めるので、単品購入より圧倒的にお得です。

    ソースコードのダウンロード

    ■ディレクトリ構成概略

    .
    ├── common    ・・・スクレイピングなど、データ取得部分
    │   ├── data
    │   └── src
    ├── v3_0_7    ・・・旧バージョン
    │   ├── data
    │   └── src
    ├── v3_exp8   ・・・今回の実験バージョン
    │   ├── data
    │   └── src
    └── v3_1_0    ・・・今回作成する新バージョン
        ├── data
        └── src
            ├── main.ipynb              ・・・コードを実行するnotebook
            ├── create_population.py    ・・・学習母集団を作成する関数を定義
            ├── preprocessing.py        ・・・/common/rawdf/のデータを前処理する関数を定義
            ├── feature_engineering.py  ・・・機械学習モデルにインプットする特徴量を作成するクラスを定義(学習時)
            ├── feature_engineering_prediction.py ・・・機械学習モデルにインプットする特徴量を作成するクラスを定義(予測時)
            ├── config.yaml             ・・・学習に用いる特徴量一覧
            ├── config_odds_removed.yaml・・・学習に用いる特徴量一覧(オッズと人気を抜いたモデル)
            ├── train.py                ・・・学習処理を行うクラスを定義
            ├── evaluation.py           ・・・モデルの精度評価を行うクラスを定義
            └── prediction.py           ・・・予測処理を行う関数を定義

    ※転載・再配布はお控えください
    ※今回配布するソースコードには、
     ・v3_exp8/src/
     ・v3_1_0/src/
    が含まれているので、上記「ディレクトリ構成」の配置になるよう、前回までのソースコードにコピーしてください。また、前回までのv3_0_7/data/をv3_exp8/data/ にコピーすることでデータを再作成せずに使いまわすことができます。

    ■ソースコードの実行環境
    ・OS: Mac OS 14.2.1
    ・言語: Python 3.11.4
    ・エディタ: VSCode 1.95.3
    VSCodeやPythonのインストール方法については様々な記事で紹介されているので、適宜参照して設定してください。

    また、以下のライブラリを使用しています。

    beautifulsoup4==4.12.3
    lightgbm==4.5.0
    matplotlib==3.8.2
    numpy==2.1.0
    pandas==2.2.2
    PyYAML==6.0.1
    scikit_learn==1.4.0
    selenium==4.23.1
    tqdm==4.66.1
    webdriver_manager==4.0.2
     
     
    競馬予想AIを作ることを通して、機械学習・データサイエンスの勉強になるコンテンツの発信や、筆者が行った実験の共有などを行っていきます。

    あなたへのおすすめ