AIモデルの仕組み
V13 ルーター型 × V14 アンサンブル の2層構成。賭式ごとに最適なモデルで予想を出す技術詳細。
結論: 単勝・複勝はV14 アンサンブル(LightGBM × XGBoost × CatBoost)、3連単・3連複はV13 ルーター(賭式別専用モデル)で予想。Optuna でハイパーパラメータ自動チューニング、Isotonic でキャリブレーション。
2層構成の意図
単勝・複勝は艇の勝率を直接予測すれば良いシンプルな問題ですが、3連単・3連複は組み合わせ問題(6艇から3艇の順列=120通り)で、専用モデルで予測した方が精度が出ます。
そこで、賭式ごとに最適なモデルを組み合わせる「ルーター型」を採用しています。
V14: 単勝・複勝アンサンブル
V14 は単勝/複勝の確率を予測する複数モデルのアンサンブルです:
- LightGBM: Microsoft 製の勾配ブースティング。高速・高精度
- XGBoost: 老舗の勾配ブースティング
- CatBoost: Yandex 製、カテゴリ変数(場・選手・モーター)の扱いに強い
- Conditional Logit: 同一レース内6艇の選択確率を多項ロジットで定式化
- Benter market fusion: 市場オッズと予測確率の最適混合
特徴量(数百次元)
- 選手: 勝率、複勝率、平均ST、級別、コース別勝率
- 機材: モーター2連率、ボート2連率、モーター・ボート相性
- 展示: 展示タイム、スリット隊形、チルト
- 場: 水質、風向風速、波高、水温、気温
- 市場: 単勝オッズ、市場含意確率(market-implied probability)
- 履歴: 同一場・同一コースでの過去成績
- 当日: 当日の調子(先のレースの結果からの推定)
V13: 3連単・3連複ルーター
V13 は賭式別の専用モデルを「ルーター」が振り分ける構成:
tansho_v13.pkl: 単勝専用fukusho_v13.pkl: 複勝専用sanrenfuku_v13.pkl: 3連複専用sanrentan_v13.pkl: 3連単専用 (LambdaRank)combination_calibrator_*.pkl: 組み合わせ確率の補正race_selector_*.pkl: レースごとに「賭ける/見送る」を判断
Optuna ハイパーパラメータ自動チューニング
各モデルの学習率/木の深さ/正則化係数等を、Optuna のベイズ最適化で自動探索します。 手動チューニングと比べて、過学習を避けつつ高精度を実現できます。
Isotonic キャリブレーション
機械学習モデルが出す「30%」という予測確率は、実際には30%でないことが多い(過信 or 過小評価)。 Isotonic Regression で過去の的中率と突き合わせて補正し、「30%」=「実際に30%当たる」状態にします。
これによって、期待値計算(確率×オッズ)が正確になり、賭けるべき買い目の判定精度が上がります。
予測のタイミング(Phase1 / Phase2)
Phase1: 締切5分前
展示タイムを取り込んでモデル予測。期待値プラスの買い目を「賭けるべき推奨」として DB保存。
Phase2: 締切30秒前
オッズの最終確認。市場の動きで期待値がマイナスに転落した推奨は取り下げ、必要に応じて買い増し。
監視・改善ループ
- 毎日 STRICT hold-out で過去30日のROIを再計算
- ROI が基準(1.05)を切り続ければモデル再学習
- 新しい特徴量・新しいモデルを継続的に試す(A/B テスト)
- look-ahead bias の検査を全コミットで自動実行