LightGBMによるAI競馬予想(準備編)

AI競馬

はじめに

この記事は「PC-KEIBA Database」のユーザー向けにLightGBMを使用した競馬予想について説明します。情報を過剰に詰め込むと理解が難しく感じられる可能性があるため、ここでは最低限必要な環境の準備と機械学習の基本に焦点を当てます。したがって、LightGBMや機械学習についての詳細な学習を望む方には、あまり適していないかもしれません。専門用語の使用は最小限に留めますが、理解できない用語が出てきた場合はググってください。

LightGBM」について詳しく知らない方は、この記事を楽しむ前にググってみることをオススメします。それにより、記事の内容をより楽しみながら読むことができるかもしれません。

AI競馬予想に最適な PC-KEIBA Database

この「AI競馬」のカテゴリでは、競馬予想をLightGBMを用いて行うためのPythonのソースコードを無料で提供しております。実は最初は有料会員限定にするつもりでしたが、Pythonのソースコードはネット上にたくさん存在しているため、それを有料にするメリットは少ないと判断し、無料で公開することにしました。

最初はLightGBMに関して「PC-KEIBA Database」と組み合わせて画面を作成するかどうかについて検討しました。しかし、Pythonのソースコードは比較的簡単に利用できる一方で、LightGBMのパラメータの組み合わせは無限に近いため、この形で公開することが一般的なユーザーに役立つと考えました。何よりも、学習データを作るのは「PC-KEIBA Database」が得意とする仕事なので。

ちなみに、Pythonを用いてスクレイピングやデータ編集など非効率で手間のかかる作業を行っているサイトをよく見かけますが、それは時間の無駄です。Pythonのライブラリを自作してるようなもんで、すでに存在するシステムを上手に活用すべきです。本当に時間がもったいない。

なぜなら、無料の「PC-KEIBA Database」を活用すれば、同じ作業が可能だからです。学習データの編集についても、PythonよりSQLを使用する方が確実に効率的です。

ということで「PC-KEIBA Database」と「LightGBM」でAI競馬予想する話を始めます。

Pythonのインストール

まず、バージョン3.x.xの「Python」をインストールします。「Python」は、データ分析や人工知能のシステム開発に非常に人気の高いプログラミング言語です。

開発環境を構築する必要はありません。ここではPythonのインストールだけでOKです。

インストール方法は、次のGoogleの検索結果からお使いのWindows 10、11に合った方法を参考にしてください。→Python インストール

Googleの検索結果、つまり最新の情報および分かりやすいサイトは時間と共に変化します。なので、ここにはあえて書きません。

ライブラリのインストール

次にLightGBMを使うために必要な、4つのライブラリをインストールします。

  1. pandas
  2. scikit-learn
  3. LightGBM
  4. Matplotlib

これらは定番かつPythonの機械学習には必須のライブラリです。特に勉強する必要もありませんが、それぞれの役割とか詳細はググってください。

Matplotlib」はどうしても必須じゃないですが、データをグラフ化できる便利なライブラリなので入れときましょう。当サイトで公開するPythonのソースコードでも使ってます。

pandas のインストール

「pandas」を例に、具体的なインストール方法を説明します。「pandas」とは、Pythonのライブラリであり、データ分析システムの開発をサポートする汎用のモジュール群です。バージョンについては、pipコマンドが適切なバージョンを自動的に選択してくれるため、特に気にする必要はありません。

PCモニターの下にあるWindowsの検索ボックスに「cmd」と入力します。※検索ボックスが無い場合は虫眼鏡のアイコンをクリック。

出てきた「コマンドプロンプト」をクリックして起動します。

そして次のコマンドを、コマンドプロンプトに入力します。

py -m pip install pandas

上記の文字(コマンド)をドラッグして、キーボードの「Ctrl」キーと「C」キーを同時に押せばコピーできます。コマンドプロンプトへの入力(貼り付け)は「Ctrl」キーと「V」キー。何のこっちゃ分からなければ直接手入力でもOK。

次の画像ような状態にできたらキーボードの「Enter」キーを押します。インストールが始まります。

しばらく待って、コマンドプロンプトを起ち上げたときの最初の文字(※このマニュアルの例では “C:\Users\user>”)が出てきたらインストール完了です。

その他のライブラリのインストール

インストールの手順は先ほどの「pandas」と同じです。コマンドが違う以外は全く同じです。コマンドプロンプトもそのまま使えばOKです。次のコマンドを、コマンドプロンプトで実行してください。

py -m pip install scikit-learn
py -m pip install lightgbm
py -m pip install matplotlib

場合によって少し時間がかかります。それぞれ、コマンドプロンプトの画面がコマンドを入力する直前と同じ状態になったら完了です。

たったこれだけでLightGBMによる競馬予想の環境が整いました。

Pythonの最新化

おまけでPythonを最新化するコマンドも書いときます。

python.exe -m pip install --upgrade pip

機械学習の知識

機械学習の話を進めていく上で、最低限知っておく必要がある単語を3つ説明します。

  1. 目的変数
  2. 説明変数
  3. 学習データ

目的変数

「目的変数」とは、予測したい項目および数値です。競馬予想の場合、着順とか単勝人気順、あるいは走破タイムとか。予想単勝オッズもアリですね。

目的変数は1つだけ決めます。

ちなみに、LightGBMは良い評価であるほど目的変数の数値が大きい想定で設計されてます。例えば「確定着順」を目的変数とする場合、1着は1番大きい数値に、最下位は1番小さい値にしてくれ、ということです。

説明変数

「説明変数」とは、目的変数に対して影響があるんじゃないか?と考えられる項目および数値です。競馬予想の場合、前走の着順とか単勝人気順とか。

説明変数は競馬予想の場合、複数にせざるを得ません。だって「タイム」とか「血統」とか、何か1つだけでレースの結果が決まるとかありえないでしょ?

数値化できない項目を説明変数にする方法とかはググってください。奥が深く、ここで説明するとややこしくなるんで。

学習データ

説明変数と目的変数のセットが「学習データ」です。競馬予想における学習データとは、過去のレース結果になります。

今は分からなくても、とりあえず読み進めてください。全体を読めば分かる、簡単な内容なので安心してください。

作業のおおまかな流れ

LightGBMで競馬予想するための、作業のおおまかな流れを説明します。

データの分析方法を決める

機械学習のやり方にも色々ありますが、ここでは競馬予想に使えそうな4つの分析方法を紹介します。分析方法の詳細はページを分けますので、次のリンクで移動してください。

  1. 二値分類(binary)
  2. 多クラス分類(multiclass)
  3. 回帰分析(regression)
  4. ランキング学習(lambdarank)

Pythonのソースコードは、それぞれのページで無料で公開してます。

学習データを作る

学習データを作るのは「SQL」を使えば楽勝。具体的なSQLは分析方法の各ページで公開してます。

SQLの実行結果をCSV形式でファイルに出力して「学習データ」にします。「A5:SQL Mk-2」は数値について、負の小数を勝手に指数表現(e)したり、整数を想定してる数値を勝手に小数にしたりとか、想定外の書式にされる場合がよくあるので学習データ作りには不便です。なので私は「pgAdmin」を使ってます。

ここでは学習データのサンプルとして、次の内容で作ってみます。上から説明変数、最後に目的変数です。

  • JRA-VANタイム型データマイニング
  • 馬体重
  • 1〜2走前 確定着順
  • 1〜2走前 4角順位
  • 1〜2走前 単勝人気順
  • 1〜2走前 後半3F順位
  • 1〜2走前 タイム差
  • 【目的変数】確定着順

目的変数はフラグとか相対値とか、データの分析方法によって「確定着順」を加工します。

今回のサンプルで使う学習データの集計期間は、JRA 2021年の1年分のみとします。

「馬体重」と「1〜2走前 後半3F順位」のデータは次のプロシージャを使います。

このサンプルを参考に同じ学習データを作りたい場合は、上記2つのプロシージャを実行して、先にテーブルにデータを用意してください。それ以外は「馬毎レース情報」テーブルから取れます。

「二値分類」用の学習データをExcelで開くとこんな感じです。

「二値分類」用の学習データ

LightGBMに学習させる

学習用ソースコードでCSVファイルの学習データをLightGBMに学習させます。この学習させた結果が機械学習の世界で「モデル」と呼ばれるやつです。

モデルを評価する

モデルを評価する方法として、

  • 学習した結果をグラフ化する。
  • PC-KEIBA Database」を使ってシミュレーションする。

などが挙げられます。モデルを評価する基準は分析方法によって様々です。評価を繰り返して良いモデル、つまり現実に近い予測が出来るまで、回収率および的中率が高いモデルが出来るまで修正を繰り返す。具体的には、

  • LightGBMパラメータをチューニングする。
  • 説明変数を変えてみる。

などです。

チューニングについては「LightGBMによるAI競馬予想(チューニング編)」の記事で解説しているので参考にして下さい。

予測(予想)させる

モデルが完成したら予測用ソースコードで予測させる、つまり明日のレースを予想させる。そして馬券を買う。

オリジナルAI競馬予想の作り方

この「AI競馬」の記事と「PC-KEIBA Database」が手元にあれば、必要なのはCSV形式の学習データだけです。自分が作成したSQLで機械学習する場合、その学習データを利用できます。この記事に含まれるPythonのソースコードは、ほぼそのまま使用可能です。SQLを書いて学習データを作成すればOKです。LightGBMパラメータを調整する場合にのみカスタマイズが必要です。

要するに、ここに記載されているのはすべて「サンプル」であることに留意し、最終的にはご自身のニーズに合わせてカスタマイズしてください、ということです。

最後に

当然のことながら、LightGBMによるAI競馬予想と機械学習に関する情報は、この記事に書いてあることが全てではありません。優れたモデルを構築するための評価基準や、LightGBMの専門的な技術に焦点を当てたリソース、また統計学の専門書などがありますので、それらを活用して学習を深めてください。そもそも、それを自分で追及するのが楽しいと思うんで。

チューニングについては「LightGBMによるAI競馬予想(チューニング編)」の記事で解説しているので参考にして下さい。

以上、「PC-KEIBA Database」で思う存分、AI競馬予想を楽しんでください!