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への転送・実行、データの加工はローカルで実行していますがそれほど困っていません。


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

機械学習による競馬予想を再開している

2019/1頃に機械学習による競馬予想をしていて、副業との兼ね合いでちょっと中断したりしていたけど、 色々余裕が出てきたので再開しています。

回収率が100%を超えたので、先週から実際に投票するフェーズに入っていたのですが、 勝ち負けはこんな感じです。

日付 投票 払戻
2020/11/14 ¥7,000 ¥0
2020/11/15 ¥10,000 ¥0
2020/11/21 ¥14,000 ¥12,800
2020/11/22 ¥13,000 ¥17,400

先週は全く当たらなかったですが、今週は黒字です。 この調子でどうにか年内は黒字にしたいところです。

再開した理由はもう1つあって、この界隈は手札を見せずに結果だけ公開するか、基本的にやり方だけ示すだけなのが 常だったのですが、最近はうまくいっているものを比較的安価に公開するところが出てきたというのがあります。

特に直近で役に立った2サイトを紹介します。

AIさんKIさんの予測アルゴリズム (有料note \2,980)

note.com

地方競馬の予想手法を公開しています。 有料記事なので説明している手法についての説明は差し控えますが、 私が中央競馬に応用したところ、回収率が100%を超えました。

筆者はガチのデータサイエンティストらしく、手法も洗練されたものを感じました。

競馬予想で始めるデータ分析・機械学習 (Zenn 有料Book \2,000)

zenn.dev

こちらはYoutubeチャネルで無料公開している動画のソースコードを公開しているZennの有料コンテンツです。

Youtube チャネルはこちら。

www.youtube.com

AIさんKIさんの予測アルゴリズムとは違い、こちらはnetkeibaをデータソースとして、中央競馬の予想をしています。 動画もデータソースも無料(やや利用の仕方はグレーだが...)なので、ライトに始めたい方はこちらから見るといいかもしれません。

動画のライブプログラミングがとても上手で感心しました。

その他

趣旨がずれるのですが、職業(?)競馬予想化の方々のYoutube動画が面白かったです。


www.youtube.com

特に手法について触れていないので踏み込んでいない人には響かないですが、 ちょっとやっている人にはクスリとするところはあるのではないでしょうか?

私はリークの話が興味深かったです。みんな一度は通る道なんですね。

まとめ

競馬で機械学習をする2つ+1のコンテンツを紹介しました。

これから始める方、もう始めているが行き詰まっている方は参考にしてはいかがでしょうか?

Coursera の Machine Learning course を修了した

昨年の12月から受講していた Cousera の Machine Learning course を修了した。

www.coursera.org

以下、簡単に感想

  • この界隈では受講必須
  • パラメータチューニングやサンプル追加の効果の判断など、アルゴリズムよりも重要な点について教えてくれる
    • ライブラリしか使わない、という人にも有用
  • プログラミングはOctaveだが、行列演算がとても書きやすくてよい

学習当初は相場の予測に使おうと思っていたが、軒並み仮想通貨が暴落したのでちょっと迷っている...

仕事ではじめる機械学習

仕事ではじめる機械学習

データサイエンスのための統計学入門 ―予測、分類、統計モデリング、統計的機械学習とRプログラミング

データサイエンスのための統計学入門 ―予測、分類、統計モデリング、統計的機械学習とRプログラミング

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

  • 作者: Sebastian Raschka,Vahid Mirjalili,福島真太朗,株式会社クイープ
  • 出版社/メーカー: インプレス
  • 発売日: 2018/03/16
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎