過学習とは

DORIBUNデータサイエンティスト

過学習とは

過学習とは、別名「オーバーフィッティング」「過適合」とも呼ばれる、機械学習分野では有名な課題である。Wikipediaでは以下のように定義づけられている。

統計学や機械学習において、訓練データに対して学習されているが、未知データ(テストデータ)に対しては適合できていない、汎化できていない状態を指す。汎化能力の不足に起因する。
引用元:「過剰適合」フリー百科事典「ウィキペディア(Wikipedia)」

すなわち、コンピューターが一定の学習精度まで到達すると、学習データだけに最適化されてしまい、未知データの予測精度が下がってしまうことを意味する。
過学習の結果できあがった予測モデルは、個々の学習データが持つ小さな誤差にも適合するため、学習データ全体の傾向が掴めないものとなってしまう。
本来、学習の目的とは、学習データから導かれた予測モデルに基づき、未知データに対して正しい推定を行うことである。
しかし、学習データに完璧に適合しようとデータの誤差にも適合した複雑なモデルが導き出されると、未知データにうまく当てはまらなくなってしまい実用性のない結果となってしまう。
このように、過学習が起きると未知データに対する予測モデルの精度が低くなるため、対策を打つことが非常に重要である。

過学習を回避するための対策

以下より、過学習を回避するための対策について紹介する。

訓練データ、検証データ、テストデータに分ける

あらかじめ以下3つのデータを用意し、本番前に検証を重ねる方法がある。

訓練データ
予測モデル作成のためのデータ
検証データ
予測モデルの精度検証のためのデータ
テストデータ
最終的に精度を確認するためのデータ

まず、訓練データで作成した予測モデルを用いて、検証データで精度検証を行い、目的関数を最適化する。次に、テストデータでも検証を実施し、問題がなければ実際の現場で用いられることとなる。
具体的な検証方法としては、以下のようなものが挙げられる。

ホールドアウト法
学習データと検証データにランダムに振り分けてモデル構築を行う方法
クロスバリデーション法
データを複数のグループに分け、1つのグループ内のデータを他のグループで作成したモデルで予測する方法
リーブワンアウト法
1つのデータを取り出し、その他のデータでモデル構築を行い、1つの予測を行う作業を繰り返す方法

正則化する

複雑化したモデルを単純化する手法である。最小化したい関数にモデルの複雑さを表す指標(正則化項)を加え、その値を調整することで過学習を防ぐことができる。
正則化の方法としてL1正則化とL2正則化の2パターンがある。L1正則化の代表的な例は、特定のデータの重みを0にすることで不要なデータを削除するLasso(ラッソ)回帰が挙げられる。これにより、説明変数が減るためシンプルなモデルにすることができる。L2正則化の代表的な例は、データの大きさに応じて0に近づけて滑らかなモデルにするRidge(リッジ)回帰が挙げられる。

学習データの数を増やす

学習データの数が多ければ多いほど、テストデータと学習データの分布を近づけることができる。 モデル構築の前に、手元にデータがどれだけあるかを確認しておき、足りない場合にはデータを収集できると望ましい。収集が難しい場合には、手作りで用意する方法があるが、単純なコピーデータにならないようにすべきである。 具体的には、元の学習データに線形変換を加えてデータをずらすなどして、数を増やす方法がある。