AWS Machine Learningでtotoが当たらなかったので反省と考察


# あらまし

本記事は、[AWS Machine Learningでtotoを当てる（当たるとは言っていない）](http://qiita.com/satetsu888/items/18712380c2a9aae15c78)の結果発表と反省と考察になりますので、読んでない方は先に前記事に目を通していただくとよりお楽しみいただけると思います。

前回記事で、totoの過去データの収集、AWS MLを使った学習と予想までを行いました。

# 結果発表

前回の記事で作成したデータモデルを使って試合結果を予想し、第800回totoのもっとも確率の高いくじを買いました。

そしてそのくじの結果が下記です。

|　|1|2|3|4|5|6|7|8|9|10|11|12|13|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 購入くじ | 1 | 1 | 1 | 1 | 2 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 2 |
| 当選くじ | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 2 |
| **結果** |  🙆 |🙆 |❌ |🙆 |❌ |❌ |❌ |❌ |🙆 |❌ |🙆 |🙆 |🙆 |

参考リンク: [第800回 toto　くじ結果](http://www.toto-dream.com/dci/I/IPB/IPB01.do?op=lnkHoldCntLotResultLsttoto&holdCntId=0800)

**13試合中 7試合的中！**
1枚しか買ってないことを考えるとまあまあすごい的中率ですが残念ながら賞金は0円でした...

## なぜ当たらなかったか

前回、各試合のスコアを予想したところでくじを買って終わりにしてしまったんですが、そもそもMLで予想した結果がすべて的中する確率というものはどれくらいあったのでしょうか？
前回のMLがはじき出した第800回totoの各試合の確率分布を下に示します。

### 確率分布
| No.  |  1(home勝利)の確率   | 2(home敗北)の確率 | 0(その他)の確率        | 
|-----|---------|--------|---------| 
| 1   |  0.7754 | 0.1020 | 0.1226  | 
|   2 |  0.6348 | 0.2315 | 0.1336  | 
|   3 |  0.5233 | 0.1505 | 0.3262  | 
|   4 |  0.7601 | 0.0934 | 0.1465  | 
|   5 |  0.3370 | 0.4892 | 0.1738  | 
|   6 |  0.1962 | 0.2312 | 0.5726  | 
|   7 |  0.2437 | 0.6113 | 0.1450  | 
|   8 |  0.5273 | 0.1618 | 0.3109  | 
|   9 |  0.2580 | 0.3340 | 0.4080  | 
|  10 |  0.2971 | 0.3341 | 0.3688  | 
|  11 |  0.4028 | 0.1441 | 0.4532  | 
|  12 |  0.3111 | 0.2878 | 0.4010  | 
|  13 |  0.3184 | 0.4268 | 0.2548  | 

各試合の3択について0.7を超えているそこそこ固い試合もあれば、0.4程度しかないどっちに転ぶかわからないものもあります。
この表と先ほどの買ったくじの番号を掛け合わせていくと、（AWS MLではじき出した確率が完全に正しいという前提に立った上での、）僕が買った1枚のくじが１億円に化ける確率が計算できます。
やってみましょう。

```
0.7754 * 0.6348 * 0.5233 * 0.7601 * 0.4892 * 0.5726 * 0.6113 * 0.5273 * 0.4080 * 0.3688 * 0.4532 * 0.4010 * 0.4268 = 0.00020632122
```

というわけで、1枚のtotoが当たる確率はMLを活用しても、そもそも 0.02% しかなかったようです。そりゃまあ当たらないですね...

# totoの当選確率と投資効率

このまま引き下がると、機械学習なんか全然役に立たないじゃないかと怒られてしまいそうなので、1枚で0.02%の確率が実はめちゃくちゃ凄いという説明をしておきます。


一旦機械学習のことは忘れてもらって、ランダムにtoto1枚を買った時の当選確率について考えてみましょう。
１枚での当選確率は、1 or 2 or 0 の3択を13回当てればいいだけなので、とっても簡単ですね。

```
0.3333 ^ 13 = 6.2641057e-7
```
たったの 0.00006264% でした。
くじ1枚が100円で、当選時の賞金が1億円だとすると、くじ1枚をランダムに購入した時の資産の期待値は

```
100,000,000 * 6.2641057e-7 - 100 = -37.358943
```

マイナス37円になります。
世の中においしい話はないもので、宝くじの類はちゃんと計算すると期待値がマイナスになるのは当たり前ですね。


さて、totoなんか買わないで明日からもこつこつ真面目に働こうという気持ちになってきたところで、先ほどMLではじき出したくじは当選確率が0.02%だと言いました。こっちの期待値を計算してみます。

```
100,000,000 * 0.00020632122 - 100 = 20532.122
```

おや、2万532円とプラスの数字が出てきました。
実は前の記事で紹介した機械学習を使ったくじ購入は、（AWS MLではじき出した確率が完全に正しいものだという前提に立った上で、）ランダムでくじを買うのと比べると329倍くらい当選確率を上げてくれています。これによって期待値がマイナスからプラスに変わりました。

# 投資としてのtoto

期待値がプラスになったということは、MLの計算結果通りにtotoを延々と買い続けると長期的に見て資産がプラスになるということなので、夢を買う宝くじとしてのtotoではなく資産の投資先としてのtotoという考え方が可能になります。

もちろん0.02%で当たる可能性のあるくじを1枚買い続けたいならそれでもいいんですが、totoは年間35回程度しかありません。0.02%のくじを年に35回、100年間買い続けた時に全部外す確率は

```
0.9998^(35*100) = 0.4965505394
```
ほぼ50%あります。
元手は安く済みますが、人生全部捧げても半分の可能性で当たらないのでこれはちょっと投資としては賢くありません。

ですのでMLのはじき出した結果確率分布をもとに、当選確率が上がりやすいように複数枚のtotoを買う計算をしていきたいと思います。

## データを当てにして購入枚数を増やす

今一度「なぜ当たらなかったか」の項にある確率分布のテーブルを眺めてください。
各試合の3択で、まあまあ期待できそうなものと、期待できなそうなものがあるということは先述のとおりです。
最小の投資額で最大限当選確率を上げるために、もっとも確率が低そうな試合（今回だと No.12が0となる確率 0.4010 ですね）について、次点の候補(No.12が1となる確率 0.3111 )も買うという操作を行います。
この結果、くじを2枚買って出費は増えましたが、No.12の試合の結果を当てる確率を 0.4010 + 0.3111 = 0.7121 まで上昇させることができました。

同様の操作を繰り返した結果でてくる表が下記になります。

| 購入枚数    | 当選確率            | 購入費用      | 期待当選額       | ROI         | 35回外す確率              | 35回買う費用    | 
|---------|-----------------|-----------|-------------|-------------|----------------------|------------| 
| 1       | 0.0002063212219 | 100       | 20632.12219 | 20632.12219 | 0.9928040281         | 3500       | 
| 2       | 0.0003932298994 | 200       | 39322.98994 | 19661.49497 | 0.9863285615         | 7000       | 
| 4       | 0.000698301774  | 400       | 69830.1774  | 17457.54435 | 0.9758473588         | 14000      | 
| 8       | 0.001269950775  | 800       | 126995.0775 | 15874.38469 | 0.956498054          | 28000      | 
| 16      | 0.002217355477  | 1600      | 221735.5477 | 13858.47173 | 0.9252478691         | 56000      | 
| 32      | 0.004188120672  | 3200      | 418812.0672 | 13087.8771  | 0.8633871841         | 112000     | 
| 64      | 0.007073232418  | 6400      | 707323.2418 | 11051.92565 | 0.78001446           | 224000     | 
| 128     | 0.01148234462   | 12800     | 1148234.462 | 8970.581734 | 0.6675058322         | 448000     | 
| 256     | 0.01825242037   | 25600     | 1825242.037 | 7129.851706 | 0.5248006614         | 896000     | 
| 512     | 0.02562224152   | 51200     | 2562224.152 | 5004.344046 | 0.403141652          | 1792000    | 
| 1024    | 0.03583676836   | 102400    | 3583676.836 | 3499.68441  | 0.2787852534         | 3584000    | 
| 2048    | 0.04890578517   | 204800    | 4890578.517 | 2387.977792 | 0.1729115089         | 7168000    | 
| 3072    | 0.06957715916   | 307200    | 6957715.916 | 2264.881483 | 0.08013324233        | 10752000   | 
| 4608    | 0.09769723556   | 460800    | 9769723.556 | 2120.165702 | 0.02737348411        | 16128000   | 
| 6912    | 0.1316674334    | 691200    | 13166743.34 | 1904.910784 | 0.007145179291       | 24192000   | 
| 10368   | 0.176687377     | 1036800   | 17668737.7  | 1704.160658 | 0.001108580133       | 36288000   | 
| 20736   | 0.210741713     | 2073600   | 21074171.3  | 1016.308415 | 0.0002527378406      | 72576000   | 
| 41472   | 0.2440624945    | 4147200   | 24406249.45 | 588.4994563 | 0.00005584782473     | 145152000  | 
| 62208   | 0.3036358479    | 6220800   | 30363584.79 | 488.0977492 | 0.000003156997335    | 217728000  | 
| 93312   | 0.3675088935    | 9331200   | 36750889.35 | 393.8495516 | 0.0000001088691451   | 326592000  | 
| 139968  | 0.4384501235    | 13996800  | 43845012.35 | 313.2502597 | 0.000000001692745864 | 489888000  | 
| 209952  | 0.516127279     | 20995200  | 51612727.9  | 245.8310847 | 0                    | 734832000  | 
| 314928  | 0.6036576363    | 31492800  | 60365763.63 | 191.6811577 | 0                    | 1102248000 | 
| 472392  | 0.7052780398    | 47239200  | 70527803.98 | 149.2993192 | 0                    | 1653372000 | 
| 708588  | 0.8140453792    | 70858800  | 81404537.92 | 114.8827498 | 0                    | 2480058000 | 
| 1062882 | 0.9065093309    | 106288200 | 90650933.09 | 85.28786177 | 0                    | 3720087000 | 
| 1594323 | 0.99989999      | 159432300 | 99989999    | 62.71627456 | 0                    | 5580130500 | 

いきなりめちゃくちゃいっぱい数字を並べましたが、各列はそれぞれ下記のような意味です。

- 購入枚数
	- totoの購入枚数です。totoの組み合わせ全通りを購入すると 1594323枚 です。

- 当選確率
	- 購入枚数時点での当選確率です。先述した、もっとも当選確率が上がりやくなる計算方法で買い足していった場合の数値になります。

- 購入費用
	- 購入枚数 x ¥100

- 期待当選額
	- 1億円 x 当選確率
- ROI
	- 期待当選額 / 購入費用

- 35回外す確率
	- 該当行の当選確率でくじを35回買った時、すべて外れる確率

- 35回買う費用
	- 購入費用 x 35

上の表を眺めると下記のようなことが読み取れます

- 1回のtotoに2000万円ほどつぎ込んでも、当選確率は半分程度。
- 1回あたり3072枚くらい買うと、35回外す確率を10%以内に抑えられるため投資として現実的なラインかもしれない。この時かかる費用が1000万円程度。
- そんなにお金はかけられないけど人生一発逆転を狙う人は、1回あたり256枚購入くらいが現実的かもしれない。35回買って当選率およそ50%、この時かかる費用が100万円程度。

ちなみに第800回の当選くじは、上記の表でいうと 314928枚 買ったところで含まれていました。コスト3000万円で確率60%なので超お金持ちの方ならチャレンジ可能だったかも・・・というところでした。

# まとめ

- 第800回は6試合もはずしてしまいました。次こそはがんばります。
- MLではじき出した1枚のくじは、適当に買う1枚のくじに比べて300倍程度当選確率が高いと考えられますが、その程度の確率上昇では一生かかっても当たらないことがわかりました
- (AWS MLではじき出した確率が完全に正しいものだという前提に立った上で、）totoを複数枚買う投資に現実味があることを示しました。
	- 数字の上ではめちゃくちゃおいしい投資対象に見えますが、実際に理論通りいくのかどうかは全くわかりません。
- toto投資の実証実験がしたいので、通りすがりのお金持ちな方、1千万ほど僕にください！:pray: :pray: :pray: 計算上は90%の確率でtotoを当てて、数倍にして返せるはずです！:pray:(もちろんはずれたら返しません。）