Wenn wir einen großen Datensatz haben, können wir ihn im Allgemeinen in (1) Training, (2) Validierung und (3) Test aufteilen. Wir verwenden die Validierung, um die besten Hyperparameter bei der Kreuzvalidierung zu identifizieren (z. B. C in SVM), und trainieren dann das Modell unter Verwendung der besten Hyperparameter mit dem Trainingssatz und wenden das trainierte Modell auf den Test an, um die Leistung zu erhalten.
Wenn wir einen kleinen Datensatz haben, können wir keinen Trainings- und Testsatz erstellen (nicht genügend Proben). Daher führen wir eine Kreuzvalidierung durch (k-fach, Auslassen usw.), um die Modellleistung zu bewerten.
Ich habe gesehen, dass eine verschachtelte Kreuzvalidierung (ob wiederholt oder geschichtet) bei der Einstellung eines kleinen Datensatzes verwendet wurde, dh um eine allgemeine Modellleistung zu generieren und gleichzeitig die Parameterauswahl zu optimieren. Meine Frage ist, wie kann ich die besten Hyperparameter bei der verschachtelten Kreuzvalidierung erhalten (wiederholt / nicht wiederholt)? Ich bin daran interessiert, dies, wenn möglich, in Scikit-Learn zu tun. Ich bin etwas verwirrt darüber, wie es geht.
Ich habe mehrere Ressourcen gelesen, aber keine hat mir die endgültige Antwort auf diese Frage gegeben:
Verschachtelte Kreuzvalidierung für die Modellauswahl
Verschachtelte Kreuzvalidierung und Feature-Auswahl: Wann wird die Feature-Auswahl durchgeführt?
Antworten:
Überblick
Wie @RockTheStar in den Kommentaren korrekt festgestellt hat, wird die verschachtelte Kreuzvalidierung nur für den Zugriff auf die Modellleistungsschätzung verwendet. Um die besten Hyperparameter zu finden, müssen wir eine einfache Abstimmung mit Kreuzvalidierung der gesamten Daten durchführen, um die besten Hyperparameter zu finden.
Im Detail:
Optimierung und Validierung (innere und äußere Resampling-Schleifen)
In der inneren Schleife führen Sie eine Hyperparameter-Optimierung durch, Modelle werden in Trainingsdaten trainiert und anhand von Validierungsdaten validiert. Sie finden die optimalen Parameter und trainieren Ihr Modell anhand der gesamten Daten der inneren Schleife . Obwohl es darauf trainiert wurde, die Leistung von Validierungsdaten zu optimieren, ist die Bewertung voreingenommen.
Daher wird dieses Modell mit den Testdaten getestet, sodass hoffentlich keine Verzerrung vorliegt und Sie eine Leistungsschätzung erhalten.
Das endgültige Modell
Nachdem Sie die erwartete Leistung Ihres Modells kennen, müssen Sie es mit all Ihren Daten trainieren. Unser Modell ist jedoch nicht nur der Algorithmus, sondern der gesamte Modellierungsprozess!
Führen Sie also eine Hyperparameter-Optimierung mit all Ihren Daten und den gleichen Spezifikationen der inneren Schleife durch. Trainieren Sie mit den besten Hyperparametern Ihr endgültiges Modell mit den gesamten Daten. Die erwartete Leistung dieses endgültigen Modells haben Sie zuvor mit verschachtelter Kreuzvalidierung bewertet.
Um es noch einmal zu wiederholen: Die Hyperparmeter des endgültigen Modells bieten Ihnen die Leistung, die Sie im Schritt Optimierung und Validierung gefunden haben .
quelle