予測モデルは未来の情報を一度でも見てしまうと、もっともらしい成績を簡単に作れてしまいます。競艇AIで重要なのは、値そのものだけでなく、その値をいつ取得できたかです。
データを役割ごとに分ける
| 区分 | 例 | 予測・候補選定での扱い |
|---|---|---|
| 発走前データ | 選手・モーター・ボート成績、枠番、展示情報 | 利用可能時刻を確認して特徴量候補にする |
| 締切前オッズ | T10・T5・T4の時点オッズ | 時刻と締切までの余裕を保存して候補判定に使う |
| 結果データ | 着順、決まり手 | 正解ラベル・評価専用 |
| 払戻データ | 公式払戻金 | 精算専用 |
| 確定オッズ | 締切後のオッズ | 特徴量・候補選定には使わない |
最終オッズは払戻の計算には正しい値です。しかし、締切前に買うかを決める材料ではありません。過去検証で確定オッズを使えば、実際には知りえない結果を先に見たことになります。
時系列で評価する
データはランダムに混ぜず、過去を学習、その後の期間を検証、さらに未来の未使用期間をテストにします。同じレースの6艇が異なる分割にまたがらないことも確認します。テスト結果を見てしきい値を変えるのではなく、検証期間で決めた条件を固定してテストします。
オッズは「何分前か」まで記録する
オッズには odds_timestamp、close_time、minutes_to_close を残します。T4と呼ぶデータでも、締切直前や締切後に取得していれば、実際の判断には使えません。時刻不明・情報不足・結合不整合なら候補を出さないことも、モデル精度と同じくらい大切な防波堤です。
次回は、この制約の中で勝率と市場オッズをどう組み合わせるかを説明します。
← 第1回:検証できる仕組みを作る · 第3回:勝率予測から候補出力まで →
本記事は個人開発・データ分析の記録です。舟券購入や利益を推奨・保証するものではありません。