Wenn Sie versuchen, Modelle an ein großes Dataset anzupassen, besteht der allgemeine Rat darin, die Daten in drei Teile zu unterteilen: das Training, die Validierung und das Test-Dataset.
Dies liegt daran, dass die Modelle normalerweise drei "Parameterebenen" haben: Der erste "Parameter" ist die Modellklasse (z. B. SVM, neuronales Netzwerk, zufällige Gesamtstruktur), der zweite Parametersatz sind die "Regularisierungs" -Parameter oder "Hyperparameter" ( (zB Lasso-Strafkoeffizient, Wahl des Kernels, neuronale Netzwerkstruktur) und die dritte Menge werden üblicherweise als "Parameter" angesehen (zB Koeffizienten für die Kovariaten).
Bei einer gegebenen Modellklasse und einer Auswahl von Hyperparametern wählt man die Parameter aus, indem man die Parameter auswählt, die den Fehler auf dem Trainingssatz minimieren. Bei einer gegebenen Modellklasse werden die Hyperparameter durch Minimieren von Fehlern im Validierungssatz optimiert. Man wählt die Modellklasse nach Leistung auf dem Testset.
Aber warum nicht mehr Partitionen? Oft kann man die Hyperparameter in zwei Gruppen aufteilen und eine "Validierung 1" für die erste und eine "Validierung 2" für die zweite verwenden. Oder man könnte sogar die Größe der aufgeteilten Trainingsdaten / Validierungsdaten als einen zu stimmenden Hyperparameter behandeln.
Ist dies in einigen Anwendungen bereits gängige Praxis? Gibt es theoretische Arbeiten zur optimalen Aufteilung von Daten?
quelle
Dies ist eine interessante Frage, und ich fand sie hilfreich bei der Antwort von @Wayne.
Nach meinem Verständnis hängt die Aufteilung des Datensatzes in verschiedene Partitionen vom Zweck des Autors und den Anforderungen des Modells in der Praxis ab.
Normalerweise haben wir zwei Datensätze: Training und Testen. Das Training wird verwendet, um die Parameter der Modelle zu finden oder um die Modelle anzupassen. Der Test wird verwendet, um die Leistung des Modells in unsichtbaren Daten (oder realen Daten) zu bewerten.
Wenn wir nur einen Schritt im Training machen, ist es offensichtlich, dass es ein Training und einen Test- (oder Validierungs-) Prozess gibt.
Auf diese Weise kann jedoch das Problem der Überanpassung auftreten, wenn das Modell einmal mit einem Datensatz trainiert wird. Dies kann zu einer Instabilität des Modells in der realen Welt führen. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, das Modell im Trainingsdatensatz einer Kreuzvalidierung (CV) zu unterziehen. Das heißt, wir teilen den Trainingsdatensatz in verschiedene Faltungen auf, behalten eine Faltung zum Testen des mit anderen Faltungen trainierten Modells bei. Der Gewinner ist nun derjenige, der im gesamten CV-Prozess einen minimalen Verlust (basierend auf unserer eigenen Zielfunktion) erzielt. Auf diese Weise können wir sicherstellen, dass das Risiko einer Überanpassung im Trainingsprozess minimiert wird, und den richtigen Gewinner auswählen. Das Testset wird erneut verwendet, um den Gewinner in den unsichtbaren Daten zu bewerten.
quelle