皆さま、こんにちは。てくさぽBLOGメンバーの佐藤です。
前回の続きになります。
【てくさぽBLOG】H2O Driverless AIをIBM Power System AC922で動かして競馬予想する(その1)
今回の目的
Driverless AIによって予測した内容と実際の結果を照らしあわせ、予測の精度が有用かどうか検証します。
前回、回帰分析が終了したところまで、書きました。
回帰分析した内容を確認します。
回帰分析結果を確認
イテレーション検証スコア
まず、左下の赤枠の中、イテレーション検証スコアから確認します。
こちらの内容はどのくらいの精度で的中するかになります。
0に近づくほど精度が高くなります。
スコアリングについては前回記載した通りMAEやRMSEをご確認ください。
スコアが、2.6021という値ですので、仮にスコアが1として1着予測としても3着程度までが平均精度になります。
特徴量の重要度
次に下中央の特徴量の重要度です。
こちらの内容はどのようなデータを用いて予測するのか?になります。どのデータを元にしどのような割合で利用するのか、予測の調合データです。
上に行くほど高い重要度になりますので、より着順に関係性が深い値ということになります。
一番上の CVTE とは Cross Validation Target Encoding の略で、着順が低いともう一方の数値の傾向があるという関連性を見つけており、CID調教素点は調教データを数値化した指数となります。
つまり、調教が良い状態であれば結果(着順)も良いという事になります。
2行目にご注目ください。
Freq とありますが、Frequency Encoding の略になります。Frequency Encoding とは、こういう条件のときにこうなりやすいという確率です。
例えば、”芝で1枠だと1着になりやすい” といった傾向分析になります。
このケースの場合、”情報指数” “条件” “距離適性” という3つのデータの特定条件が揃うと着順に対して傾向がある事を Driverless AI が発見しています。
Driverless AI の特徴として個々の列データの特徴だけでなく、複数列のデータを組み合わせ新たな条件を作り出せます。
複数の列データの組み合わせ及び抽出条件を様々テストするというのは手作業でやるには大変な労力になります。また人間の目でみて関係なさそうな組み合わせからも有効な組み合わせを発見できる、これが Driverless AI の強味になります。
予測
回帰分析が完了しましたので次は予測してみます。
まずは予測したいファイルを用意します。
今回回帰分析したデータは2020年3月頭までになるため、それより後の日付のデータを用意します。
回帰分析したデータを予測データとして読み込むと予測は可能ですが、非常に高い精度で的中してしまいますので、回帰分析に用いたデータより未来の2020年4月~2020年5月16日までのデータを用意しました。
Experience 画面から他のデータセットを用いて予測を押し、データを選択します。
するとしばらく待った後ファイルダウンロードが始まりますので保存します。
Driverless AI の内部では回帰分析で生成された条件式に従い計算するという作業しますが、答え合わせの処理ですので、回帰分析する時間よりはかなり短い時間で終わります。
少し待った後ファイルダウンロードが始まりますので保存します。
保存したファイルを開くと最終列に “着順.predicted” という列が追加されています。
これが Driverless AI が予測した順位になります。
検証
実際の結果と予測データを照らし合わせます。
的中率を算出します。
今回は3連複、ボックス6頭という Driverless AI の結果の数字が低い順に6頭を選ぶと仮定して当たりはずれを検証しました。
3連複は任意の3頭が1着2着3着に入ることを予測する買い方になります。BOX は任意の数でのすべての組み合わせとなります。6頭BOX ですと20通りになります。
仮に12~18頭レースとすると三連複の組み合わせは220~816通りありますので、単純な確率ですと6頭BOX の場合の的中率は 2.5%~9% となります。
結果444レース中187レース的中しました。的中率約 41% となります。
純粋に的中率でいえば、完全なランダムと比較して圧倒的に高い数字ですので、予測は機能してるという事はわかります。
さらに精度を上げる
ここからはもう少し結果に対して掘り下げを行います。根気よくデータを見ることによってさらに精度を上げることができます。
今回のケース、条件によって的中率に変化があるのか検証します。
エクセルで頑張りましたが、この作業の時に IBM SPSS のような BIツールがあれば便利ではないかなと感じました。
いくつか見方を試してみたところ、レース番号と距離よって的中率にばらつきがあることがわかりました。
レース番号と的中率の関係
レース番号 | レース数 | あたり | はずれ | 的中率 |
1 | 37 | 23 | 14 | 62% |
2 | 37 | 17 | 20 | 46% |
3 | 37 | 16 | 21 | 43% |
4 | 37 | 19 | 18 | 51% |
5 | 37 | 11 | 26 | 30% |
6 | 37 | 16 | 21 | 43% |
7 | 37 | 19 | 18 | 51% |
8 | 37 | 12 | 25 | 32% |
9 | 37 | 16 | 21 | 43% |
10 | 37 | 17 | 20 | 46% |
11 | 37 | 9 | 28 | 24% |
12 | 37 | 10 | 27 | 27% |
レース距離と的中率の関係
レース距離 | レース数 | あたり | はずれ | 確率 |
1000 | 3 | 0 | 3 | 0.0% |
1150 | 13 | 5 | 8 | 38.5% |
1200 | 76 | 23 | 53 | 30.3% |
1300 | 5 | 4 | 1 | 80.0% |
1400 | 57 | 27 | 30 | 47.4% |
1600 | 57 | 25 | 32 | 43.9% |
1700 | 26 | 11 | 15 | 42.3% |
1800 | 97 | 40 | 57 | 41.2% |
1900 | 4 | 1 | 3 | 25.0% |
2000 | 47 | 21 | 26 | 44.7% |
2100 | 5 | 2 | 3 | 40.0% |
2200 | 11 | 4 | 7 | 36.4% |
2300 | 2 | 0 | 2 | 0.0% |
2400 | 15 | 11 | 4 | 73.3% |
2500 | 1 | 1 | 0 | 100.0% |
2600 | 5 | 3 | 2 | 60.0% |
2750 | 5 | 2 | 3 | 40.0% |
2770 | 5 | 3 | 2 | 60.0% |
2880 | 1 | 0 | 1 | 0.0% |
2890 | 3 | 1 | 2 | 33.3% |
3140 | 1 | 1 | 0 | 100.0% |
3200 | 1 | 0 | 1 | 0.0% |
3380 | 1 | 1 | 0 | 100.0% |
3930 | 1 | 0 | 1 | 0.0% |
4250 | 1 | 0 | 1 | 0.0% |
第5レースと第11レースと第12が的中率が悪いため、外してみます。
次に20レース以上ある中で的中率が悪い距離を見てみます。
1200mが30%程で悪いので外します。
276レース中137的中で的中率49.6%という事でほぼ半分当てることができました。
払戻金傾向
払戻金に傾向があるか回帰分析してみます。
今度は配当金のデータを Driverless AI で解析してみます。
やり方は同じで Terget を配当金にします。
“このモデルを解釈” をクリックすると、データの傾向がわかります。
発走時刻で見ますと14:45以降が配当金が高い傾向がわかります。
14時45分以降ですと10R~12Rとなります。
こちらの条件で絞ると、狙い目のレースを絞ることができます。
AC922の優位性
最後に今回のデータを使って、AC922 と一般的な IAサーバとで Driverless AI の回帰分析時間を比較してみました。
条件をそろえるためにどちらもGPUは “無効”、
AC922 については、”48スレッド(Power9は1Coreあたりのスレッド数4)” “メモリ128GB”
に制限して実行しました。
【AC922(8335-GTH)】
Power9 2.4GHz~3.0GHz 40コア160スレッド →48スレッドに制限
メモリ1024GB →128GBに制限
GPU NVIDIA V100 16GB ×2 →GPU無効
960GB SSD ×2(RAID1)
回帰分析完了までの時間:2時間39分43秒
【IAServer】
Xeon E5-2680v3 2.5GHz~3.3GHz 12コア24スレッド
メモリ128GB
GPU Titan RTX ×1 →GPU無効
480GB SSD ×1
回帰分析完了までの時間:4時間23分54秒
まとめ
AIで競馬予測のまとめに入ります。
今回、出た予測結果に対して内容を掘り下げることをによって、適用条件を絞ることによりさらに高い精度で運用できる事を確認できました。Driverless AI の結果そのままではうまくいかない場合は範囲を絞って運用し、知見を貯め、追加のデータを用意し、徐々に適用範囲を広げていくのが良いと感じました。
また、AC922 Power9 の強力な演算性能により短時間で終わらせることも確認できました。
お問い合わせ
この記事に関するご質問は下記までご連絡ください。
エヌアイシー・パートナーズ株式会社
技術支援本部
E-Mail:nicp_support@NIandC.co.jp