過学習・汎化能力とは
#過学習と汎化能力
過学習と汎化能力
機械学習の目的は、あくまで未知のデータに対して誤差の小さな予測をすることである
これは、「真の」プロセスである$ y=f(x)を求めることに等しい
学習データ(学習の際に用いるデータ)に対応できるだけでは不十分
そもそも学習データにはノイズが乗っていたり、対象とするプロセス($ y = f(x)の形)やノイズの確率的構造が十分にわかるほどのデータ数がなかったりするので、学習データに対してあてはまりがよすぎる(誤差が小さい)と、真の$ y = f(x)からかけ離れた関数を学習してしまう可能性が高まる
https://gyazo.com/4b0f1e6ae4d3011baa5df5cc34e5cd56
未知のデータは、学習データが生成されたときと同様に、「真の」プロセスである$ y = f(x)にノイズが乗った形で生成されるので、$ y = f(x)とかけ離れた形の関数が学習されていると、この未知のデータへの当てはまりが悪くなってしまう可能性が高くなる
この現象(学習データにあわせすぎて、未知のデータに対応できない関数を作ってしまうこと)を過学習あるいは過剰適合(overfitting, overlearning)という
過学習せず、未知のデータに対しても当てはまりが良い(誤差が小さい、正解率が高い)状態であることを、汎化能力(generalization ability)が高いと表現する
モデルが「真の関係性」をうまく表現できている、つまり「真の」$ y = f(x)に近い関数が学習できている状態が、汎化能力が最も高い状態である
過学習の程度を評価するには
未知のデータは得られない(当たり前)ので、実際的には、手持ちのデータを分割して擬似的な未知のデータを用意して汎化能力を検証するのが一般的
モデルの評価のためのデータ分割にあるように、手持ちのデータを学習データとテストデータに分ける
学習データ・・・学習に用いるデータ
テストデータ・・・モデルの検証用の、擬似的な未知のデータ
学習データに対する誤差が小さい(分類であれば分類精度が高い)だけでなく、テストデータに対する誤差が小さい(分類精度が高い)かどうかを見て、過学習していないか(汎化能力が高いか)を評価する