Wie erhalte ich optimale Hyperparameter nach verschachtelter Kreuzvalidierung?

8

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?

RockTheStar
quelle
Dies erwähnt Scikit-Learn, hat aber eine tragfähige Frage zum maschinellen Lernen. Dies scheint mir kein Thema zu sein.
Gung - Reinstate Monica
@gung ja danke. Das Scikit-Lernen ist ein zusätzlicher Teil der Frage (ein Plus für mich)
RockTheStar

Antworten:

6

Ü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 .

Firebug
quelle
Danke für deine Antwort. Ich versuche es zu verstehen, bin mir aber nicht sicher, ob ich es bekomme. Wo genau erhalte ich meinen besten Hyperparametersatz?
RockTheStar
@ RockTheStar Ich habe die Antwort aktualisiert. Grundsätzlich rüsten Sie um (dh führen Sie die Abstimmung erneut durch und passen Sie dann das abgestimmte Modell an alle Daten an): Hier kommen Sie am besten zu optimalen Hyperparametern.
Firebug
1
Sie sagen also im Grunde, dass der verschachtelte Lebenslauf die Modellleistung überprüfen soll. Und wir müssen wieder einen einfachen Lebenslauf für vollständige Daten erstellen, um die optimalen Parameter zu erhalten. Habe ich recht?
RockTheStar
@RockTheStar Ja, Sie haben alles richtig zusammengefasst.
Firebug
1
@nafizh Tut mir leid, dass ich so lange gebraucht habe, um Ihre Anfrage zu beantworten. Ich habe die Benachrichtigung nicht gesehen (?). Alle Leistungsschätzungen basieren auf dem verschachtelten Lebenslauf, den Sie zum Testen Ihrer Modellbildungsstrategie erstellt haben. Um die endgültige Hyperparameter-Optimierung durchzuführen, führen Sie die innere Schleife für die gesamten Daten durch und wählen die besten nach demselben Kriterium aus, das Sie im verschachtelten Lebenslauf verwendet haben. Dann passen Sie es an die gesamten Daten an und das ist Ihr endgültiges Modell, aber die Vorhersageleistung, die Sie ihm zuschreiben, ist die, die Sie im verschachtelten Lebenslauf erhalten haben .
Firebug