競馬を機械学習で予測してみたい~資金配分編~

機械学習の方が主にデータ収集の方で行き詰ってるので最適な資金配分問題を解いてみようと思いました。機械学習の方も自分で何回かレースを賭けてみてどういう特徴量が大事そうか感覚がつかめてきたのでロジックを機械に早く落とし込みたい所存です。

 

以下のような問題を解きたい。

馬がN頭出馬するレースにおいて、各馬が一着になると自分が予想する確率がPk(k=1~N, ΣPk=1)、オッズがQkであるとき、単勝馬券のみを買う場合に、各馬に投じる資金の割合Rk(ΣRk=1かつRk≧0)の組(R1, R2, .... RN)のうち、利益の期待値を最大化するような組を求めたい。

つまり、利益の期待値の合計は、投じる資金の総量をWとすれば、

 W(\sum\limits_{k=1}^{N}P_{k}Q_{k}R_{k} - 1)

と表される。

この問題は有名なケリー基準の拡張となるわけですが、実は上の式だけだと上手く問題が解けないので、新しく次のような目的関数Gを導入します。

 G = \sum\limits_{k=1}^{N}P_{k}\log(1 + R_{k}(Q_{k} - 1))

どうしていきなりlogが出てくるかというと、一回当たりの収益率の幾何平均成長率を取っているからです。それだけじゃ分からんと言われそうですがTeX打ちがめんどくさいので詳しくは割愛します。どうせ誰もそこまで細かく読んでないし、、

 

以下、このGを最大化するRの組を求めていくが、そのためにラグランジュの未定乗数法を利用する。Rの和が1であることを制約条件として利用し、パラメータλを用いて以下のラグランジュ関数を得る。

 \mathcal{L}(r_1, r_2, \ldots, r_N, \lambda) = \sum\limits_{i=1}^N p_i \cdot \ln(1 + r_i \cdot (q_i - 1)) + \lambda \left(1 - \sum\limits_{i=1}^N r_i \right)

この式を各Rについて微分すると以下のようになる。

 \displaystyle \frac{\partial \mathcal{L}}{\partial R_i} = \frac{P_i \cdot (Q_i - 1)}{1 + R_i \cdot (Q_i - 1)} - \lambda = 0 \quad (i = 1, 2, \ldots, N)

 

よって、これを解いてあげることで、Rの組は以下のようになることが分かる。

 \displaystyle R_{k} = \frac{P_{i}}{\lambda} - \frac{1}{Q_{i} - 1}

全Rの和が1となるようにλを調節してあげることで、最適なRの組を求めることが出来る。元の期待値の関数のままだとRで微分した時に色々消えてしまい厄介なので上のようなGが必要になったというわけである。

 

この式を具体的にどう使うか?ということに関しては、機械学習で上の変数で言う勝率Pを求めるモデルを作り、そこから適切な資金配分を決めることが出来るんじゃないか?という期待がある。また単勝複勝にしても同じ話なので、単勝複勝の2通りのマシンを作って、両方に半分ずつ資金を投入し、それぞれの勝率及びオッズに従って配分Rを決めて買うと結構収益が安定しそうだな、と妄想したりしている。

 

P.S.

ケリー基準の日本語wikiがないのはどうしてだろう、、自分はBreaking Badで初めて知りました(Season4の第四話)