「異常に高い ROI」は喜ぶ前に疑え

機械学習で競馬予想モデルを開発していると、ある瞬間に 異常に高い回収率 (ROI) が出ることがあります。本サイト開発初期にも、バックテストで「南関東 ROI 200%」が出て一瞬喜びました。

しかしこれ、ほぼ間違いなく データリーケージ。実運用したら ROI 60% に転落、という典型パターンです。「うまく行きすぎ」は喜ぶサインではなく、バグを疑うサイン でした。

データリーケージとは何か

データリーケージとは、機械学習モデルが 本来知り得ないはずの「未来情報」を学習データに混入 してしまうバグです。

例えば「過去のレース結果から勝率を予想」という設定で、誤って「このレースの着順情報」が特徴量に入っていたら、モデルは未来カンニングをしているだけ。バックテストでは異常に高い精度が出ますが、実運用では当然使えません。

実際に踏んだ罠

本サイトで踏んだリーケージの例:

  • 「人気」をそのまま特徴量に — 当日の確定人気はレース後にしか分からない
  • 「着差」の前 5 走平均 — 集計対象に当該レースが含まれていた
  • レース後の「上がり 3F」を予測特徴量に — 走った後のタイムなので予測時点では未知

リーケージの 3 大パターン

  1. 時間軸の漏れ未来のレース結果が過去の特徴量に混入
  2. ターゲットエンコーディングの自己参照「同レースの平均着順」のような集計に当該レース自身が含まれる
  3. ホールドアウト分割の誤りtrain と test で同じレースが両方に入る

検出方法 — Walk-Forward Validation

リーケージを検出する最も信頼できる方法は Walk-Forward Validation:

Walk-Forward Validation の流れ
1. データを時系列で分割
2. 古いデータで学習、新しいデータで予測
3. 「予測時点で知り得る情報だけ」で特徴量を再計算
4. 異常な ROI が出たら必ず特徴量を疑う

機械学習エンジニアの間で「too good to be true は too good to be true」(うますぎる結果は本当にうますぎる) という格言があります。バックテスト ROI 200% は喜びではなく、特徴量チェックの開始合図です。

まとめ

  • 異常に高い ROI は データリーケージのサイン
  • 原因は「未来情報の混入」
  • 本サイトでも初期に「人気」「着差集計」「上がり 3F」で踏んだ
  • 検出には Walk-Forward Validation が必須
  • 機械学習で勝つには、まず リーケージを徹底排除 が前提