汎化性能とは(訓練誤差と汎化誤差)
AIはまず、「訓練データ」で学びます。
たくさんの例を見て、パターンを覚え、「こういうときはこうだ」と答えられるようになる。
でも本当に大切なのは、まだ見たことのないデータでも、ちゃんと当てられるかどうか。
この力を 汎化性能(generalization performance) といいます。
ここで出てくるのが、二つの誤差。
◆ 訓練誤差
学習に使ったデータでの誤差。
いわば「練習問題での成績」。
◆ 汎化誤差
新しいデータでの誤差。
いわば「本番テストでの成績」。
訓練誤差は昨日やった問題集、汎化性能はまだ見ぬ本番……とでも言いましょうか。
訓練誤差が小さいからといって、必ずしも良いモデルとは限りません。
練習問題を完璧に暗記しても、問題が少し変われば解けないことがあるのですから。
現実の世界では、未来の売上、新しい顧客、明日の天気……すべてが「未知のデータ」です。
私たちが本当に欲しいのは、過去に強いモデルではなく、未来に強いモデルですよね。だから、汎化性能が大切になってくるのです。
データ分割による検証方法
汎化性能は、「まだ見ぬデータでの実力」です。
でも本当の未来は、今この瞬間には手に入りません。
だから私たちは、データを分けるという方法で、未来を擬似的につくりだします。
ホールドアウト検証
ホールドアウト検証は、とてもシンプル。
データを
・訓練データ(学習用)
・テストデータ(評価用)
に分ける方法です。
たとえば、
・8割で学習
・2割で評価
学習に使っていないデータで性能を測ることで、本番に近い状況をつくります。
シンプルで分かりやすいですが、問題もあります。
分け方によって、結果がぶれることがあるのです。たまたま良いデータがテスト側に入ったら、性能が良く見えてしまう可能性があります。
交差検証
そこで登場するのが交差検証です。
データを一度だけ分けるのではなく、何回かに分けて、繰り返し評価します。
代表的なのが k-分割交差検証(クロスバリデーション法)。
◆ k-分割交差検証とは
1 データをk個に分ける
2 そのうち1つをテスト用に、残りを訓練用にする
3 これをk回繰り返す
4 最後に平均をとる
たとえば k=5 なら、
5回テストを行い、5回分の評価の平均をとる。
一度きりのテストではなく、複数回の結果から、より安定した評価を得られます。
まとめ
ホールドアウト→ 1回だけ分ける(速い・簡単)
交差検証→ 複数回分ける(安定・信頼性が高い)
データが少ないときほど、交差検証の価値は高いです。