機械学習について勉強し、自力で何がしかのモデル構築を試みる初学者が最初にトライするトピックが、競馬のレースデータ分析だろう。(超偏見)(しかもかなり古い)
「機械学習による予測モデル構築に費やす全体工数のうち、データ収集・整形に必要な工数は9割を占める」 と誰かが言っているが、
競馬分析を行うにあたり、JRAが公表しているDBはかなり細部までレコード化しており、データ量としてもリッチなため、たしかに何か始めるには丁度良いトピックだ。
ではここで僕もノコノコと競馬分析を始めてしまっていいのだろうか。
否。僕は競馬に詳しくなかった。
そこで自分が多少詳しく(とはいえ追っかけをしているわけではないが)、関心の高い大学陸上長距離、特に箱根駅伝を対象にして
データ分析を試み、せっかくだから停滞していたQiitaの更新題材にしようと考え、筆をとった(PCだが)
1. はじめに
本章がはじめにだとしたらここまでの文章は何だったのでしょうか。
馬が走る競馬と人が走る箱根駅伝、一見似ているように見えますが、予測難易度は比にならない気がしています。
その要因として挙げられるのは以下の3つ。
①. データ量が圧倒的に少ない
競馬は年中至る所で何本もレースが行われるのに対し、箱根駅伝は1年に1回、また20大学しか出走しないため、活用可能なレコードも少ない。
学習を行ううえで、レコード数は予測精度に大きく寄与するため、レコード数が少ないことは致命的。
対応策:これはどうしようもない。耐える。
②データ収集が困難
先述のとおり、競馬分析においてはJRAが整形されたDBを公開しているため、分析するうえでは当該データを活用することが近道になるが、
箱根駅伝を分析対象とする場合、必要なデータは自ら用意する必要があり、大変。
対応策:極力他人の力を借りる。お借りします。
③仮説構築が困難
②にも関連するが、データを収集するうえで、やはりまず仮説をある程度構築し、目的変数(タイム)に関連が強そうな要素にあたりをつける必要がある。
例えば10,000mのベストタイム等のトラックレコードが影響しそうなことは推測できるが、他にもどのような要因が区間タイムに影響を与えるのか、隠れた要素を明らかにする必要があり、これも大変。
対応策:とにかく既存データを分析しまくって、仮説を立てまくる。
他にもあると思いますが、一旦上記3つがパッと思いつくところでしょうか。
対応策も併記しましたが、①はただ時が経つのを待つしかないとして、②③は他の方の力も借りながらコツコツ頑張りましょうということですかね。
まずは箱根駅伝予測モデルの構築に向けて、千里の道も一歩から、
とにかく既存データを収集しつつ分析しまくって現状を把握、そこから仮説を立てまくるべく、筆をとります(PCだが)
2. 傾向把握分析
本来であれば区間ごとのコース特性や定点タイム、区間タイムごとに概要を掴むところからスタートする必要があると思うのですが、
もう既に出走時10,000mベスト×区間タイムで散布図を作成して傾向を把握するという分析をやってしまったので、そこからいきます。
現在の環境都合上、分析はExcelで実施。
2.1. 分析目的
数ありそうな説明変数の中で最も目的変数への相関が高く、かつデータのとりやすい10,000mベストタイムと区間タイムの関係性をみることで、
各区間の特徴(データの散らばり具合や突出具合)やランナーの配置傾向を掴み、他分析に繋げる。
2.2. 分析方法
実施内容
出走時の10,000mベストタイムと区間タイムのデータをそれぞれ取得し、散布図にプロットすることで可視化する
元データ
誠に勝手ながらこちらを参照させていただきました!すみません!ありがとうございます!
箱根駅伝・過去のデータ集
かなり過去の記録まで遡って記載いただいていたが、
すべての区間レコードではなく、区間タイムTOP300までのレコードに絞って載せられていたので、分析対象データも絞っている。
(コース変更後は最新コースの記録のみ反映)
データ整形処理
元データを抽出後、以下処理を実施
- 出走時に10,000mトラックの記録を持たないランナーのレコードは除外
- 学連選抜等OP参加のランナーのレコードは除外
2.3. 分析結果
プロットに対する近似曲線を付与したうえで、各区間の分析結果を以下に示します。
各図における近似直線の傾きが大きい区間は相関が強く、小さい区間は相関が弱いわけではないことに留意。(データ標準化が必要なため)
1区:スターター区間
N=291(1992-2023)
縦軸:1区区間タイム
横軸:出走時10,000mベストタイム
- 10,000mベスト27分台ランナーの出走は一度だけ
- 10,000mベスト29分台でも1区を61分台で走るランナーもチラホラ…最近の高速化が影響か?
2区:エース区間
N=288(1983-2023)
縦軸:2区区間タイム
横軸:出走時10,000mベストタイム
- 10,000mベスト28分台以下ランナーがほとんど
- 近年の高速化の影響を踏まえても、28分台でなければ67分30秒はきれないか
- 27分台ランナーでもゴロゴロ外す
- 1人10,000mベストが30分オーバーなのに67分強で走破した外れ値ランナーの彼は一体…
3区:湘南の風区間
N=291
縦軸:3区区間タイム
横軸:出走時10,000mベストタイム
- 10,000mベストが28分前半以下のランナーでも、区間タイムが伸びないランナーも一定存在
- レース展開や突っ込んで入った後に粘れるスタミナを持ち合わせているかどうかも記録を大きく左右する区間か
- 定点ごとの分析をしてみても面白そうな区間
- 圧倒的イエゴン・ヴィンセント。彼のような存在が予測を狂わせる
4区:準エース区間
N=139 ※コース変更があったため
縦軸:4区区間タイム
横軸:出走時10,000mベストタイム
- 準エース区間と呼ばれるが、意外にも28分前半以下ランナーの出走は少ない
- トラック好タイム走者の凡走は他区間と比較すると少ないか
5区:山登り区間
N=137 ※コース変更があったため
縦軸:5区区間タイム
横軸:出走時10,000mベストタイム
- 72分切りに絞ると、10,000m記録が29分台のランナーも少なくはない
- やはり他区間と比較しても適性が重要になってくる区間か
一旦今回の記事ではここまでにして、次は同様の分析を復路区間でも実施し、以降他分析に繋げていきたいと思います。
(3日坊主防止策)
散布図だけでも色々読み取れそうな気はしつつ、やはりデータとして明らかな傾向があるわけではなさそうだなという所感。でも現実世界ってこんなもんなのかな……笑
お願い
皆さまからのデータ提供など、いつでもお待ちしています。。。