実践・競馬データサイエンス
Practical Data Science for Horse Racing
AlphaImpact
NUKUI Shun
@PyCon JP 2018

1Profile●

貫井 駿 (NUKUI Shun, @heartz2001)●●Speciality : Machine Learning
Jobs:○ Fringe81 Co.,Ltd.
■ Ad Tech■ HR Tech○ プロ競馬予想家 (Professional tipster)●Experience of horse racing: 12 years (馬券は二十歳から)●

Favorite horse: ハーツクライ (Heart's Cry)

第１回電脳賞（春）出場当時

2

AlphaImpact" Developing horse racing AI (2016/06~)" Members○○○

NUKUI Shun : Machine Learning, Horse racing domain knowledge
OMOTO Tsukasa : Machine Learning, System Architect, One of committers of LightGBM
HARA Tomonori : Horse racing hacker" Activities○○

HP: https://alphaimpact.jp/
Sell predictions on netkeiba.com ウマい馬券(2017/03~）■

http://yoso.netkeiba.com/

3Agenda● 競馬データについて (Data of horse racing)● 目的変数の設計 (Design of objectives)● 特徴量作成 (Feature Engineering)● 予測モデルの学習 (Training of prediction models)● 予測モデルの評価 (Evaluation of prediction models)4

Agenda● 競馬データについて (Data of horse racing)● 目的変数の設計 (Design of objectives)● 特徴量作成 (Feature engineering)● 予測モデルの学習 (Training prediction models)● 予測モデルの評価 (Evaluation of prediction models)5What is Horse Racing● 騎手の乗った馬が着順を競い合う熱いスポーツ
An exciting sport that horses with jockeys compete● その着順を予想するギャンブル
A gambling to predict its results

6

Why Horse Racing x Data Science?
●

毎週（毎日）解くべき問題となるデータが新しく追加される
New data is added weekly or everyday●

結果が出る過程をリアルタイムに映像で観ることができる
We can watch the process of output from live streaming●

エンジニアリングのしがいがある豊富なデータ
Variety of data●

楽しい！（重要）
Exciting (important!!)
7

Hypothesis・Practice・Verification
仮説●

過学習しているのでは？

hypothesis●

特徴量が足りないのでは？

1 week cycle
実践practice

検証verification●

運用モデルのパフォーマンス確認●レースを見る●特徴量追加●学習方法の変更
8Agenda● 競馬データについて (Data of horse racing)● 目的変数の設計 (Design of objectives)● 特徴量作成 (Feature engineering)● 予測モデルの学習 (Training prediction models)● 予測モデルの評価 (Evaluation of prediction models)9

Problem Setting
Horse 1score 1

Horse 2score 2・・・・・・

Horse N

score N

data of N horses in race

score of performance

Focus on

馬券の買い目bets
10

Selection of Objectives● 「何を解くか」は特徴量作成やモデル選択よりも重要
What to solve is more critical than creating features or models● 目的変数に使える基本的な変数 (basic objectives)○

着順 (order)○

走破タイム (finishing time)○

1着からの秒差 (delta time with winner)○

賞金 (prize)

11

Engineering of Objectives●●

レース内標準化 (normalization in race)○

走破タイムは距離や馬場の状態に依存する部分が大きい○

標準化して環境バイアスを消すことで解きやすくする

馬券外の馬のスコアは同じにする (identify unplaced horses)○

馬券に絡まない部分の着順を高精度で当てても価値が無い

良い目的変数を作るためには、ドメイン知識を頭に入れ、問題を正しく理解する
Good objectives require the domain knowledge and understanding of the problem
12Agenda● 競馬データについて (Data of horse racing)● 目的変数の設計 (Design of objectives)● 特徴量作成 (Feature engineering)● 予測モデルの学習 (Training prediction models)● 予測モデルの評価 (Evaluation of prediction models)13馬柱 (Horse Table)
レース情報
race info

馬の属性
attributes of horse

オッズOdds
騎手
Jockey出走履歴
race history

14

Flow of Data Processing●

多数あるテーブルから直接特徴ベクトルを作ろうとすると保守性悪化
Processing features from collected data directly lowers the maintainability
feature1
血統

出走履歴
レース情報

collected data

・・・

騎手

feature2

featureN

feature vectors

15

Flow of Data Processing●「馬柱」としてまとめることでインターフェースを簡潔に記述
Horse table data simplify the interfaces of data processing
HorseTable
Race
血統feature2

属性
出走履歴

レース情報

レース毎情報
過去戦績
過去戦績
過去戦績

・・・

Horse1

騎手feature1

featureN

Odds

collected datahorse table datafeature vectors

16

出走履歴データ (Past Race History)● 過去X走までの情報をそのまま特徴量に加える (Use past X histories as feature)○

Xが増えると欠損データが増えてスパースになる○例) 過去2走前馬体重、過去3走前走破タイム● 過去X走の成績を集計する (Summarize past X histories)○

次元数はXに依存しない● 過去Xヶ月の成績を集計する (Summarize histories in the past X monthes)17Categorical Data
● Categorical data in horse racing○ 馬名、騎手名、調教師、父馬、母父馬、競馬場、トラック種別● Categorical data able to be used as numeric○ 馬番、レース番号、距離○ 迷ったら数値、カテゴリを別々の特徴量として入れても良Can use both of categorical and numeric as a feature
18

Encoding of Categorical Data
● One-Hot-Encoding○

one hot vector○

次元数が増えるので、出現回数で足切るなどの工夫● Target Encoding○

過去データにおける該当カテゴリの目的変数の集計値（mean, count, sum, …）○○例) 同父馬の平均着順

目的変数に限らず、的中率 (hit ratio)、回収率 (return ratio)などで集計することも可能

19

Automated Achievement Features● We made more than 1500 achievement features

horsejockey
trainerownersire (父馬)…

subject

track typecourselengthcourse×length
weatherfield condition
pace…

count
win hit ratio
place hit ratio
win return ratio
place return ratio

race conditionstatistics
20

Smoothing Ratio Features"

該当カテゴリが少ない場合は、集計値を全体平均に近づける"

When the categories is small, set the aggregate value closer to the overall averageαはカテゴリごとに最適値を選択
Select optimal α for each category

low confidence

where α=0.1

count=2
hit ratio=0.5

count=100
hit ratio=0.4

hit ratio=0.2

AB

average

hit ratio=0.254

hit ratio=0.399

21季節特徴量 (Seasonal Features)●

周期性のあるものは三角関数で表現できる
Cyclic features can be represented by trigonometric functions
4月
sinθ

7月

1月

cosθ

10月

22Agenda● 競馬データについて (Data of horse racing)● 目的変数の設計 (Design of objectives)● 特徴量作成 (Feature engineering)● 予測モデルの学習 (Training prediction models)● 予測モデルの評価 (Evaluation of prediction models)23

LightGBM● 勾配ブースティングの高速・軽量・高精度な実装
The fast, light, accurate implementation of gradient boosting● カテゴリ変数をカテゴリ変数として扱うことができる
Category variables can be treated as categorical variables● 欠損値を欠損値として扱うことができる
Missing values can be treated as missing values● AlphaImpactのOMOTOはLightGBMのcommitter

We have a committer of LightGBM
24

モデル学習方法 (Model Training)
hyperoptupdate params
RaceLightGBM
Race1
Race2

・・・
RaceN

score
feedbackaverage
Race

LightGBM

valid score

RaceLightGBM
split into k-folds
by the race(not by the horse)

cross validation(the valid set is used forearly stopping)25

hyperopt● https://github.com/hyperopt/hyperopt● Tree-structured Parzen Estimator（TPE）● Grid SearchやRandom Searchに比べてパラメータの探索と活用を効率良く実行できる
More efficient than grid search or random search

26Efficient Search with GCE × hyperopt●

LightGBMはハイパーパラメータ数が多いのでhyperoptでも探索に時間がかかる
Since LightGBM has a lot of hyper parameters, it takes much time to search even with hyperopt●Google Cloud Engine (GCE) のプリエンプティブインスタンスを活用
The price of the GCE preemptible instance is reasonable, but the instance might be shut down at any time●○

GCEの計算余剰資源を利用しているためお値段約70%オフ○

ただし、いつインスタンスが落ちるかわからない（最大24時間）

hyperoptの探索の中間状態をTrialsオブジェクトに保持してepochごとにpkl保存しておけば、途中から探索再開可能
If you save the intermediate state as Trials object for each epoch, you can resume searching on the way

27

Tips of LightGBM Tuning● カテゴリ変数はダミー化したほうが精度が出ることが多い
Dummying categorical variables is often more accurate● early stoppingしないと簡単に過学習してしまうので必ず使う
Early stopping is necessary to avoid overfitting● random_stateによって精度が結構変わる
Accuracy varies considerably with different random_state28

Feature Analysis with LightGBM● 特徴量の重要度を見る
Check feature importance○

マクロな特徴量分析● 入力データにおける予測の特徴量の寄与を見る
Check the contribution of features for predictions○

ミクロな特徴量分析○

あるレースにおける予測の根拠が出せる○

cf. SHAP (SHapley Additive exPlanations)■ https://github.com/slundberg/shap29

The Contribution of Features for Predictions

Group thousands of features,and calculate the total
contribution of each group30

Agenda● 競馬データについて (Data of horse racing)● 目的変数の設計 (Design of objectives)● 特徴量作成 (Feature engineering)● 予測モデルの学習 (Training prediction models)● 予測モデルの評価 (Evaluation of prediction models)31

Evaluation Metrics●

ランキング問題でよく使われるnDCGを利用
Apply nDCG, a well-used metric for ranking problem●

高い関連度がより上位に予測できていれば大きな値になる（最大値1）
High relevant score should be positioned at high rank●

関連度はいろいろな観点をつくるべき
Should define the variety of relevant scores

32

The Relevant Score of nDCG"

着順の逆数 (inverse of order)"○ 1/1, 1/2, …, 1/N○ consider the whole ranking
賞金 (prize)"○ 15000, 6000, 3800, 2300, 1500, 0, 0, ..., 0○ consider only top 5
賞金@3 (prize@3)"○ 15000, 6000, 3800, 0, 0, 0, 0, ..., 0
複勝払戻し (place payoff)"○ emphasize the dark horses
単勝支持率 (win betting share)○

how close to popularity

33Comparison of Models with nDCG
(A)

all turf races in 2017
(B)

着順逆数
本賞金
本賞金@3
本賞金@1
複勝払戻し
単勝支持率

●

(A)のほうが(B)よりも的中精度が高い●(A) is more accurate than (B)
単勝支持率(=オッズ)との一致性は(B)のほうが高い●(B) is closer to win betting share(A)は(B)に比べて収益性も高い予測になっている(A) is more profitable than (B)34Evaluation of Top-N Box Betting

all turf races in 2017

Box馬券:
総当たりの組み合わせの馬券

的中率、回収率、回収率の偏差
hit ratio, return ratio, std of return ratio

馬券種:
win: 単勝place: 複勝
quinella place: ワイド
quinella: 馬連
exacta: 馬単
trio: 3連複trifecta: 3連単35

Evaluation of Top-N Box Betting
all turf races in 2017
As a result of the effort of objective and feature engineering...

Return ratio of win
betting is 123%!!

36

定性評価 (Qualitative Evaluation)● 評価データのうち代表的な数レースをピックアップして予測を目で見る
See the predictions for a few of representative races● 概ねまともな予測になっているかどうか
Check if the predictions make sense● 過信は過適合につながるので参考程度にOverconfidence will lead over fitting● 実際の予測を見るとテンションが上がりモチベーションUP
Seeing the actual predictions lifts motivation
37

Summary●

競馬は機械学習のテーマして最高
Horse racing is supreme as a theme of machine learning●

目的変数は問題設定にあわせてエンジニアリングする
Objective variables should be engineered to fit the problem setting●

特徴量エンジニアリングは精度向上するために必須
Feature engineering is required for improving the accuracy●

LightGBMは競馬予測に非常に有効
LightGBM is very effective for horse racing prediction●

モデル性能は定量と定性の両方で評価する
Model performance is evaluated by both quantitative and qualitative38

Thank you39