簡単に言えば、交差検証とグリッド検索の違いは何ですか?グリッド検索はどのように機能しますか?最初に相互検証を行い、次にグリッド検索を行う必要がありますか?
相互検証とは、モデルの評価に使用するデータの一部を予約することです。さまざまな相互検証方法があります。最も単純な概念は、データの70%(ここでは数字だけで、70%である必要はありません)を取得してトレーニングに使用し、残りの30%のデータを使用してモデルの評価を行うことです。パフォーマンス。モデルのトレーニングと評価に異なるデータが必要な理由は、過剰適合を防ぐためです。もちろん、実際によく使用されるk分割交差検証など、他の(少し複雑な)交差検証手法があります。
グリッド検索は、特定のモデルに対して、ハイパーパラメーター最適化を実行する方法です。つまり、ハイパーパラメーターの最適な組み合わせ(ハイパーパラメーターの例はオプティマイザーの学習率)を見つける方法です(例:CNN)およびテストデータセット。このシナリオでは、それぞれがハイパーパラメーターの異なる組み合わせを持つ複数のモデルがあります。単一のモデルに対応するこれらのパラメーターの組み合わせはそれぞれ、「グリッド」のポイントにあると言えます。目標は、これらの各モデルをトレーニングし、評価することです。交差検証を使用します。次に、最もパフォーマンスの高いものを選択します。
具体例を挙げると、サポートベクターマシンを使用している場合は、gamma
とC
に異なる値を使用できます。そのため、たとえば、(gamma, C)
に次の値を持つグリッドを作成できます:(1, 1), (0.1, 1), (1, 10), (0.1, 10)
。 gamma
の場合は[1, 0.1]
とC
の場合は[1, 10]
の積に似ているため、グリッドです。グリッド検索は、基本的に、これらの4つの(gamma, C)
値のペアごとにSVMをトレーニングし、次に相互検証を使用して評価し、最適なものを選択します。
交差検証は、モデルのテストセットパフォーマンス(一般化)を堅牢に推定する方法です。グリッド検索は、パラメーターのグリッドによってパラメーター化された、モデルのファミリーのベストを選択する方法です。
ここで、「モデル」とは、訓練されたインスタンスを意味するのではなく、SVC(C=1, kernel='poly')
などのパラメーターを伴うアルゴリズムを意味します。
交差検証。テストデータとトレーニングデータを分離し、テストデータでトレーニング結果を検証します。私が知っている2つのクロスバリデーション手法があります。
まず、テスト/トレーニングのクロス検証。テストとトレーニングとしてのデータの分割。
次に、k分割交差検証では、データをk個のビンに分割し、各ビンをテストデータとして使用し、残りのデータをトレーニングデータとして使用し、テストデータに対して検証します。プロセスをk回繰り返します。そして、平均パフォーマンスを取得します。 k倍交差検証は、テストデータとトレーニングデータの両方を最大化するため、特に小さなデータセットに役立ちます。
グリッド検索;パラメーター調整の複数の組み合わせを体系的に処理し、それぞれを相互検証して、どれが最高のパフォーマンスを提供するかを決定します。パラメーターを少し変更するだけで、多くの組み合わせを処理できます。
交差検定は、モデルをトレーニングしないデータセットの特定のサブセットを予約する方法です。後で、完成する前にこのサブセットでモデルをテストします。
相互検証を行うために実行する必要がある主な手順は次のとおりです。
データセット全体をトレーニングデータセットとテストデータセットに分割します(たとえば、データセット全体の80%がトレーニングデータセットで、残りの20%がテストデータセットです)
トレーニングデータセットを使用してモデルをトレーニングする
テストデータセットでモデルをテストします。モデルがテストデータセットで良好に機能する場合は、トレーニングプロセスを続行します
他の相互検証方法があります、例えば
Leave-one-out相互検証(LOOCV)
K分割交差検定
層別Kフォールド交差検証
敵対的交差検証戦略(トレーニングデータセットと休息データセットが互いに大きく異なる場合に使用)。