AI学習・予測
過去の地方競馬のレース結果からAI(LightGBM)に学習させ、指定した開催日の各馬の着順ランクや1着確率などを予測する画面です。作った予測と学習の設定は、サーバへ公開して一般ユーザーに配ります。この画面を開いて学習・公開ができるのは管理者だけです。一般ユーザーは学習をせず、管理者が公開したAI予想を受け取って使います。
一般ユーザーの方へ(AI予想を受け取る)
一般ユーザーのメイン画面では、このボタンは AI予想を受け取る という名前で表示されます。押しても学習画面は開かず、次のことだけを行います。
- メイン画面の[AI予想を受け取る]を押す
番組表で表示している開催日のAI予想(予測と診断)を、サーバから受け取ります。
- 番組表に反映される
受け取れると番組表が読み直され、「〇〇 のAI予想を受け取りました。(予測 〇頭/診断 〇レース 作成日時)」と知らされます。
- 受け取れなかったとき
まだ公開されていないときは「まだ公開されていないか、受け取れませんでした」と表示されます。しばらくしてからもう一度押してください。公開されていても、その日の番組データがまだ取り込まれていないと書き込む先が無いため、その旨が表示されます。最新情報取得 で番組データを取り込んでから、もう一度受け取ってください。
ふだんは、番組表を開いたときや 最新情報取得 のときにも自動で受け取ります(詳しくはAI予想を受け取る)。また一般ユーザーのソフトは、起動のたびに管理者が決めた学習の推奨設定(特徴量・目的変数・実行設定・除外レース・判定設定・AI印の買目)もサーバから受け取ります。回線がつながらないときは、手元の設定のまま起動します。
管理者がその日の予測をサーバから取り下げたときは、すでに受け取っていた一般ユーザーの手元でも、次に受け取ろうとしたときにその日の予測と診断が消えます。
管理者かどうかは、サーバに登録された利用者情報で決まります。この画面は開くたびにサーバの利用者情報を取り直すので、登録が変われば起動し直さなくても反映されます。なお、管理者のソフトも番組表では公開済みのAI予想を受け取って表示します。以下は管理者向けの説明です。
画面の開き方(管理者)
- 番組表で開催日を選ぶ
予測したい開催日の番組表を表示しておきます。画面を開くと、その開催日が「予測する開催日」に入ります(前回の日付は使いません)。
- ボタンを押す
メイン画面上部の AI学習・予測 を押します。
- 閉じると番組表に反映
画面を閉じると番組表が読み直され、予測と診断が反映されます。
画面の見方
番号にマウスを合わせると、画面上の場所が赤枠で示されます。番号を押すと、下の説明へ移ります。写真を押すと拡大します。
写真は管理者の画面の例です。件数・日付・数字は、お使いのパソコンのデータによって変わります。
- 1DBの蓄積状況
手元のデータベースにたまっているレースの数を、年ごとと合計で示します。見出しにはデータの期間と出走の件数も出ます。
- 2予測する開催日
予測を作る開催日です。開くたびに、番組表で表示している開催日が入ります。カレンダーの印を押すと日付を選べます。
- 3学習期間
何か月ぶんの過去データで学習するかを指定します。学習の終わりは必ず「予測する開催日の前日」です。
- 4期間で検証する/期間検証2
過去の期間について予測と診断を作り直すための設定です。
- 5学習回数・早期打切り・学習率・葉の数
AI(LightGBM)の学習のしかたです。
- 6学習プログラム
学習に使うプログラムの名前と、更新日時・大きさです。見つからないときは「【見つかりません】」と赤で出ます。
- 7特徴量(4つのボタン)
学習に使う項目を区分ごとに選びます。横の件数は、いま選ばれている項目の数です(0件は赤)。
- 8実行する目的変数・除外レース
AIに何を予測させるかを選びます。「→ AI_…」は予測結果の書き込み先です。「除外レース」の行には、AI除外レースの条件の件数が出ます。
- 9設定と操作
推奨の特徴量、AI除外レース、判定設定、AI印の買目、サーバの予測の削除のボタンです。
- 10ログ
学習・予測・公開の進み具合が流れます。学習中はログ欄の右側に動画が流れます(ソフトに動画が入っているとき)。
- 11下のボタン
学習の実行・中止、サーバとのやり取り、ホームページの表示、画面を閉じるボタンです。
DBの蓄積状況の列
| 列 | 意味 |
|---|---|
| 年 | 集計の年です。いちばん上の行が「合計」です(年が多いときは表をスクロールします)。 |
| 開催日 | データがある開催日の数です。 |
| レース | データがあるレースの数です。 |
| 中止 | 中止になったレースの数です。 |
| 結果なし | 結果(1着の馬)がまだ入っていないレースの数です。 |
| 確定 | 1着の馬が入っている(結果が確定した)レースの数です。 |
| AI除外 | 確定したレースのうち、AI除外レースの印が付いているレースの数です。 |
| 学習に使う | 確定したレースからAI除外を引いた数です(緑)。実際に使うのは、このうち学習期間のぶんだけです。 |
数えるのは画面の裏で行うので、開いた直後は「集計しています・・・」と出ます。学習が終わると数え直されます。
実行設定
予測する開催日・学習期間
| 項目 | 説明 |
|---|---|
| 予測する開催日 | 予測を作る日です。画面を開くたびに番組表の開催日が入ります。 |
| 学習期間(過去〇か月) | 「予測する開催日の前日」までの何か月ぶんで学習するかです。ソフトの初期値は12か月です。予測する日そのものを学習に入れると、答えを見てから予測することになるため、前日までで区切ります。 |
期間で検証する・期間検証2
| 項目 | 説明 |
|---|---|
| 期間で検証する | チェックすると「検証の開始日」「検証の終了日」が入力できるようになります。開始日の前日までで1回学習し、その内容で期間ぶんを予測して、AI診断まで作ります。実行すると「予測する開催日」は検証の開始日に置きかわります。 |
| 検証の開始日/終了日 | 検証する期間です。初めは「予測する開催日の1か月前〜前日」です。開始日が終了日より後のときは、知らせが出て実行しません。 |
| 期間検証2(〇日ごとに学習し直す) | 「期間で検証する」にチェックしたときだけ選べます。検証期間を指定した日数ずつに区切り、区切りごとに「その前日までの過去〇か月」で学習し直してから予測します(初期値は7日ごと)。開催の無い区切りは飛ばします。時間がかかります。 |
検証が終わると、その期間ぶんの予測と診断をサーバへ公開するかどうかを尋ねられます(過去の開催日のAI予想を上げ直すときに使います)。
学習のしかた
| 項目 | ソフトの初期値 | 説明 |
|---|---|---|
| 学習回数 | 2000回 | 学習をくり返す回数の上限です。 |
| 早期打切り | 50回 | この回数続けて良くならなければ、学習回数の途中でも打ち切ります。 |
| 学習率 | 0.050 | 1回の学習でどれだけ大きく直すかです。 |
| 葉の数 | 31 | AI(決定木)1本あたりの枝分かれの細かさです。 |
| 学習プログラム | - | 学習に使うプログラム(train_chihokeiba_model.exe)の更新日時と大きさです。 |
学習プログラムは、ソフトと一緒にインストールされる地方競馬用の専用プログラムです(LightGBM を使った Python のプログラムを1つの exe にまとめたもの)。ソフトがこれを呼び出して学習と予測を行います。過去走・騎手・調教師の成績などの「計算で作る特徴量」も、このプログラムが組み立てます。帯広(ばんえい競馬)のレースは、ほかの競馬場とまったく性質が違うため、学習にも予測にも使いません。
特徴量
AIが学習に使う項目(特徴量)を、次の4つの区分ごとに選びます。選んだ特徴量は、下の4つの目的変数すべてで共通に使います。ボタンを押すと「特徴量の選択」画面が開きます。
| ボタン | 選ぶもの |
|---|---|
| レース情報(数値) | レース単位の数値の項目(レース番号・距離・出走頭数など) |
| レース情報(カテゴリ) | レース単位の分類の項目(競馬場・トラックなど) |
| 出走馬(数値・計算) | 馬ごとの数値の項目(馬番・馬齢・斤量と、計算で作る過去走・騎手・調教師の成績など) |
| カテゴリ | 馬ごとの分類の項目(性別など) |
選び方は特徴量の選択のページをご覧ください。
実行する目的変数
チェックしたものだけ学習・予測します。初めは4つともチェックされています。予測の結果は、出走表のデータの決まった欄(AI_ で始まる欄。無ければ自動で足されます)に書き込まれます。書き込み先の名前は変えられません。
| 目的変数 | 書き込み先 | AIが予測するもの |
|---|---|---|
| 着順ランク | AI_着順ランク | レースの中での各馬の着順の並び。順位のほかに元のスコアも残します(僅差か断然かが分かるように)。 |
| 1着確率 | AI_1着確率 | 各馬が1着になる見込み |
| 2連対確率 | AI_2連対確率 | 各馬が2着以内に入る見込み |
| 3連対確率 | AI_3連対確率 | 各馬が3着以内に入る見込み |
実行すると、予測する日(期間検証では検証期間)の、チェックした目的変数の古い予測値を先に消してから書き込みます(前の予測と混ざらないように)。
設定と操作のボタン
| ボタン | 説明 |
|---|---|
| 推奨の特徴量をまとめて設定 | 確認のあと、いまの特徴量の選択をすべて捨てて、4区分とも推奨の内容に置き換えます。学習期間も推奨の「過去12か月」にします。終わると区分ごとの件数が表示されます。 |
| AI除外レースの設定 | 学習とAI診断から外すレースの条件を決めます。詳しくはAIによる除外へ。 |
| 判定設定 | 買い(BUY)・見送り(SKIP)・ランクの境目などを決めます。閉じると、予測する開催日のAI診断を作り直し、ログに BUY/WATCH の数が出ます。詳しくは判定設定へ。 |
| AI印の買目 | AIの印(◎〇△×56)のどの組み合わせを単勝・馬単の買目にするかを決めます。詳しくはAI印の買目へ。 |
| サーバの予測を削除 | 「予測する開催日」のAI予測をサーバから消します。[はい]でソフト向けとホームページ用の両方、[いいえ]でホームページ用だけを消し、[キャンセル]でやめます。もう一度確認されてから消します。ホームページの開催日一覧からもその日が消えます。[はい]のときは、すでに受け取った一般ユーザーの手元の予測も、次にその日を開いたときに消えます。手元(このパソコン)の予測は消えないので、サーバへ公開 で戻せます。 |
下のボタン
| ボタン | 説明 |
|---|---|
| 学習して予測する | 学習と予測を始めます(流れは次の章)。実行中は押せません。 |
| 中止 | 実行中の処理を止めます。実行中だけ押せます(赤色)。 |
| サーバから受け取る | 確認のあと、サーバにある学習の設定(特徴量・目的変数・実行設定・除外レース・判定設定・AI印の買目)と、「予測する開催日」のAI予測と診断を受け取り、いまの内容を置き換えます。判定設定も変わるので、その日の診断を作り直します。受け取ったAI印の買目の点数(単勝・馬単)も表示されます。 |
| サーバへ公開 | 「予測する開催日」のAI予測と、学習の設定値(推奨設定)をサーバへ公開します。確認画面に公開する設定の中身が出ます。公開の前に、その日のAI診断を作り直します。「期間で検証する」にチェックがあるときは、検証期間のうち予測のある日をまとめて公開します。公開が済むと、ホームページのAI予想のページが開きます。 |
| ホームページを表示 | ホームページのAI予想のページを、「予測する開催日」を指定してブラウザで開きます(その日が無いときは、いちばん新しい日が出ます)。 |
| ホームページだけ公開 | ソフト向けの予測は送らず、ホームページ用のAI予想だけを送り直します。手元の診断結果をそのまま送り(診断は作り直しません)、ホームページには BUY 判定のレースだけが載ります。「期間で検証する」にチェックがあるときは、検証期間のうち予測のある日をまとめて送ります。公開後はAI予想のページが開きます。 |
| 閉じる | 画面を閉じます。実行中は押せません。 |
公開したものの行き先
- ソフト向け:その日の各馬の予測値と、AI診断(総合点・判定・ランク・印の並びなど)です。一般ユーザーは受け取った診断をそのまま表示し、自分のパソコンで診断を作り直すことはしません。オッズが動いても判定は公開したときのままです。
- ホームページ用:BUY 判定のレースだけを、詳細画面のAI診断タブと同じような内容で載せます。WATCH・SKIP は件数だけです。その日の BUY のレースがすべて終わるまでは、競馬場・レース番号などを伏せて載せます。公開のたびに直近の日も作り直し、結果が出たレースには的中と払戻が付きます。
- 推奨設定:特徴量・目的変数・実行設定・除外レース・判定設定・AI印の買目です。一般ユーザーは次に起動したときに受け取ります。
学習して予測する流れ
学習して予測する を押すと、次の順に進みます。進み具合はログに出ます。
- 入力の確認
開催日の形、検証期間の形と順番、目的変数が1つ以上選ばれているかを確かめます。足りないときは知らせが出て止まります。
- DBの蓄積状況と期間をログに出す
学習期間(と検証期間)がログに出ます。
- 除外レースの印を付け直す
学習期間から予測する日(検証期間の終わり)までのレースに、AI除外レースの条件で印を付け直します。印の付いたレースは学習に使わず、診断では見送りになります。
- 前回の予測を消す
予測する日の、今回実行する目的変数の古い予測値を消します。
- 目的変数ごとに学習・予測
チェックした目的変数ごとに学習プログラムを動かし、予測を書き込みます。特徴量が1つも選ばれていないときや、学習プログラムが見つからないときは、ログに出して飛ばします。
- (期間検証のとき)AI診断を作る
検証期間の日ごとにAI診断を作ります。
- 公開するかを尋ねる
終わると「この結果と、学習の設定値(推奨設定)をサーバへ公開しますか?」と尋ねられます。[はい]で公開、[いいえ]ならあとから サーバへ公開 で公開できます。
中止のしかた
実行中に 中止 を押すと、ログに「中止します・・・」と出て、動いている学習プログラムを止めます。
- 学習プログラムは、親と子の2つの動きで動いています。中止すると先に子(学習の本体)を止め、親が後片付けをして終わるのを待ちます。
- 5秒待っても終わらないときは、まとめて強制的に止めます。このときは Windows の一時フォルダに作業用のファイルが残ることがあります。
- 中止したときは、公開するかどうかは尋ねられません。
- 実行中に画面の[×]で閉じようとすると「学習中です。中止して閉じますか?」と尋ねられます。[OK]で中止して閉じます。
毎日の予測は、番組表でその日を表示してから画面を開き、学習して予測する → 終わったら公開、の順で行います。番組データを取り込む前の日は予測できないので、先に番組表を取り込んでおきます。設定を変えて試すときは、まず「期間で検証する」で過去の期間を予測し、「AI成績」画面で「常に単勝1番人気」とくらべてから公開すると安全です。
公開した学習の設定と予測は、すべての一般ユーザーに配られ、番組表の判定や自動運転の買目に影響します。公開の前に内容を確かめてください。AI除外レースの条件を変えたときは、学習して予測し直すと除外の印が付け直されます。AIの予測は結果を保証するものではありません。
