機械学習を実生活に(その1)

どーも管理人です。

発表を予定していました日本臨床工学会が9月に延期になりました。6月の透析医学会もどうなることか。まぁこればかりはどうしようもありません。

せっかくですので、発表の内容を実生活に転用してみようと思い立ちました。科学は実用的であってこそですからね。

今回の両学会での発表は機械学習を用いた内容でしたので、これによって得た雀の涙より少ない知識で、競馬予測を行ってみようと思います。(どこが実生活だ?)

ただ、私は普段まったく競馬に限らずギャンブルはしていません。生涯で3度程やったことはありますが、他にせいぜい宝くじをたまーに買うくらいのギャンブル超ド素人です。

ホントは株の方が興味があるのですが、ある程度まとまった資金が必要なのと昨今のコロナショックで素人が手を出せる状況ではなさそう・・・。競馬でしたら100円からできますからね。

 

人の記事を参考にする

ネット上には、”機械学習”、”競馬”とかで検索すると”機械学習で競馬予測をやってみた”といった記事がいっぱい公開されています。それらの中から、自分でもできそうな記事を参考につまみ食い。プログラミング言語は機械学習で広く利用されている”Python”でやってみます。

 

 

データを集めて加工する

機械学習ではいかに多くのデータが集められるかが鍵になります。

過去、私が行った学会発表でのデータはせいぜい多くても数百程度でした。しかし、今回の透析医学会の発表では約50000件のデータを集めています。(時間の都合で実際に使ったのは約24000件)このように機械学習では飛躍的に扱うデータが多くなるので、データを手入力するとかもちろん無理です。

そこでネット上に公開されている競馬に関わるデータをクローリングとかスクレイピングと言われる技術で自動的に集めます。有料でデータを販売しているWEBもありますし、有料でクローリングを代行してくれるトコロもあります。(私はそれに払う金額を回収できる自信がありませんので無料で集められるトコロから自分で集めます。)

そして集めたデータで機械学習が行えるように加工を行います。ここまでのクローリングから加工まですべてPythonで行っています。Python超便利!

 

と言いたいところですが、そこはプログラミングも素人のせいかクローリングが上手くいかない・・・。正確には、全体としては集められるのですが欲しいデータの一部が欠ける。うーん、まぁいいか。まずは試しだし。

ってことで、JRAの中山で2020年1月に行われた108レース分のデータ+αで約3000件分を集めました。随分少ないですな。他のサイトとか見ますと30年分のデータとか使って予測している。

・・・まぁデータの数じゃないし。(数は力なりだろ)

・・・真心こもってるし。(非科学的)

写経したPythoコードがわかりにくくて・・・。(人のせいにするな)

 

機械学習アルゴリズムを選択する

原理的な事はまったくわかっていませんが、精度が高い、演算量が軽いと言われている最近人気の”LightGBM”を選択します。使ってみてからの感想ですが、特に欠損値があってもとりあえず結果が出るのはよいです。あと、正規化とか標準化とかもしなくていいから。

エラーが怖い素人には超ありがたい。

 

データを眺めてみる

少ないデータですが、まずは傾向などを調べてみます。

やはり参考となるのはオッズ、というか単勝人気になるでしょうか。1月の中山での108レースのうち、単勝1番人気が1着になったのは33レース。割合で30%ですから、単勝1番人気だけ買うとして1日12レースのうち3~4レースは当たることになりますが、オッズが3以上ないと結局は負けることになります。実際、33レースの平均オッズは2.5程です。

人様の予想もあながち間違いではなく結構当たっていますが、逆に言えば知恵?を結集しても30%程度しか当たらないのです。とはいうものの1番人気だけ賭けていれば勝てるようでしたら、皆そうするし、面白くも何ともないし。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です