Speee DEVELOPER BLOG

Speee開発陣による技術情報発信ブログです。 メディア開発・運用、スマートフォンアプリ開発、Webマーケティング、アドテクなどで培った技術ノウハウを発信していきます!

SpeeeKaigi#3 馬と共に生きる

id:kawakubox です。

先日行われた SpeeeKaigi#3 で『馬と共に生きる』というタイトルで発表し、エンタメ賞を受賞しました 🙌

f:id:kawakubox:20170907150440j:plain

SpeeeKaigi#2 は私用で不参加だったこともあり、今回賞取れたのは素直に嬉しいです。


ちなみに エンタメ賞 は以下のように定義されています。

エンタメ賞:エンタメ性が高く、技術を用いてわくわくさせたテーマに贈られる賞


テーマ選定

ここ数年競馬予想にかけるコストが結構高いなぁと感じていました。

また馬券購入も当日の収支に左右されて、予想の軸がぶれたりすることが多いのも課題でした。

なので、近年のバズワードにもなっている機械学習使って競馬予想を行い、ラクに 💰 を増やせるかということをやってみようと思い立ちました。

前提

こだわりたいポイントが1つありました。

  • 馬柱から拾える情報のみで予想する

競馬新聞などでは、各馬の過去5レース程度の情報が記載されています。

そこから溢れている情報は敢えて使わないという「縛り」を設けました。

これは紙面などから得られる情報に制限することで、馬の過去を知る/知らないといった不平等をなくそうという点からです。

使用フレームワークなど

ディープラーニングのフレームワークは Chainer を使いました。

あらかじめ2016年の中央競馬全レースの結果を持っていたので、これを入力データの元にしました。

予想精度

Python, NumPy, Chainer これらを扱うのが初めてということもあり、 Python の書き方が悪いのか、 NumPy, Chainer の使い方が悪いのかというエラーの切り分けに四苦八苦。

データセット食わせて、エラーなく学習モデルが出力されるというところまで持っていくのがやっとでした。 (この時点で SpeeeKaigi 当日の AM4:00)

SpeeeKaigi 直近で行われた、いくつかのレースを使って予想してみたのですが結果は散々なもの。

用意したデータセットも薄っぺらいものでしたし、パラメータ調整も全然でしたので当然の結果ではあります。

発表への反応

🐎への熱い思いをどれだけ詰め込んだトークにできるかがポイントだと思って臨んだので、発表終わって Slack channel のTLを覗いたときに上手く伝えられたと手応えを感じました。

f:id:kawakubox:20170907064409p:plain

当日の質問

❓ 効率よく稼ぐと着順を当てるって別軸かなと思うんですがどっちを目指しているんでしょうか

競馬予想でよく言われる 的中率回収率 のどちらを重要な指標とするのかという点ですが、やはり 回収率 を重視したいです。

とはいえ大穴狙ってドカンと回収だと、精神衛生面や軍資金の面からみてツラいので、的中率もある程度は追いかけたいと思います。

具体的には、馬連20 ~ 50倍の中穴気味のあたりを主戦場としたいです。

❓ 最終的に毛ヅヤとかって馬の写真とか使うんです?

当日のパドックでの毛ヅヤ、気配を画像識別などでパラメータを取り、予想に加味できるとより良いと思います。

ただ、毛ヅヤとかの状態は出走する馬を横並びで見てもあまり意味がないと思っています。

むしろ、対象馬の過去のレースでのパドックとの比較が重要だと思います。

こういった点から、競馬は「記憶のゲーム(ギャンブル)」といった要素が強いと思います。

ですので、全馬全レースのパドック写真データベースなどがあれば予想の1要素として加えてみたいです。

雑感

今回は Chainer を使ってみる、動かしてみるといったことに終止してしまったので、ちゃんとした識別器を作るという点にフォーカスしていきたいです。

具体的には以下のような点になります。

  • 中穴結果となったレースから学習データセット作る
  • レースの施行距離をセグメント分けしてみる ※短距離、中距離 etc…
  • コーナー通過順、レース展開などは有用なパラメータになるのか検証
  • 騎手に関するパラメータをデータセットに入れてみる

競馬予想は使えるパラメータがとても多いので、どの要素が正しい予想結果に強い関連を持っているかは判別しづらいです。

ですが、なんらかの強い関連を持つパラメータはあるはずなので、そういった面をディープラーニングを通して見つけられればと思います。