見出し画像

競馬予想ファクターの優先順位|【無料】Pythonコード付き!

「競馬予想ファクターの優先順位」の要点

  1. "馬体重"系ファクターの重要度が常に最上位にあるため、馬券購入の際には必ず判断材料に入れよう

  2. ダートは芝に比べて疲労が蓄積しやすく、"休み明け何戦目か"はより重要なファクターである

  3. 古馬は年齢による疲労や体調の変化も顕著であるため、"レース間隔"は極めて重要なファクターである

  4. 近年、投票行動にSNSやメディアの影響を受けやすくなり、"人気"が必ずしも実力を反映しなくなってきている

  5. 「レース間隔が5週以上」&「馬体重増減が4kg以上増加」&「前走人気が6番人気以下」という、調整のうまくいった中穴が単勝回収率94.9%

■分析データ概要

  • 2015年から2024年の10年間

  • 新馬戦、障害戦および取消・除外馬は除く

  • オッズ50倍を超える馬は除く(傾向を安定させるため)

  • 目的変数

    • 単勝配当

  • ファクター(比較的定量化が容易なもの)

    • 斤量

    • 斤量体重比

    • 性別

      • 変換:牡馬:1、セン馬:0.5、牝馬:0

    • 馬体重

    • 馬体重増減

    • 間隔

    • 休み明け~戦目

    • 人気

    • 前走人気

    • 前走着順

      • 止、消、外など数値以外、19以上の異常値(削除)

    • 前走斤量

    • 前走脚質

      • 変換:逃げ:1、先行:2、中団:3、後方:4、マクリ:5、不明:-1(削除)

    • 変換以外はTarget出力値のまま使用

    • 欠損値は平均値で補完

競馬予想ファクターの優先順位検証

ファクターの重要度をランダムフォレストの寄与度を用いて定量的に評価していく。自分の主観やプロ予想家の経験も大事だが、客観性を持った判断はそれよりもはるかに重要である。

①競馬予想ファクター検証:全体の傾向

馬体重系ファクターが上位:今回のファクター群では馬体重の説明力が相対的に高いため、判断材料には必ずいれるべし。
斤量よりも斤量体重比の方が説明力が高い:斤量を見る際には馬体重に対する比率をより重視しよう。

②競馬予想ファクター検証:芝&ダートの傾向比較

芝の方が重要度が高いファクターは「前走着順」:芝はダートに比べて馬の能力がより顕著に表れるため、前走での結果が次走に直結しやすい。
ダートの方が重要度が高いファクターは「休み明け~戦目」:ダートは芝に比べて疲労が蓄積しやすく、休み明けのしっかりとした調教で体調を整えることが不可欠。

③競馬予想ファクター検証:若馬(2、3歳)&古馬(4歳以上)の傾向比較

若馬の方が重要度が高く絶対値も高いファクターは「馬体重」:若馬は成長期にあり、体重の増減がその成長を反映する。特に成長期の馬体重が適切に増加していると競走能力の向上を示す。
古馬の方が重要度が高く絶対値も高いファクターは「レース間隔」:古馬は年齢による疲労や体調の変化も顕著である。特にレース間隔が短いと、馬の体力が十分に回復せず若馬よりもパフォーマンスが低下しやすい。

④競馬予想ファクター検証:過去&直近の傾向比較

過去の方が重要度が高いファクターは「人気」:インターネット投票の普及により、競馬に新たに参入したファンの増加が影響している。人気の形成が過去の成績だけでなく、SNSやメディアの影響を受けやすくなり、人気が必ずしも実力を反映しないケースが増えた。
直近の方が重要度が高いファクターあまりない:しいてあげれば斤量だが、重要度の絶対値が小さい。直近でも人気以外はファクター効果に変化はないといえるだろう。

⑤競馬予想ファクター検証:組み合わせ

単勝回収率が最も高いファクターの組み合わせは「レース間隔が5週以上」&「馬体重増減が4kg以上増加」&「前走人気が6番人気以下」で94.9%:レース間隔をあけ体調が万全で、調教がうまくいって馬体重が増加し、ある程度以下の人気馬という、調整のうまくいった中穴が回収率が高い。
単勝回収率が最も低いファクターの組み合わせは「レース間隔が4週以下」&「前走着順3着以内」&「前走斤量55kg以下」で67.6%:前走軽い斤量で好走してレース間隔を詰めて出走した馬は、過剰人気を背負いかつ疲労が抜けておらずパフォーマンスが出づらい。

※クリックして拡大

    '斤量': 'Weight',
    '斤量体重比': 'Weight_Body_Ratio',
    '性別': 'Gender',
    '馬体重': 'Body_Weight',
    '馬体重増減': 'Body_Weight_Change',
    '間隔': 'Interval',
    '休み明け~戦目': 'After_Rest_Race',
    '人気': 'Popularity',
    '前走人気': 'Last_Popularity',
    '前走着順': 'Last_Place',
    '前走斤量': 'Last_Weight',
    '前走脚質': 'Last_Running_Style',
    '単勝配当': 'Payout'

ファクター名称対応表

「競馬予想ファクターの優先順位」の豆知識

知っておくと便利かつ競馬仲間と話すネタとしても面白い「競馬予想ファクターの優先順位」に関する豆知識をご紹介。

競馬ファクターの点数化データの作り方を教えてください

下記のPythonコード(Google Colabo環境)と分析データフォーマットを参考にしてください。

# 必要なライブラリをインストール
!pip install pandas openpyxl scikit-learn

# ライブラリのインポート
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Googleドライブをマウント
from google.colab import drive
drive.mount('/content/drive')

# ファイルパスを指定
file_path = '/content/drive/MyDrive/分析ファイル.xlsx'

# Excelファイルを読み込む
df = pd.read_excel(file_path, sheet_name='data')

# 指定された条件でデータをフィルタリング
filtered_df = df[(df['クラス名'] != '新馬') & (df['単勝オッズ'] <= 50)]

# 前走着順の不要なレコードを削除
exclude_values = ["外", "消", "止", "②", "19", "①", "④", "23", "③", "⑨"]
filtered_df = filtered_df[~filtered_df['前走着順'].isin(exclude_values)]

# 前走脚質が-1のレコードを削除
filtered_df = filtered_df[filtered_df['前走脚質'] != -1]

# 必要な列のみを選択
columns_needed = [
    '斤量', '斤量体重比', '性別', '馬体重', '馬体重増減', '間隔', '休み明け~戦目',
    '人気', '前走人気', '前走着順', '前走斤量', '前走脚質', '単勝配当'
]
filtered_df = filtered_df[columns_needed]

# 説明変数の欠損値を平均値で補完
X = filtered_df.drop(columns='単勝配当')
X = X.fillna(X.mean())  # 欠損値を平均で補完
y = filtered_df['単勝配当']

# データを訓練用とテスト用に分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# ランダムフォレストモデルの作成と学習
model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)

# 予測精度を確認(オプション)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"テストデータでのMSE: {mse}")

# 特徴量の重要度を取得し、表示
feature_importances = model.feature_importances_
importance_df = pd.DataFrame({'特徴量': X.columns, '重要度': feature_importances})
importance_df = importance_df.sort_values(by='重要度', ascending=False)

# 結果を表示
print("各説明変数の重要度(寄与度):")
print(importance_df)

下記のファイルパス、ファイル名を部分を自分の環境に合わせて修正してください。
# ファイルパスを指定
file_path = '/content/drive/MyDrive/分析ファイル.xlsx'

分析データフォーマット(※クリックして拡大)

競馬予想では何を重視するべきか?

能力:過去の戦績やタイムなど馬の基本的な実力を示すもの。上級クラスになるほど各馬の能力差は縮まるが、下級条件では能力差が大きく影響する。
環境:レース当日の馬場状態、天候、気温、風速などが含まれる。特にG1などの上級クラスでは、能力差が小さくなるため環境要因の重要性が増す。
調子:調教内容や馬体重の変化、直近のレース間隔などから当日の馬の状態を推測。
騎手の技量と相性:優秀な騎手は馬の能力を最大限に引き出し、レース展開を読んで適切な位置取りをする。また、特定の馬と相性の良い騎手もいる。
レース展開:「スローペース:前残り」「ハイペース:前崩れ」「ミドルペース」の3つの基本形があり、ペースや馬の脚質によって展開が変化する。
血統:特定の血統が特定の距離やコース条件に強いなどの傾向がある。ロードカナロア産駒は1600m以下の距離が得意、など。
過去のレース傾向:同じレースの過去の結果を分析することで、そのレースの特徴や傾向を把握できる。特に内外枠の有利不利などは顕著に傾向が出る。
競走馬の適性:馬場状態、距離、コース形状などに対する馬の適性。適性の高い条件下では馬の能力が最大限に発揮される。

競馬の枠順はどうやって決めますか?

競馬の枠順は、主に抽選によって決定される。具体的には、出馬投票締切後にコンピュータを用いて自動的に割り振られる。全ての枠順はランダムに決定され、人の手による恣意的な影響はない。

枠順の決定プロセス

  1. 出馬投票の締切: 各レースの出馬投票が締切られた後、出走馬が確定する。

  2. 抽選の実施: 確定した出走馬に対して、コンピュータによる抽選が行われる。この抽選によって、各馬に対する枠順が決定される。

  3. 枠順の発表: 抽選結果はレース前日の午前中に発表される。


この記事が気に入ったらサポートをしてみませんか?