ボートレースAI開発日記⑫|公式データをそのまま学習に使わない理由

公式競走成績TXTを通常・特殊・保留に分けて扱う考え方を示すアイキャッチ ボートレースAI開発

第⑪回では、同着など通常と違う結果を、推測で通常処理へ通さない考え方を書きました。

前回の記事:結果を急いで確定させない理由|開発日記⑪

同じ考え方は、将来の学習・検証用データにも必要です。ボートレースAIを育てるには予想の材料になるデータが必要ですが、ファイルを読めることと、そのままAIへ入れてよいことは別です。

今回は、BOAT RACE公式の競走成績TXTを、安全に扱えるかを確かめた入力受入仕様v1をまとめます。

公式の競走成績TXTを確認しました

公式の日別競走成績ファイルには、レースの着順や展示情報などが固定桁のTXT形式で記録されています。

まずは、これまでに確認していた通常レースと比較しました。その結果、34レース・204艇について、展示情報と着順が既存データと一致しました。

通常レースについては、現在のデータ構造と入力としての互換性を確認できました。

通常ではない状態もあります

しかし、通常レースだけを見て「使える」と決めるのは危険です。

競走成績には、失格、欠場、展示情報の欠測など、通常の6艇がそろったレースとは違う状態があります。

今回の確認では、次の実例を調べました。

状態 確認した内容
失格 2024年11月20日・下関3Rで S0 と S2 の実例を確認
欠場 2021年7月20日・芦屋12Rの4号艇で、Web表示の「欠」に対応する K1 を確認
展示欠測 同じ欠場艇で、展示情報も通常艇と同じ形ではないことを確認

欠場艇の展示情報を数値で補ったり、失格を通常の着順として扱ったりすると、実際にはなかった条件を学習データへ入れてしまうことになります。

分からないものを無理に通さない

そこで、TXT入力受入仕様v1ではレースごとに次の3区分へ分けます。

区分 扱い
NORMAL 確認済みの通常状態。学習・検証の候補にする
KNOWN_SPECIAL 確認済みの失格・欠場・展示欠測など。通常レースとしては採用しない
HOLD 未知コード、欠測、不整合など。推測せず保留する

この方式は、fail-closedと呼んでいます。意味は単純で、「問題がなさそうだから通す」のではなく、「通常だと確認できたものだけを通す」ということです。

現時点では、NORMAL のみを採用候補にし、KNOWN_SPECIAL と HOLD はレース単位で除外します。未知の状態を救済したり、5艇だけで通常レースのように分析したりはしません。

これは正式Forwardの成績ではありません

今回の作業は、入力仕様の調査と受入設計です。

まだ行っていないことも明確です。

  • 正式Forwardへの組み込み
  • 本番DBへの一括取り込み
  • Forward Testの変更
  • 正式KPIへの反映
  • Phase 3への移行
  • 既存AIモデルの再学習

つまり、TXTが使えそうだと確認できたことは、AI予想の成績が上がったことを意味しません。正式ForwardのKPIとも混ぜません。

今回のまとめ

公式データは貴重ですが、形式が読めるだけでAIの入力にしてよいとは限りません。

今回固定した受入仕様v1では、通常・失格・欠場・展示欠測を分け、分からない状態は推測せず保留します。

少し遠回りに見えても、誤ったデータを一度学習へ入れてしまう方が、あとから直すのは大変です。今後も、正式運用の実績と研究開発の検証を分けながら、使えるデータを慎重に増やしていきます。

次回の記事:本番で動いている仕組みは、なぜすぐ更新しないのか|開発日記⑬

コメント

タイトルとURLをコピーしました