過学習:適合は良く、予測は悪く

手元のデータに完全に適合するモデルは、他のことについては何も教えてくれません。下の次数スライダーを動かすと、それが具体的にわかります。一方の誤差が下がるにつれてもう一方の誤差が再び上がる様子を観察し、最終的に両者がどれほど離れるかに注目してください。

インタラクティブシミュレーションを読み込んでいます...

レッスン

理論 — 過学習:適合は良く、予測は悪く

過学習とは、あてはめに用いた標本のノイズまでもモデルが表現してしまうことです。ノイズを含んだ n 個の点に、次数 d の多項式をあてはめてみましょう。次数を一つ上げるたびに訓練誤差は減少します。手元にある点へ向かって曲がるための自由度が、新たに一つ手に入るからです。d = n − 1 のとき、曲線はすべての点を正確に貫きます。完璧なあてはめであり、そして無価値です。評価において本当に重要なのは、モデルがまだ見ていないデータに対する誤差だからです。

各記号の意味

d
多項式の次数。モデルが曲がるための自由度
σ
点が抽出される際のノイズ。いかなるモデルにも予測できない
前提
各点のノイズが互いに独立しており、背後にある真の曲線が動かないという前提です。センサーのドリフトや市場のレジームなど、誤差に相関がある場合、検証用に残したデータも訓練データから独立ではなくなります。そうなれば、このページにあるすべての数値は、事実を示す誠実なものではなく、単なる楽観的な値に変わってしまうのです。

訓練誤差はどこで止めるべきかを教えてくれない 🖖

次数を0から12までドラッグし、青い曲線を観察してみてください。決して上昇しません。他の設定をどう変えようと、ただの一度もです。真の関数、標本サイズ、ノイズ、データ分割の144通りの組み合わせを検証しましたが、例外は皆無でした。理由は統計的というより、代数的なものです。すべての4次多項式は、係数がゼロの5次多項式でもあります。そのため、より高い次数を用いれば、当てはめた点に対して常に同等以上の精度を出せるのです。既存の答えを上回れなければ、単に元の答えを保持するだけだからです。これにより、「訓練誤差が最小になるのはどの次数か」という問いには、何の情報も含まれなくなります。答えは常に、試した中で最大の次数になるからです。青い曲線は診断指標ではありません。モデルにどれだけの自由度を与えたかを測る尺度なのです。

ノイズを下回る検証スコアは実力ではない 🖖

真の関数をStraight(直線)に、サンプルサイズを40に、ノイズを0.5に、そして訓練データの割合を70%に設定し、次数スライダーを端から端まで動かしてみてください。どの次数でも検証誤差は0.5を下回り、次数1では0.2353を示します。これは本来あり得ないことです。データは直線に標準偏差0.5のノイズを加えたものなので、直線を完璧に復元できたモデルでも、平均して各点から約0.5のずれが生じるはずです。ノイズを予測することは誰にもできません。緑の曲線は、12個の点から推定したのではなく正確に計算された同じ誤差を表しています。次数1では0.5037となり、ノイズをわずかに上回っています。これがほぼ完璧なモデルの本来の姿です。このノイズレベルでの468回の確認でも、全範囲にわたる8,424回の確認でも、誤差がノイズを下回ることは一度もありませんでした。つまり、検証データから得られた数値はモデルの性能を測っていたわけではありません。たまたま選ばれたその12個の点が予測しやすかったという事実を報告していただけであり、しかもあなたを喜ばせる方向に2倍以上も間違っていたのです。

1回のデータ分割で正しい複雑さを当てられる確率は42% 🖖

誤差パネルの下にある二つの三角形は、検証データが支持する次数と、真に最適な次数を示しています。真の関数、サンプルサイズ、ノイズ、データ分割の540通りの組み合わせにおいて、両者が一致したのは226回、差が1次以内だったのは325回でした。両者の平均距離は1.85次であり、最悪のケースでは5次単純すぎたり、11次複雑すぎたりしました。また、間違いの方向は対称ではありません。検証データが最適なものより複雑なモデルを求めたのが233回だったのに対し、単純なモデルを求めたのは81回でした。これは、たまたま近くを通る曲線のうねりによって、小さなテストデータセットが過大評価されやすいためです。計算には何の欠陥もありません。検証誤差は毎回正しく計算されています。問題なのは、十数個の点から計算されたたった一つの数値では、本当に知りたい量のぼやけた姿しか見えないということです。この問題を解決するには、一つの分割を鵜呑みにするのではなく、複数の分割の平均を取る必要があります。それが交差検証(クロスバリデーション)であり、このページはその正当性を示すものです。

全プロセスの詳細解説

  1. データが多ければ、より大きなモデルを使えるという話を聞いたことがあるかもしれません。答えが異なる二つの真の関数を使って、それが事実となる場合とそうでない場合を確かめてみましょう。プリセットの真実は直線と正しいモデル、不足するデータから始め、サンプルサイズのスライダーがそれぞれにどのような影響を与えるかを比較します。

    この問題をツールで開く

    1. まずは直線を考えます。真の関数をStraight(直線)に、ノイズを0.6に設定し、サンプルサイズを全範囲にわたって動かしてみましょう。真の誤差が最も低くなる次数は、11個のサイズのうち8つで1となり、残り3つで2となります。2より高くなることも1より低くなることも決してありません。そこに傾向は存在しません。次数が2になるのは15点、20点、50点のときであり、サンプルサイズが大きいときではありません。ここでは、データが増えても利用できる次数は全く増えないのです。

    2. 次は3次曲線です。ここで先ほどのスローガンが意味を持ちます。真の関数をCubic(3次曲線)に、ノイズを0.6に、データ分割を70%に、そしてサンプルサイズを10に設定します。訓練データは7個です。次数3での真の誤差は0.7297、次数1では0.6107となり、直線が正しいモデルをはっきりと上回っています。

    3. ここは驚くべき部分なので、もう一度読んでみてください。データは本当に3次曲線から生成されているのに、3次曲線を当てはめるのは間違った選択なのです。ノイズの多い7個の点から四つの係数を推定しようとしても値が定まらず、その結果生じる誤差は、モデルが捉えようとする曲線の変化よりも大きくなってしまいます。

    4. 他の設定はそのままにして、サンプルサイズを40まで動かします。訓練データは28個になりました。次数3の誤差は0.6496、次数1の誤差は0.6616です。これで3次曲線が逆転し、真の誤差が最も低くなる次数は3となりました。

    5. これら二つのケースは、一つの点で異なっています。直線の場合、次数1のモデルはすでに真の関数を完全に含んでいるため、データがどれだけ増えても係数を追加する理由にはなりません。モデルが説明すべきことはもう何も残っていないからです。10点のデータでの3次曲線の場合は、次数3のモデルも真の関数を含んではいますが、それを見つけ出すにはサンプルが少なすぎるのです。

    解答

    データが増えればより大きなモデルを使えるようになるわけではありません。すでに必要だったモデルを使えるだけの余裕ができるのです。その条件は、現在のモデルのクラスに何か現実の要素が欠けているかどうかです。もし欠けているなら、データが増えることで最終的にその欠けた部分に手が届くようになります。しかし欠けていないなら、データが増えても適切な複雑さは何も変わりません。だからこそ、真の関数が直線の場合は10点から120点までずっと次数1のままですが、ノイズの大きい3次曲線の場合は10点から40点の間のどこかで次数が1から3へと動くのです。しかもその動きは規則的ではありません。10から60までの7つのサイズでは「1, 1, 1, 4, 1, 3, 3」となります。各サイズが独自のサンプルを抽出するため、階段状というよりはサンプリングのばらつきが乗った傾向として現れます。特定のサイズで一回実行しただけでは、これら二つのうちどちらを見ているのかを判断することはできません。これは、誤差パネルの下にある二つの三角形が繰り返し示しているのと同じ教訓です。

学習の道すじ

データへの直線当てはめ

参考文献 (3)