DEVGRU

プログラミングと競馬予想について書きます

競馬予想に使っているサービス・ライブラリ 2020/11

ここ1年はほとんど変わっていないですが、今現在の機械学習による競馬予想で使っているサービスやライブラリについて情報を残しておきたいと思います。 どちらかというと、なぜそれを使っているのかを考え直したり、あわよくばコメントを貰って改善に役立てるために公開します。

Web Service

JRDB

www.jrdb.com

予想をする上ではデータソースがないと話にならないのですが、Mac, Linux上でデータを取得できるサービスは今の所 JRDB だけです。 (netkeiba をスクレイピングするのはグレーだし、時間が非常にかかる)

データ形式はShiftJISの固定長テキストなので、Pythonで仕様からパーサを生成してパースしています。

予想には2012年からのデータを用いていますが、netkeiba のスクレイピングでこれをするのは少し厳しいですね。

このデータをParquet形式にしたものをBigQueryに流しています。

月会費¥1,980で利用可能です。

Google BigQuery

cloud.google.com

Google が提供する最高のDWHです。非常に早く、SQL拡張でかなり複雑なことができます。 失敗したクエリは課金されないようです。

BigQuery でできる処理はすべて処理してしまい、 Pandas での処理は最小限にしています。

出力を保存するStorageも合わせて月に¥4,000ぐらいでしょうか。

参考:

レジまぐ

regimag.jp

予想に使っているというか、予想を使っているサイトです。

以前は note.com で予想を有料公開していたのですが、予想結果の記述が面倒だったりしたのであちこち探してこちらに行き当たりました。

レース情報をポチポチ入力すると、そのレースの勝敗判定をしてくれます。また全レースが終わると自動的に公開する機能もあります。

これがnote.comより使いやすいかというとちょっと微妙で、売れ行きが悪かったらnote.comに戻るかもしれません。

もしもっといい有料公開の方法があったら教えて下さい。

Library

Pandas

pandas.pydata.org

言わずとしれた、Pythonのライブラリです。特に説明することはないですね。

BigQueryの出力csvをこれで加工しています。

参考:

LightGBM

lightgbm.readthedocs.io

TensorFlow や PyTorch の影に隠れていますが、Kaggleではそれなりに使われているという、GBDTライブラリです。

無効値を食わせても予想できるため、前走データがない場合がある競馬予想では必須です。

同じ特徴を持つものにXGBoostやCatBoostもありますが、最初に触ったのがこれなのと、どうやら他よりも速いらしいのでこれを使い続けています。

Jupyter Lab

jupyterlab.readthedocs.io

これもまた言わずとしれたPythonのアプリケーションですね。 matplotlib と合わせて予想結果をビジュアライズするために使っています。

参考:

データ分析ツール Jupyter入門

データ分析ツール Jupyter入門

使ってみたいもの

Google Cloud Functions

cloud.google.com

AWS Lambda でもいいけど、要はサーバレス。

予想のためにGCPのインスタンスを使う代わりに、サーバレスで分散処理をしてリードタイムを短縮したいです。

つかっていたもの

Google Cloud Build

https://cloud.google.com/cloud-build/hl=jacloud.google.com

ETL タスクの実行に使おうとしていたのですが、JRDBデータのパース中に固まってしまうため、なくなく使用を諦めました。

現在、JRDBデータのパース、BigQueryへの転送・実行、データの加工はローカルで実行していますがそれほど困っていません。


色々とサービスやライブラリを使っているのですが、その中でも代表的なものを紹介しました。 もし似たようなことをしている方でこれいいよ!というものがあれば教えていただけると幸いです。