機械学習の最大の敵、過学習と未学習。バイアス・バリアンス分解で理解します。
訓練データだと99%正解なのに、テストだと60%しかなかったんだけど…なんで?
それは典型的な過学習(overfitting)。 モデルが訓練データの細部や偶然のノイズまで覚え込んでしまい、未知データに対応できなくなる現象よ。
反対に、未学習(underfitting)は『訓練データもテストデータも精度が悪い』状態。 モデルがデータのパターンを十分に捉えられていない。
どっちも困りますねぇ…見分け方ってあるんですかぁ?
訓練精度↑↑でテスト精度↓なら過学習。 訓練もテストも精度↓なら未学習。 両方の精度を比べるのがポイントね。
じゃあ過学習ってどうやって防ぐの?
対策は (1)データを増やす、(2)モデルを単純にする、(3)正則化を入れる、(4)交差検証で性能を確認、(5)早期打ち切り(Early Stopping)、など。
その背景にある理論がバイアス・バリアンス分解。 予測誤差は『バイアス²+バリアンス+ノイズ』に分解できる。 バイアス=モデルの単純さによる誤差、バリアンス=訓練データへの過敏さによる誤差。
両方下げられたら一番なんですけどぉ…
バイアス・バリアンスのトレードオフがあるの。 モデルを複雑にするとバイアスは下がるがバリアンスが上がる。 両者のバランスがいい点を探すのが学習の目標。
要は、過学習=バリアンス過大、未学習=バイアス過大、ってこと?
その理解でばっちり。 補足すると、DS検定では『これは過学習か未学習か』を判断する問題と、『バイアス・バリアンスのトレードオフ』の概念問題が頻出ですよ。
確認クイズ
訓練データでの精度95%、テストデータでの精度60%という結果が出た。最も考えられる状態はどれか。
- 未学習(underfitting)
- 過学習(overfitting)
- 汎化性能が良好
- データリークが発生
こたえを見る
正解: 2. 過学習(overfitting)
過学習(overfitting)です。 訓練精度↑↑、テスト精度↓ という典型的な過学習パターン。 モデルが訓練データの細部やノイズまで覚え込み、未知データに汎化できていません。