なぜ3つのパーティションしかないのですか?(トレーニング、検証、テスト)


61

モデルを大規模なデータセットに適合させようとする場合、一般的なアドバイスは、データを3つの部分(トレーニング、検証、テストデータセット)に分割することです。

これは、通常、モデルには3つの「レベル」のパラメーターがあるためです。最初の「パラメーター」はモデルクラス(SVM、ニューラルネットワーク、ランダムフォレストなど)、2番目のパラメーターセットは「正規化」パラメーターまたは「ハイパーパラメーター」(たとえば、投げ縄ペナルティ係数、カーネルの選択、ニューラルネットワーク構造)および3番目のセットは、通常「パラメーター」と見なされるものです(共変量の係数など)。

モデルクラスとハイパーパラメーターの選択が与えられると、トレーニングセットのエラーを最小化するパラメーターを選択してパラメーターを選択します。モデルクラスが与えられると、検証セットのエラーを最小化することでハイパーパラメーターを調整します。テストセットのパフォーマンスによってモデルクラスを選択します。

しかし、なぜこれ以上パーティションがないのですか?多くの場合、ハイパーパラメータを2つのグループに分割し、「検証1」を使用して最初に適合させ、「検証2」を使用して2番目に適合させることができます。または、トレーニングデータ/検証データのサイズを調整するハイパーパラメーターとして扱うこともできます。

これは一部のアプリケーションですでに一般的な慣行ですか?データの最適な分割に関する理論的な作業はありますか?

回答:


79

最初に、3つのパーティションが何をするのかを間違えていると思います。テストデータに基づいて選択することはありません。アルゴリズムは、トレーニングデータに基づいてパラメーターを調整します。次に、検証データでそれらを実行して、アルゴリズム(およびトレーニングされたパラメーター)を比較し、勝者を決定します。次に、テストデータで勝者を実行して、実世界でどれだけうまくいくかを予測します。

モデルをオーバーフィットするため、トレーニングデータを検証しません。検証ステップで勝者を得るために物事を繰り返し調整しているので、検証ステップの勝者のスコアに止まらないので、独立テスト(特に調整していない)が必要です現在のアリーナ以外でどれだけうまくやれるかというアイデア。

第二に、ここでの制限要因の1つは、データの量です。ほとんどの場合、データを固定パーティションに分割したくないため、CVです。


2
私が持っていた概念的な問題は、十分なモデルを比較している場合、検証データを使用して「勝者を決定する」ときに検証データに効果的に適合することです。したがって、検証データを分割する際のポイントになる可能性があります。
charles.y.zheng

トレーニング検証層と検証テスト層は何らかの意味で異なる目的を果たし、勝者を宣言する場合は最終的に共通の検証セットのモデルを比較する必要があると思います。したがって、追加のレイヤーが役立つかどうかはわかりません。(私の知識は実際に知るには十分ではありませんが。)あなたの提案に最も近いと思うことができるのは、Netflixの競争がどのように行われたかです。チームがテストセットの勾配を登らないようにするために、部分的なテストセットを使用したと思いますが、違うと思います。
ウェイン

2
@ user10882、あなたのコメントは正しくなく、Firebugsも正しくありません。(1)モデルパラメーター(重み、しきい値)と(2)いわゆる「ハイパー」パラメーター(隠されたレイヤーの数、決定木の数)の両方とも、解釈と感触が大きく異なる場合がありますが、すべて異なるパラメーターを区別するパラメーターですモデル。トレーニングデータを使用してすべてを最適化し、検証データを使用して過剰適合を回避し、クロス検証を使用して結果が安定していることを確認します。テストデータは、モデルの期待されるパフォーマンスを指定するためだけに使用され、モデルの受け入れ/拒否には使用しません。
イッセンデボーア

1
@RubenvanBergen:あなたの言うことは理解していますが、user10882にそれを指摘するのは良いことです。しかし、私はそれが最終的に技術的であるとまだ主張しています。勾配降下アルゴリズムの各ステップで検証損失をトレーニング損失に追加する検証手順とともに、トレーニングデータを使用してステップ方向(多項式の次数を含む)を推測する勾配降下アルゴリズムを使用するとします(初期と同様)停止)。これで、「通常」または「ハイパー」の違いはもう関係ありません。手順に依存します。n
イッセンデボア

1
@YtsendeBoer:十分です-検証ベースの早期停止のようなsthを使用する場合、少なくとも最適化手順に関しては境界がぼやけることに同意します。私の考えでは、これは「ハイパーパラメーター」の概念を通常の概念と完全にはマージしません。それらが異なって扱われる多くの状況がまだあります、そして、私はそれらをモデルを定義することにおけるそれらの役割に関して異なって考えます。とにかく、この議論が、これらの概念間の(微妙な)違いと類似性を説明するために他の人に役立つことを願っています=)。
ルーベンファンベルゲン

0

これは興味深い質問であり、@ Wayneからの回答に役立つことがわかりました。

私の理解では、データセットを異なるパーティションに分割することは、作成者の目的と、実際のアプリケーションでのモデルの要件に依存します。

通常、トレーニングとテストの2つのデータセットがあります。トレーニング1は、モデルのパラメーターを見つけるため、またはモデルに適合するために使用されます。テストの1つは、見えないデータ(または実世界のデータ)のモデルのパフォーマンスを評価するために使用されます。

トレーニングの1ステップだけを行うと、トレーニングとテスト(または検証)プロセスがあることは明らかです。

ただし、この方法では、モデルが1つのデータセットで一度にトレーニングされると、過剰適合の問題が発生する可能性があります。これにより、実世界の問題でモデルが不安定になる可能性があります。この問題を解決する1つの方法は、トレーニングデータセット内のモデルを相互検証(CV)することです。つまり、トレーニングデータセットを異なるフォールドに分割し、他のフォールドでトレーニングされたモデルをテストするために1つのフォールドを保持します。勝者は現在、CVプロセス全体で最小の損失を与えるものです(私たち自身の目的関数に基づいて)。このようにすることで、トレーニングプロセスに過剰に適合する可能性を最小限に抑え、正しい勝者を選択することができます。このテストセットは、不可視データの勝者を評価するために再び使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.