0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第6回:買わない判断をアルゴリズムに落とす——“罠フィルター”開発記

Posted at

AIに予想を任せる上で、一番怖いのが「自分なら絶対買わない馬を本命にされること」。
実際、初期バージョンでは「展開不利+過剰人気+過去凡走」の馬が本命になっていて、「これ、罠すぎて買ったら負けるやつ…」となりました。

そこで私は“罠フィルター”と名付けた除外ロジックを作ることにしました。
感覚的に「これは消すべき」と思っていたパターンを、全部ルール化していく作業です。


💭まずは“買わない癖”を棚卸しした

手元の過去馬券記録やメモを見ながら、私が「買わない」と判断した理由を言語化。
例としてパターンはざっくりこんな感じです:

  • 外枠に入った1番人気の逃げ馬(展開的に不利)
  • テンが遅いのに中山1200を使ってくる差し馬(届かない確率高い)
  • 前走で好走して人気上昇、でも時計的には特に優れていない馬(内容より印象で買われてる)
  • 馬体重がマイナス10キロ以上で、直近に強い負荷調教をしている馬(データ的に消耗が強い)
  • 脚質的に偏ってるレースで、唯一の“展開不向き”な馬(典型的に沈む)
  • 長距離の川田
  • ダートのルメール
  • 差しの三浦武史

こういうパターンを全部“スコア”にして、規定値を超えたら自動除外する仕組みにしました。


🧠Pythonで書いた罠フィルター(抜粋)

def is_trap(horse):
    # 外枠+逃げ脚質+過剰人気
    if horse.draw >= 14 and horse.style == "逃げ" and horse.popularity <= 2:
        return True
    # 馬体重急減+過負荷調教
    if horse.weight_change <= -10 and horse.last_training_type == "強負荷":
        return True
    # 展開ズレの差し馬(中山1200/小倉芝1200など)
    if horse.course in ["中山1200", "小倉1200"] and horse.style == "差し" and horse.draw >= 12:
        return True
    # 騎手がテン乗り&過去騎乗経験なし
    if horse.jockey_experience == 0 and horse.trainer_confidence == "低め":
        return True
    return False

この関数を馬ごとに適用して、“True”の馬は予想候補から自動的に除外されます。
正直、ここが一番“自分の予想スタンス”を詰め込んだ部分でした。


🔢“罠の度合い”をスコアで管理する構成へ進化

単純なTrue/Falseだけだと精度が粗いので、今は罠要素ごとにポイントを振って、総合スコアで判定しています。
例としては下記です。

要素 条件 スコア
外枠+逃げ 14番枠以上かつ逃げ +30
馬体重急減 −10kg以上 +25
騎手乗り替わり テン乗りかつ経験なし +20
過剰人気 単勝3倍未満で根拠薄 +15
調教過信 美浦の軽め調教で“絶好”表示 +10

合計スコアが60以上になると、「罠警告」を表示し、本命候補から除外。
これをUI側にも連携させて、「この馬、罠スコアが高いです」と人間にも説明できるようにしています。


📊表示例(UI側)

  • 【罠判定】 11番 モズフレンド(罠スコア:65)
    • 外枠+逃げ(+30)
    • 騎手テン乗り(+20)
    • 馬体重−12kg(+15)
      ⇒ 本命候補から除外

この表示があることで、私も「AIがちゃんと私の感覚を反映してるな」と納得できるようになりました。


🤝今後の追加予定

罠フィルターは完成形ではなく、まだ進化中です。今後追加したい項目:

  • ローカルコースでの騎手別信頼度(小倉・福島などでの成績分布)
  • 人気順の変動(発売直前に急落した馬)
  • 厩舎別“勝負仕上げ”パターン(過去の勝負設定と似てる週)
  • パドック/返し馬の様子(視覚情報は難しいが、Netkeibaコメントで補完予定)

これらを加えることで、“買わない理由を定義するAI”として、さらに私好みに育てていく予定です。


次回:第7回「予想ロジックをどう組み立てたか:買う理由と絞り方」

次回は“買う側”の視点。
罠フィルターで候補を絞ったあと、「どの馬を中心に据えるか」をどう決めているのか。そのアルゴリズム設計とスコアリング、さらに買い目までどう落とし込んでいるかを整理します📘🎯🐎
予想は、自分の買わない癖を守ったうえで買う。その選び方を、次回は深掘りします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?