機械学習におけるアンダーフィットとオーバーフィット

信じられないかもしれませんが、現実世界では、クリーンで完璧なデータセットが存在することは決してありません。 各データセットには、奇妙な部分、欠落した部分、または不均衡なデータがあります。 あるいは、機械学習開発者として、私たちのモデルに何らかのエラーや欠陥が発生することもあります。 その主な理由の1つは、私たちのモデルが基本的なパターンを記述できるようにしたいからです。 残念ながら、現実のデータの性質として、ある程度のノイズや外れ値があり、ほとんどの場合、モデルはデータのシグナルを捕捉し、ノイズを捕捉しないようにしたいのです。

機械学習モデルがどの程度学習し、新しいデータに汎化するかを説明する専門用語があり、これはオーバーフィッティングおよびアンダーフィッティングです。 優れた機械学習モデルの目標は、学習データセットから問題領域からの任意のデータセットにうまく汎化することである。 これにより、モデルが見たことのないデータセットに基づいて予測を行うことができます。

統計学では、適合度は、モデルがターゲットクラス/関数/値にどれだけ近いかを指します。 オーバーフィットとアンダーフィットは、機械学習アルゴリズムやモデルのパフォーマンスを低下させる 2 大原因です。

ベストフィット、オーバーフィット、アンダーフィットとは何かについて理解しましょう。

過適合 & 未適合とは何ですか。

過適合とは、機械学習モデルが未知のデータセットに対してうまく一般化または適合できないシナリオを指します。 機械学習のオーバーフィッティングの明確な兆候は、テストまたは検証データセットでの誤差が学習データセットでの誤差よりもはるかに大きい場合です。

オーバーフィッティングとは、関数がデータセットにあまりにも近く対応するときに起こるモデリング エラーを指す統計で使われる用語です。 その結果、オーバーフィットは追加のデータに適合しないことがあり、これは将来の観測の予測精度に影響を与える可能性がある。

オーバーフィットは、モデルが学習データセット内の詳細とノイズを学習し、それが新しいデータセットでのモデルのパフォーマンスに悪影響を与える程度になったときに発生する。 これは、学習データセット内のノイズやランダムな変動がピックアップされ、モデルによって概念として学習されることを意味します。 問題は、これらの概念が新しいデータセットに適用されず、モデルの汎化能力に悪影響を与えることです。

オーバーフィッティングの反対はアンダーフィッティング(Underfitting)です。 アンダーフィッティングの機械学習モデルは適切なモデルではなく、訓練データセットでのパフォーマンスが低いので明らかです。

アンダーフィッティングは、優れたパフォーマンス測定基準があれば簡単に検出できるため、議論されないことがよくあります。

例で理解する

例 1:

数学の試験のために 3 人の学生が準備したとします。

最初の学生は加算数学演算だけを勉強し、減算、除算、乗算など他の数学演算はスキップしています。 したがって、2番目の学生は、教科書に提示されたすべての問題を暗記している。

そして、3番目の学生は、すべての数学的操作を勉強して、試験のために十分に準備されている。

試験で学生は1つだけ加算に関連する問題を解くことができるだろうし、他の数学操作に関連して質問問題で失敗します。

学生2は、教科書にたまたま出てきた問題にしか答えられず(暗記しているので)、他の問題には答えられない。

学生3は、すべての試験問題を適度に解くことができる。

機械学習アルゴリズムは、我々の3人に似た行動をとり、アルゴリズムが生成するモデルが最初の学生に似ていることもある。

2番目の学生のように、学習データセットの一部からしか学習せず、そのような場合、モデルはアンダーフィッティングになります。 これらは既知のインスタンスでは非常によく機能するが、未知のデータまたは未知のインスタンスではひどく失敗する。 このような場合、モデルは過剰適合と言われる。

そして、モデルが学習データセットと学生3のような未知のデータまたは未知のインスタンスの両方でうまくいく場合、それは良い適合である。

例2.学習データセットと未知のデータまたは未知のインスタンスの両方でうまくいく場合、モデルは過剰適合と言われる。

別の例で、あなたが都市「X」を訪れ、タクシーに乗った場合を考えてみましょう。 後で友人と話すと、タクシーの運転手が標準料金の2倍から3倍も高い料金を請求したことに気づきます。

また、露天商から商品を購入し、またもやその価値以上の金額を支払うことになった。 あなたは最終的に、「X」という街の人々は不誠実であると判断しました。 これは人間の特徴で、人は一般化することが多いのです。

同じ都市「X」で、別のタクシー運転手がメーターに従って合理的に料金を請求したとします。 これはオーバーフィットと呼ばれます。

上記の 2 つの例から言えることは、モデルがテストまたは未見のデータセットでうまく機能する場合、それはベストフィットまたは良いモデルであるということです。 また、テストや未閲覧のデータセットではうまくいかなかったが、トレーニングデータセットではうまくいった場合は、Overfitモデルであると言えます。

次に python コードによる例を見てみましょう。

例3:

この例では、アンダーフィットとオーバーフィットの問題と、非線形関数を近似するために多項式特徴を持つ線形回帰をどのように使用できるかを示しています。 X には乱数/サンプルがあり、y は余弦関数の一部です。

データに基づくグラフは次のようになります… X と y の単純なプロット。

線形回帰を使ってモデルを学習し、予測および視覚化しましょう。

予測されたモデルを可視化しよう。

直線はデータのパターンを捉えることができないことがわかる。 これはアンダーフィットの例です。

いくつかの次数を持つ多項式特徴を考えて、モデルを訓練してみましょう。

線形関数(次数1の多項式)が学習サンプルにフィットしないことが分かります。 これをアンダーフィットといいます。

次数4の多項式は、真の関数をほぼ完全に近似しています。 これはBest FitまたはGood Modelと呼ばれる。

しかし、次数が高い場合(次数15)、モデルは学習データセットにオーバーフィットする、つまり学習データのノイズを学習する。

クロスバリデーションにより、オーバーフィット/アンダーフィットを定量的に評価できるようになる。

また、検証データセットでの平均二乗誤差 (MSE) を計算し、高いほど、モデルがトレーニング データセットから正しく汎化する可能性が低くなります。

フル コードは、
https://colab.research.google.com/drive/1XzngJPT8WUyHFW-JxhrawVhPurJlv1cA?usp=sharing

オーバーフィットまたはアンダーフィットの検出

いかなる種類のフィットを検出する重要な課題は、データをテストするまでほとんど不可能であり、アンダーフィット、ベストフィット、オーバーフィットのいずれも検出可能です。 データセットを一般化できないという、オーバーフィッティングの本質的な特徴に対処することができます。 そのため、データを異なるサブセットに分離することで、学習とテストを容易に行うことができる。 データは主に2つの部分、すなわちテストデータセットとトレーニングデータセットに分割される。

分割技術はデータセットの種類によって異なり、任意の分割技術を使用できる。

もし我々のモデルがテストデータセットよりもトレーニングデータセットではるかに良い結果を出すなら、おそらくオーバーフィットである。例えば、我々のモデルはトレーニングデータセットでは99%の精度で実行したがテストデータセットでは50-55%しか正確ではなかった。 これはモデルの過剰適合であり、未経験のデータセットではうまくいきませんでした。

もし我々のモデルがトレーニングデータセットよりもテストデータセットではるかにうまくいくなら、アンダーフィッティングである可能性があります。 例えば、我々のモデルがトレーニングデータセットで90%の精度を出し、テストデータセットで88%-92%の精度を出すとします。 これを検出するもう一つの簡単な方法は、クロスバリデーションを使用することです。 これは、学習したモデルを新しいデータセットで検証し、その予測精度を確認しようとするものです。 データセットが与えられると、その一部が保留され(例えば30%)、残りがモデルの学習に使用されます。 モデルの学習が完了したら、保留されたデータを使用して、学習で使用したデータから得られた精度と比較して、モデルの精度をチェックします。 この 2 つに大きなばらつきがある場合、過剰適合の疑いがあります。

How to prevent Overfitting or Underfitting

過剰適合または過小適合を検出することは有用ですが、問題を解決するわけではありません。 幸いなことに、試すべきオプションがいくつかあります。 以下は、最も一般的なソリューションの一部です。

アンダーフィッティングに対する救済策は、次に進み、別の機械学習アルゴリズムを試してみることです。

  • Cross-validation:
    • Cross-validation は、オーバーフィッティングに対する強力な予防策です。 これらの分割を使用して、モデルを調整します。
    • 標準の k-フォールド クロスバリデーションでは、データをフォールドと呼ばれる k 個の部分集合に分割します。 そして、残りのフォールドをテストセット(「ホールドアウトフォールド」と呼ばれる)として使用しながら、k-1フォールドでアルゴリズムを繰り返し学習する。
    • クロスバリデーションは、オリジナルの学習データセットのみでハイパーパラメータを調整することができる。 これは、テスト データセットを最終モデルを選択するための本当に未見のデータセットとして保持することを可能にします。
  • Train with more data
    • 毎回うまくいくわけではありませんが、多くのデータでトレーニングすることにより、アルゴリズムはシグナルをよりよく検出できます。
    • ユーザーは、モデルの精度を高める方法として、継続的に多くのデータを収集する必要があります。
    • ただし、この方法は高価だと考えられており、したがって、ユーザーは使用するデータが適切でクリーンであることを確認する必要があります。 もし、さらにノイズの多いデータを追加するだけなら、この手法は役に立ちません。 より多くのデータでトレーニングする代わりに、データ増強がありますが、これは前者に比べて安価です。 このプロセスにより、各データセットがモデルにとって一意に見えるようになり、モデルがデータセットの特性を学習するのを防ぐことができる。
  • Reduce Complexity or Data Simplification
    • モデルの複雑さが原因で、大量のデータでもモデルが学習データセットをオーバーフィットさせるようなオーバーフィットが発生することがある。
    • データ簡略化法は、モデルの複雑さを減少させ、オーバーフィットしないほど単純にすることでオーバーフィットを減らすために使用されます。
    • 実施可能なアクションには、決定木の刈り込み、ニューラルネットワークのパラメーター数の削減、およびニューラルネットワークでのドロップアウトの使用などがあります。
  • Regularization
    • Regularization とは、人為的にモデルを単純化するための幅広いテクニックを指します。 たとえば、決定木を刈り込んだり、ニューラルネットワークでドロップアウトを使用したり、回帰のコスト関数にペナルティ・パラメータを追加したりすることができます。
    • 多くの場合、正規化メソッドはハイパーパラメータでもあり、クロスバリデーションによって調整することができます。
    • 正則化について学ぶには、Abhishek Mishra 氏が書いた記事 https://datascience.foundation/datatalk/regularization-machine-learning-teacher を参照し、非常によく説明しています。 アンサンブルにはいくつかの方法があるが、最も一般的なのは次の2つである。 ブースティングとバギングです。
    • ブースティングは、単純なベースモデルを使用して、その集合的な複雑さを増加させることによって動作します。 1185>
    • Boostingは単純なベースモデルを使用して、集約された複雑さを増加させる。これは、シーケンスに並んだ多数の弱い学習者を訓練し、シーケンス内の各学習者がその前の学習者の誤りから学習するようにするものである。
    • バッギングでは、複雑なモデルのオーバーフィッティングの可能性を減らそうとする。
    • 次に、すべての強い学習者を一緒に組み合わせて、予測を「滑らかにする」のである。
  • Early Stopping
    • 学習アルゴリズムを繰り返しトレーニングしているとき、モデルの各反復がどれだけうまく機能しているかを測定することができる。 しかし、そのポイントを過ぎると、学習データをオーバーフィットし始めるため、モデルの汎化能力が弱まる可能性があります。
    • 早期停止とは、学習者がそのポイントを過ぎる前に学習プロセスを停止することを指します。
  • 線形モデルとSVMモデルの場合は正則化を加える必要がある。
  • 決定木モデルでは最大深度を減らすことができる。
  • 一方ニューラルネットワークでは、オーバーフィットを減らすためにドロップアウト層を導入できる。

Quick Summary

オーバーフィッティングとは、モデルがデータセットに密接に関連しすぎるため、モデルに偏りをもたらすモデリング エラーです。

オーバーフィッティングにより、モデルはそのデータセットのみに関連し、他のデータセットとは無関係になります。

コメントを残す

メールアドレスが公開されることはありません。