エンタメ

機械学習で競馬予想して勝てるまで~非エンジニアの挑戦~(第二話)

1.あいさつ

ご無沙汰しております。のはらです。
今シーズンのG1予想成績は12戦1勝11敗です。泣きたいです。

2.振り返り

前回の記事( https://waqtech.d2c.co.jp/entertainment/807/ )の通り、作業環境は整った。

3.データの用意

のはら「A氏、使うデータに求める条件ってある?」 A氏「機械学習に必要なのは、キレイなデータで、キレイなデータさえ用意すれば機械学習はほとんど終わったと思っていい。キレイにするまでが大変なんだ。」 のはら「そうなんだ!なんか簡単そうに思えてきた!だってキレイなデータって買ったらすぐ手に入るよね?」 A氏 「そうだね。買うのが一番早いかもしれない!さすが競馬好き、購入できるところ知ってるの?」 S氏「ここがいいよ月額3000円だけど、細かいデータまで使える」 のはら・A氏「!?」 のはら・A氏「Sさん!ありがとうございます!!(A氏の上長でもある、社内の競馬好きで有名なデータサイエンティストSさん※1がいうなら間違いないな!)」 ※1:なお、 今シーズンのG1予想成績は12戦12敗 こうして競馬のデータは購入することによって手に入れたのだった。

4.使用データの選定

A氏「データは手に入ったから、どのデータを使用して予測するかを決めよう。ここは知識のあるのっちの腕の見せ所だよ!」 のはら「わかった!ちょっと考えてみる!」 ~~数週間後~~ のはら「A氏、ある程度決まった!データはたくさんあるけど、まずは基本的なデータから予測して、そこからいろいろ試行錯誤していろんなデータつかってみるよ!」 のはら「だから、 本賞金 ・天候・距離・芝ダート障害・オッズ・人気・頭数・競馬場・脚質(追込/差し/先行/逃げ)・馬のグレード(条件)・右回りか左回りかで予測する。」 A氏「いいと思う。まずはやってみよう」

5.データの前処理

A氏「じゃあ使用するデータを整形する作業に入ろう。この間言ったけど、機械学習はこの作業が非常に重要なんだ。でもすごい大変だよ」 のはら「かかってこい!」 A氏「まずは、データをCSVで落とし、EC2サーバーにアップしてみよう。そこからデータを見て、どの前処理をするべきか見てみよう」 のはら「おし。できた」 A氏「なるほど、まず基本的なポイントとして、文字列をなにかしらの処理しないとだめだね」 A氏「文字列は、そのカラムのユニーク数に応じて、ラベルエンコーディングもしくはワンホットエンコーディングで、数値にしよう。(使うアルゴリズムによっては全部ラベルでいい場合もあるけど、今回は気にしなくていいや)」 のはら「おしおし」 A氏「あとは、今回ターゲットとする着順の処理をしよう。3着以内に入る予測を今回は最初ということで、 3着以内に入る予測をしてみようか、1着~3着を1、4着以降を0とする処理をしよう」 のはら「いいね!学習させるデータの期間はとりあえず1年間分くらいでいいかな?」 A氏「うん。最初だしね。じゃ、あとはやってきて!(よし、あとは俺は何もやらない)」 のはら「えーーーーーーーーー!」 ~~数ヶ月後~~ A氏「そういえば、機械学習の件どうなったんだろう?最近のっち目も合わせてくれないけど・・・」 A氏「ちょっと!のっち機械学習の件どうなってるの?怒」
のはら「(やべっ)まったくできないから教えてほしい」 A氏「わかったよ!一緒にやろう」 こうしてなんとか、前処理まで終了することができた。ちなみにこんなデータとなっている。

6.機械学習

A氏「やっと前処理終わったね。あとはAuto ML※2にぶん投げて終わりだ」 A氏「まずこのおまじないを打って、前処理で作成したデータフレームを、入れてみよう。どうやらAuto MLは中でクロスバリデーションで評価してくれるらしい」 のはら「クロスバリデーションよくわからないけど勉強しとくね。とりあえず今回はやってみる!」 A氏「あとはこれを実行すれば学習できるよ。」 のはら「おっ!でたよ。どうみるの?」 A氏「2値分類の時は、AUCという指標をみよう。1に近づけば近づくほど正確に分類ができていることだよ」 のはら「A氏!!0.99でた!!!!!!!!!!!!!!!!!」
A氏「えっ、0.99はバグを疑った方がいい。例えば正解データに近いデータが、トレーニングデータの特徴量にはいっていないかとか」

のはら「あっっ本賞金がはいっている。」

A氏「本賞金ってなに?」 のはら「このレースで獲得した金額」 A氏「ってことはこの値が高いと、簡単に着順わかっちゃうじゃん。] のはら「確かに」 A氏「やっぱりドメイン知識(予測する物事、今回であれば競馬の知識)って大事だね」 のはら「そだね!じゃあ本賞金のデータのぞいてやってみるね!お!0.8くらいになったよ。」
A氏「お、いい感じ。でもやっぱりAuto MLだと中身でどの特徴量が今回の予測に効いたか調べる方法がわからん。あきらめてちゃんとやろうか!」 のはら「ダメだA氏。もう開始から6か月たつ。今結果出さなければいけないんだ。これで1回予想させてくれ!!!!」 A氏「しょうがないなぁ(絶対当たんないよ)」

7.今後の展望

第3話では、今回できた機械学習をもとに、馬券を購入するところまで行こうと思う。 ※2:AutoML( http://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html


関連タグ