競馬の順位予想が一番分かりやすい競馬の醍醐味です。しかし、競馬には他にも面白いことがあります。
そのなかでも、僕が好きなのが「一口馬主」です。
馬主になるには「スーパーお金持ちになるしかない」という固定概念をぶっ壊してくれます。数万円で馬主になれます。
まぁ、ガチの投資として一口馬主をしている人はごく少数だと思います。僕は、かなり魅力がある趣味として考えています。
前置きで話題がズレてしまいましたが、今回試してみるのは、AIで一口馬主の募集額を予想することです。
具体的には、AIで何段階かにランク分けをしてもらいます。
画像の用意
netkeiba さんを利用させていただきました。恒例ですね。
2016年、2017年生まれの約600頭の画像と募集額を取得しました。5000万以上、3200万以上、2500万以上、2000万以上、1600万以上、700万以上の6つに分けました。
画像データの水増しも行っています。画像の角度変える方法です。
AI(CNN)のモデル
AIのモデルについては、
model = Sequential() model.add(Convolution2D(32, 3, 3, border_mode='same', input_shape=in_shape)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Convolution2D(64, 3, 3, border_mode='same')) model.add(Activation('relu')) model.add(Convolution2D(64, 3, 3)) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
これです。CNNってやつですね。
とりまやってみたかったので、詳しいことは調べずに無難そうなモデルにしました。
結果
6つに分けるパターンでは、ランダムに予想すると16.7%で的中します。
2回おこなったAIの予測では、23.3%と21.0%でした。テキトーに判断するより、良くても6%しか上回りませんでした。
分類数を減らして、3200万以上、2000万以上、700万以上の3つでも実験しました。が、48.9%と43.8%という結果。
おわりに
改善点は山ほどあります。というか、それが素晴らしく楽しいので何も調べずにやってみました(笑)
今の予測精度のままでは、お金を浪費する趣味にしかならないです。何%まで良くなるかは検討もつきませんが、楽しんで改良していきたいと思います。
おーわり