ナード戦隊データマン

データサイエンスを用いて悪と戦うぞ

中学生にもわかるオーバーフィッティングと汎化性能

オーバーフィッティングとは、トレーニングデータに対してモデルを合わせこみすぎて、新しいデータに対する汎化性能が失われてしまうことを意味します。

この説明でピンとこない人もいると思うので、まずは以下の例で考えてみましょう。

例: 数学のテスト勉強

教員が生徒のテスト成績を釣り上げようとしない限り、通常は配布した問題集以外の問題をテストで出題します。

生徒が用いるトレーニングデータは配布された問題集ですが、最もオーバーフィッティングする勉強方法があります。丸暗記です。

指定の問題集の解答をすべて丸暗記する場合、その問題集以外の問題に対応することはできません。言い換えれば、指定の問題集の問題を解くことだけに特化した知識を得ることになります。

つまり、オーバーフィッティングとは、特定のトレーニングデータだけに特化した学習をしてしまうことなのです。これでは、テストで問題集以外の問題が出たときに対応できません。

汎化性能とは

汎化性能とは、トレーニングデータ以外のデータに対しても正しい予測を行える能力を言います。オーバーフィッティングしてしまうと、トレーニングデータとは異なるデータが入力されたときに、正しい予測が行えません。これは、オーバーフィッティングによって汎化性能が失われたことを意味します。

前述の数学のテストの例でいえば、どんな問題が出題されたとしても、正しく回答できるような学習ができた場合、学習によって生成されたモデルの汎化性能が高いことを意味します。

モデルの複雑性とオーバーフィッティング

一般的な原則として、モデルが複雑になるほど、オーバーフィッティングしやすくなります。以下のグラフを見るとそれが明白です。

f:id:mathgeekjp:20170811171203p:plain

青い線はオーバーフィッティングしているモデルです。黒い点はトレーニングデータですが、このトレーニングデータに限っては100%正確に予測することができます。でも、もし新しいデータを予測することになれば、青い線はまったく役に立たないでしょう。

それに対して黒い線は、最小二乗法による線形あてはめをしただけのシンプルなモデルです。このトレーニングデータだけを見てみると、青い線よりも予測性能が落ちているように思えますが、新しいデータに対する汎化性能は黒い直線のモデルのほうがはるかに優れています。

予測のできないモデルにあまり意味がないことを考えると、青い複雑なモデルには価値がありません。

モデルの複雑性に関係する要素は以下があります。

  • 学習に利用したデータのテーブルサイズ
  • 利用するフィールドの数
  • モデル作成に使うアルゴリズム
  • アルゴリズムのチューニングパラメータ

特徴選択の例: SFS

また、フィールドの選択方法としてSFSという手法があります。

フィールドを1つだけ使って作られたモデルを全て調べ、最も重要なフィールドを選択します。2つ目の追加も同様に行います。モデルの分類制度が上がらなくなった時点で終了します。このようにして、重要なフィールドのみを選択することで、複雑性を削減することができます。

汎化性能の確かめ方

汎化性能とは、トレーニングデータ以外のデータに対応する能力を備えていることなので、汎化性能を確かめるためには、検証セットを用意する必要があります。

トレーニングセットと検証セットにデータを分離し、検証セットでも正しく予測できていれば、汎化性能を備えている可能性が高いといえます。

k分割交差検証では、データをk分割して、k-1個をトレーニングセットとします。残りの1個は検証セットです。この分割をk回繰り返します。最終的にテスト性能の平均と標準偏差を求めます。

A,B,Cに分割したとすると、最初にA,Bをトレーニングセットとして、Cを検証セットとします。次に、A,CをトレーニングセットにしてBを検証セットにします。最後にB,Cをトレーニングセットとして、Aを検証セットにします。これらの平均のテスト性能を求めます。

f:id:mathgeekjp:20170811173247j:plain

参考

1.Overfitting - Wikipedia

2.Cross-validation (statistics) - Wikipedia

3.shop.oreilly.com