DataRobotのAuto MLを使って、公営競技の予想モデルを作る

# はじめに
2020-07-01より[DataRobotのAuto ML無料トライアル](https://www.datarobot.com/jp/lp/trial/) がリリースされたということで、実際に無料トライアルを申し込んでDataRobotのAuto MLを使ってモデルを作成してみました。


今回はあまり時間なかったため、すぐに使えるデータセットとして、個人で細々と収集していたボートレースのデータセットを使って、予想モデルを作成しています。

結論から言うと、データの前処理など一切行わず、2時間もかからないうちに予想モデル作成 → 予想確率算出まで行うことができたので、そのあたりを紹介できればと思います。

また予想モデルの精度についても、学習データセットの特徴量設定が甘かったりするなか、各レースで一番確率の高い組合せ（2連単）の1点のみを100円ずつ買い続けた結果、回収率が84.1%（控除率が25%なので、75%の回収率が目安となる）で、一定の予想精度は出たのかなという所感です。


# 予想モデル作成までの手順
手順は以下のとおり。

- 学習データセットの準備
- モデル作成
- 予想確率算出
　

# 学習データセットについて
対象期間：2011年1月1日～2020年5月31日
対象レース数：500,799
主な条件：レース前の時点で欠場艇がいないこと

1着-2着の組合せ（いわゆる2連単／全30通り）を予測する分類問題としている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/230ea134-e78b-215c-67ba-8bb9ad944d3f.png)


# DataRobotのAuto MLを使って、予想モデルを作成

上記の学習データセットをCSVファイル形式で準備し、インポート処理を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/ccf8bbc8-bc3c-418b-a378-9380c14d668c.png)

学習データセットをアップロード中‥‥
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/6c0b846f-d7c9-8695-79e8-d1d0f71e6826.png)

学習データセットの取り込みが完了すると、各特徴量に関するサマリが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/c2801df3-614b-c168-634f-12d5ea6c8613.png)

ターゲットの選択も直感的に行うことができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/50a32f3c-ac59-8076-03d5-ecfbc15bd132.png)

「開始」を押すと、学習が開始される。（モデリングモードはデフォルトの「クイック」のまま）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/639b4c83-4315-3009-9cb7-1419a55031ec.png)

「モデル」タブを見ると、各モデルで学習している様子を見ることができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/33437d2d-3e09-4b8a-46de-49abf93f8fab.png)

30分ほどで学習が完了。本当に簡単。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/09ea10d5-6798-3af1-a6bc-74b38256b6f2.png)

各モデルの「特徴量のインパクト」等を見ることができる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/ec44389b-b1a4-4086-45df-ce3eeb07a29b.png)


# 予想データセットの準備
対象期間：2020年6月1日～2020年7月13日
件数：6,319レコード
主な条件：レース前の時点で欠場艇がいないこと


# 予想モデルを使用して予想確率を算出

「予測」タブから予想データセットを取り込ませて予測値を算出する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/114985c3-dea5-e6a0-4639-89fc42f6881b.png)

予想データセットを取り込む‥‥
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/0b08be58-a7df-2bba-99e4-903b254bed34.png)

「予測を計算」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/9087b5c0-d80b-3489-7231-0849de4d5963.png)

1分もしないうちに完了。結果は「予測をダウンロード」から取得できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/7692a135-82a8-d0c3-2f3e-41027f010e9b.png)

予想確率は、各分類ごとの確率が横に並んだ形で出力される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/22caead9-dea6-497a-d7c6-3ca1244b5d89.png)


# 予想確率の検証
各レース、30種類の中から最も確率が高い1-2着の組合せの2連単を100円ずつ買ったとして、回収率・的中率を算出
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304907/ce9f1456-63de-0007-0c8d-a0683ff7dca0.png)

■ 検証結果
対象レース数：6,319
購入した組合せのうち、F返還で払い戻しになったレース数：58 → 回収率・的中率の分母は6,319-58=6,261 とする。
的中数：1,498
払戻金額：526,430円
⇒ 回収率：84.1%／的中率：23.9%

ボートレースは控除率が25%なので、75%の回収率を上回ることができるかが目安になるが、84.1%の回収率という結果で思っていたより良い結果となった。



# 所感
時間があまり無いなかで、じっくりマニュアル類を見ないまま作業を進めたものの、UIがとても分かりやすく、予想モデル作成 → 予想確率の算出まで一気に行うことができた。

自分で機械学習のモデルを作成するのであれば、例えば、カテゴリ変数はワンホットエンコーディングしたりと学習データの前処理でかなりの時間を要するところ、このあたりに気をかける必要がなくモデル作成ができるのが嬉しいところです。