遺伝的アルゴリズムによる競馬予想ソフト「シン・馬心君」PoCスタート！

##馬心君（まごころくん）とは
2005年に発表した、遺伝的アルゴリズムによる競馬予想サイト、「馬心君（まごころくん）」のバージョンアップを毎年試みていますが、なかなか初版の成績を超えることができずに今年を迎えました。（以前のチャレンジ記事は下記）

https://qiita.com/magokorokun/items/872292055fa7178001bc

ちなみに、現在公開している初版は回収率105%程度なので、そこそこ楽しめるのですが、的中率が10%台と低いため、投資競馬には向かず、穴指向な予想を行うものなので、穴党の方以外にはお勧めできませんｗ

ここ数年はディープラーニングやパラメーターフリー遺伝的アルゴリズムでの実装を試みていましたが、今年のバージョンで、どうやら初版を超える成績が出せそうな感じになりましたので、これからしばらくの間、成績を確認するPoC期間とします。（実際に購入します！）

##今回のアプローチと学習結果
今回、好成績を叩きだしたのは、ディープラーニングではなく、意外にもパラメーターフリー遺伝的アルゴリズムの方でした。
やはり、何でもかんでもディープラーニングで解決できるわけではなく、向き不向きはあるようです。（パラメーターフリー遺伝的アルゴリズムの記事は下記）

https://qiita.com/magokorokun/items/11e779ec4ab6896cfc1b

今回は2013年から2017年の5年間のデータを使って学習し、様々なパラメーターをチューニングした結果、それなりに満足できるものができたと思ってます。
学習した遺伝子は馬場状態や距離などの17次元になります。

学習対象データ年度 2013年～2017年
対象レース数=8145/15689
◎単勝：的中率= 19.5% 回収率= 112.0%  複勝：的中率= 46.3% 回収率= 100.9%
〇単勝：的中率= 14.4% 回収率=  97.3%  複勝：的中率= 39.3% 回収率=  98.7%
▲単勝：的中率= 12.5% 回収率= 101.2%  複勝：的中率= 35.6% 回収率=  98.9%
△単勝：的中率= 10.8% 回収率= 107.9%  複勝：的中率= 31.0% 回収率=  95.9%
×単勝：的中率=  8.8% 回収率=  89.3%  複勝：的中率= 28.4% 回収率=  93.3%
馬　連◎ー〇▲△×：的中率= 21.3% 回収率= 134.8%
馬　単◎→〇▲△×：的中率= 11.3% 回収率= 124.1%
３連複◎ー〇▲△×：的中率= 14.9% 回収率= 194.7%
３連単◎→〇▲△×：的中率=  6.0% 回収率= 191.8%

ここまで学習できれば、それなりに期待が持てそうです。
このモデルを使って、学習期間以降の2018年～2021年6月末までの評価をおこなってみました。

評価対象データ年度　2018年
対象レース数=1536/2987
◎単勝：的中率= 21.0% 回収率= 116.6%  複勝：的中率= 49.5% 回収率= 108.4%
〇単勝：的中率= 15.6% 回収率=  97.3%  複勝：的中率= 43.6% 回収率= 104.2%
▲単勝：的中率= 12.0% 回収率=  92.6%  複勝：的中率= 34.7% 回収率=  96.8%
△単勝：的中率= 10.4% 回収率= 103.1%  複勝：的中率= 31.9% 回収率=  99.8%
×単勝：的中率=  9.4% 回収率=  89.5%  複勝：的中率= 29.1% 回収率=  83.3%
馬　連◎ー〇▲△×：的中率= 24.7% 回収率= 150.5%
馬　単◎→〇▲△×：的中率= 13.5% 回収率= 128.9%
３連複◎ー〇▲△×：的中率= 18.4% 回収率= 335.7%
３連単◎→〇▲△×：的中率=  8.1% 回収率= 261.9%

評価対象データ年度　2019年
対象レース数=1564/2970
◎単勝：的中率= 20.7% 回収率= 100.7%  複勝：的中率= 48.7% 回収率=  92.3%
〇単勝：的中率= 16.8% 回収率= 111.5%  複勝：的中率= 42.2% 回収率= 101.2%
▲単勝：的中率= 13.1% 回収率= 114.4%  複勝：的中率= 37.9% 回収率= 105.3%
△単勝：的中率= 10.0% 回収率=  87.9%  複勝：的中率= 31.3% 回収率=  97.8%
×単勝：的中率=  8.6% 回収率=  90.0%  複勝：的中率= 28.8% 回収率=  88.6%
馬　連◎ー〇▲△×：的中率= 23.0% 回収率= 172.8%
馬　単◎→〇▲△×：的中率= 12.7% 回収率= 198.2%
３連複◎ー〇▲△×：的中率= 16.3% 回収率= 167.5%
３連単◎→〇▲△×：的中率=  6.6% 回収率= 203.9%

評価対象データ年度　2020年
対象レース数=1576/2989
◎単勝：的中率= 21.4% 回収率= 100.1%  複勝：的中率= 48.6% 回収率=  93.4%
〇単勝：的中率= 17.8% 回収率= 133.6%  複勝：的中率= 44.6% 回収率= 105.2%
▲単勝：的中率= 13.1% 回収率= 107.3%  複勝：的中率= 35.4% 回収率=  98.6%
△単勝：的中率=  8.8% 回収率=  82.0%  複勝：的中率= 29.6% 回収率=  89.6%
×単勝：的中率=  7.9% 回収率=  80.1%  複勝：的中率= 27.7% 回収率=  88.1%
馬　連◎ー〇▲△×：的中率= 23.5% 回収率= 134.5%
馬　単◎→〇▲△×：的中率= 13.3% 回収率= 137.6%
３連複◎ー〇▲△×：的中率= 15.5% 回収率= 140.1%
３連単◎→〇▲△×：的中率=  6.8% 回収率= 144.3%

評価対象データ年度　2021年6月末まで
対象レース数=758/1590
◎単勝：的中率= 21.4% 回収率= 106.1%  複勝：的中率= 49.6% 回収率= 101.0%
〇単勝：的中率= 16.2% 回収率=  88.1%  複勝：的中率= 39.6% 回収率=  93.2%
▲単勝：的中率= 12.9% 回収率=  84.6%  複勝：的中率= 36.7% 回収率=  96.1%
△単勝：的中率=  9.2% 回収率=  87.9%  複勝：的中率= 34.3% 回収率= 110.8%
×単勝：的中率=  8.8% 回収率= 131.3%  複勝：的中率= 26.5% 回収率=  93.8%
馬　連◎ー〇▲△×：的中率= 23.0% 回収率= 111.3%
馬　単◎→〇▲△×：的中率= 13.6% 回収率= 113.0%
３連複◎ー〇▲△×：的中率= 16.1% 回収率= 135.4%
３連単◎→〇▲△×：的中率=  7.5% 回収率= 154.5%

何れの年度も的中率・回収率共に満足できるものです。
ちなみに2018年から2021年6月末までの３年半、所持金10万からワイド5点BOX1000円を買い続けたときの残高推移が下記のような感じでワクワクしますｗ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324631/10ccd198-7991-cc05-9bb7-6cb00b4bd935.png)

今までは、のこぎり型（穴馬券でどーんと増えて、少しずつ減る、の繰り返し）だったため、収支が安定しませんでしたが、今回はかなりの安定感がありそうです。

やはりディープラーニングにしても、遺伝的アルゴリズム等の機械学習にしても、評価関数は重要だと感じました。何を評価し、どうなったら高評価を与えるのか？　的中率重視だと、１番人気の馬ばかりを買うようになってしまい、回収率が上がりません。
回収率重視だと、的中率が下がり、原資が持ちません。

今回は良いバランスの評価関数ができたなぁと実感してます。
PFGAで改良した点は、成長が10エポック止まったら、突然変異確率を10%向上させる処理を追加したことです。これにより、現状打破を狙ってます。

まずはこれから半年、実際に予想の買い目通りに購入してみて、上記のような推移ができそうかを判断したいと思います！