chapter2, 3と機械学習による方法を試しました。
しかし、これらの方法は直接的に利益を損失関数として使うことができません。
当たり前ですが、利益は高ければ高いほど言いので、教師データとして与えることができないためです。
また、利益を最大化することが、本質的にはオッズを予想することと、馬券を当てることの期待値で表現されることも、前回の閑話にて話しました。
しかし、もっと柔軟な賭け方は本当に存在しないのでしょうか?
そこで、本章では進化計算を利用して、馬券の買い方を最適化したいと思います。
本章で扱うのはGenetic Programming(GP)呼ばれる方法です。
GPを使った手法では、基礎関数(四則演算や初等関数など)の組み合わせを進化計算によって最適化し、この組み合わされた合成関数を使って、賭けるか賭けないかを判断するということです。
GPは一般的には有名ではないため、本章と同様の内容をネット上で見つけることは無いと思います。また、GPについての理論や概論については、この章では詳しく話すことはありません。
ですから、進化計算でも関数を作り出す方法があるんだなー程度に思っていてくれればいいです。
また、進化計算を利用するに当たり、Deap(Distributed Evolutionary Algorithm in Python)というライブラリを利用します。pipで入るので、入れておきます。
※Section 00-01の手順に従っていれば、Dockerfileに記載されているため別途インストールは不要です。
pip install deap
GPをフルスクラッチで書いたコードも手元にあるのですが、GPのコード解説だけで1章使ってしまいそうなので、Deapに含まれているGPを利用して、できるだけ再現負荷が少ないようにしました。