
※本記事は「トレーニングデータ」と「テストデータ」についての解説記事です。Lea(リア)の資産シミュレーションは別記事ですのでご注意ください。
【シミュレーション記事執筆中】
自動売買アルゴリズムを評価する指標として
資産増減のシミュレーション
がありますよね。
そのアルゴリズムを使えばどのように資産が増えるのかを分かりやすく示しています。
しかしそれを見る際に注意しなければならないことがあります。それは
「そのシミュレーションは、結果が良くなるよう調整されたものではないか。」
ということです。
「アルゴリズムのパラメーターを調整して最も結果の良かったものを見せている。」
のだとしたら当然シミュレーション結果はよく見えます。
しかしそれがその後も同じパフォーマンスを見せるのかどうかには疑問が残ります。要は
「その時だけ結果が良かったわけではない」
ということを示せないとシミュレーション結果の信憑性は低いということです。
本記事ではLea(リア)の資産シミュレーションでそれを示します。
トレーニングデータとテストデータ

AIを学習させる際、データは「トレーニングデータ」と「テストデータ」に分けられます。
- トレーニングデータはAIを学習させるためのデータ
- テストデータは学習したAIを評価するためのデータ
テストデータはAIの学習には使用されません。
なぜわざわざ学習させるためのデータを小さくしてまで2つに分けるのか。
それは先程述べた
「その時だけ結果が良かったわけではない」
を確認するためです。
「そのAIはちゃんと過去のデータから未来を予測できるのか?」
を確かめるためとも言えます。
AIと過学習
ところで、みなさんも学生時代周りに
テスト範囲の練習問題は全部解いたのに、テストで点数が取れなかった!!
なんて人がいませんでしたか。
まあ私なんですけど、それはつまりどういうことかというと
その練習問題の解き方や数字を覚えただけであって、問題の本質、構造はわかっていない。
ということです。
そしてAIでもこれが起こるんです。 「過学習」 といいます。

これは約802日分のビットコイン/円の価格データをトレーニングデータとテストデータに分けたものです。
AIはこの青色で囲ったデータのみを学習します。
では一度AIを学習させてみましょう。
「過去72時間のデータから24時間後に上がるかどうかを予想するAI」を作ります。そして
「上がる」予想をして実際に上がったら+1点
「上がる」予想をして下がってしまったら-1点
という試行をし、AIの性能を評価します。点数の推移をグラフ化したものがこちら
(グラフのスケールが違うことには注意してください)
左が「トレーニングデータ」での点数の推移、右が「テストデータ」での点数の推移です。
スケールを合わせて一つのグラフにまとめるとこうなります

明らかに「テストデータ」の方はトレーニングデータと比べてパフォーマンスが落ちています。正答率も
- トレーニングデータ: 88%
- テストデータ : 52%
と大きく離れています。つまり
テスト範囲の練習問題は全部解いたのに、テストで点数が取れなかった!!
状態なわけです。
「正答率88%!」とだけ言われればすごそうに思えます。
しかしこの結果を見て「このAIは優秀だ!」とは思わないでしょう。
トレーニングデータはAIが学習したデータそのもの。成績は良くて当然なのです。
一方テストデータはAIにとっては初見のデータ。
初見のデータでいい結果が出れば実際の環境でもそれに近い結果が出ると期待できます。
つまり重要なのは
「テストデータの成績」と「トレーニングデータとの差」です(差が小さいほうが良い)。そのためには過学習を防がなくてはなりません。
方法は様々ありますが、一番多く用いられる「ドロップアウト」を設定する方法で学習させなおします。
過学習を防ぐ

- トレーニングデータ: 75%
- テストデータ : 56%
ドロップアウトを設定し学習させたことで先ほどよりは差が小さくなりましたがまだ大きく離れています。更にドロップアウトを調整します。

- トレーニングデータ: 60%
- テストデータ : 58%
トレーニングデータとテストデータの差がかなり小さくなりいい感じです。
この結果は
- 結果が良かった時のデータだけを見せているのではない
- 実際に動作させてもシミュレーションに近い結果が大いに期待出来る
と言えます。
しかし24時間毎の勝率60%と言われて物足りなく感じる方もいらっしゃるでしょう。
リアはAIを1つではなく、計165個搭載しそれらを組み合わせることでこの数字を
約70%にまで向上させています。
【シミュレーション記事執筆中】
前の記事
次の記事