しばらく前から競艇の予想をネタにして機械学習を趣味にしてます。
機械学習といえばPythonなわけですがこれが楽しい。
もともと新卒でIT企業に入って最後に退職するまでずっと同じ業界で、若い頃はもちろん退職前もちょいちょい仕事でコードを書いてたんですが、純粋に趣味としてまとまったコードを書くのは初めてかも。
Pythonはインタープリタ型の言語なのでコンパイルも要らないし、GoogleのColaboratoryを使えばインストールの必要もないお手軽さの上に、ライブラリが豊富でWeb関連から数理的処理、データ解析、機械学習、スマホアプリなどなどできることが多い。
なので、なにかコード書いてやりたいことがあったらとりあえずPythonでやってみればいいんじゃないかみたいな印象です。
私は在職中はC言語の経験が最も長く、次にアセンブラ、あとはPHP、Perl、Java、JavaScriptなどを少々といった感じで、最初はC言語的なアプローチでコードを書いてエラーになり修正するということの繰り返しで若干苦戦しましたが、さすがに数ヶ月経って慣れてきました。
やってみたいことを自分の書いたコードを動かしてやってみる→その結果を見て次にやりたいことを考える。というサイクルが単純に楽しいし、そのサイクルを楽に回すためのツールみたいなものもコード化するのも楽しい。
曲がりなりもプログラミングなので普段使わない部分の脳みそを使ってる気がするのでボケ防止にもいいかも。
仕事だと基本的に他人様の要望ベースだし、ただ動けばいいわけじゃなくて使いやすさとか異常系の処理とか考えることはたくさんあるし、仕様変更や納期、予算、進行管理、リリースしたらしたで障害対応からメンテなど、コード以外にやることがいっぱいあってちっとも楽しくないわけで。
それが、単に自分のためだったら、目的のことができるだけでいいし異常系は困らなければ放置、それこそ作り散らかしの作りっぱなしでもOKで、楽しいと思えることだけをやってればいいのがいいんですな。
で、肝心の競艇の予想はというと現在それなりに使えそうなモデルが2つあり、ひとつは機械学習のアルゴリズムではなく自作アルゴリズムで作ったモデル、もうひとつは機械学習アルゴリズムで作ったモデル。
戦績的には、前者は今年の1〜5月までの320レースに投票した場合に20レースに当選して30,780円獲得しつつも1,220円のマイナス。
後者は、概ね今年1〜4月までのデータで学習したモデルで5月の216レースに投票した場合に26レースに当選して23,720円獲得で2,120円プラス。
とまあ、どっちも微妙な結果ですが実際に投票してるわけじゃないし、モデルを作って予想して結果を見て考えてまたモデルを…というプロセスを楽しんでるので逆にこの微妙さが良かったりします。
もうやり始めると競艇予想に限っただけでも、試してみたいことが次から次へと出てくるので、当分楽しめそうです。