Wie wähle ich ein Modell aus dieser Ausgabe aus?
Kurze Antwort: Das tust du nicht.
Behandeln Sie die innere Kreuzvalidierung als Teil des Modellanpassungsverfahrens. Dies bedeutet, dass die Anpassung einschließlich der Anpassung der Hyperparameter (hier verbirgt sich die innere Kreuzvalidierung) wie jede andere Modell-Esitmationsroutine ist.
Die äußere Kreuzvalidierung schätzt die Leistung dieses Modellanpassungsansatzes. Dafür verwenden Sie die üblichen Annahmen
- Die k äußeren Ersatzmodelle entsprechen dem "echten" Modell, das
model.fitting.procedure
mit allen Daten erstellt wurde.
- k
k
Wie kann ich einen verschachtelten Lebenslauf für die Modellauswahl verwenden?
Der innere Lebenslauf übernimmt die Auswahl.
Es scheint mir, dass die Auswahl des besten Modells aus diesen K Gewinnermodellen kein fairer Vergleich wäre, da jedes Modell an verschiedenen Stellen des Datensatzes trainiert und getestet wurde.
k
- Nicht dieselben Testdaten haben: Da Sie später behaupten möchten, dass sich die Testergebnisse auf nie gesehene Daten verallgemeinern, kann dies keinen Unterschied machen.
- Nicht die gleichen Trainingsdaten haben:
- Wenn die Modelle stabil sind, macht dies keinen Unterschied: Stabil bedeutet hier, dass sich das Modell nicht (stark) ändert, wenn die Trainingsdaten "gestört" werden, indem einige Fälle durch andere ersetzt werden.
- Wenn die Modelle nicht stabil sind, sind drei Überlegungen wichtig:
- k
- k
- Wenn Instabilität ein echtes Problem ist, können Sie die Leistung für das "echte" Modell nicht gut extrapolieren.
Was mich zu deiner letzten Frage bringt:
Welche Arten von Analysen / Überprüfungen kann ich mit den Ergebnissen machen, die ich aus den äußeren K-Falten erhalte?
- auf Stabilität der Vorhersagen prüfen (iterierte / wiederholte Kreuzvalidierung verwenden)
Überprüfen Sie die Stabilität / Variation der optimierten Hyperparameter.
Zum einen deuten stark verstreute Hyperparameter möglicherweise darauf hin, dass die innere Optimierung nicht funktioniert hat. Zum anderen können Sie in ähnlichen Situationen in Zukunft möglicherweise die Hyperparameter ohne den kostspieligen Optimierungsschritt festlegen. Mit kostspielig beziehe ich mich nicht auf Rechenressourcen, sondern auf die Tatsache, dass diese "Kosten" -Informationen besser zur Schätzung der "normalen" Modellparameter herangezogen werden können.
Überprüfen Sie die Differenz zwischen der inneren und der äußeren Schätzung des ausgewählten Modells. Wenn es einen großen Unterschied gibt (das Innere ist sehr überoptimistisch), besteht die Gefahr, dass die innere Optimierung aufgrund von Überanpassung nicht gut funktioniert.
update @ user99889's frage: Was tun, wenn der äußere Lebenslauf instabil wird?
Zuallererst unterscheidet sich das Erkennen in der äußeren CV-Schleife, dass die Modelle in dieser Hinsicht keine stabilen Vorhersagen liefern, nicht wirklich vom Erkennen, dass der Vorhersagefehler für die Anwendung zu hoch ist. Es ist eines der möglichen Ergebnisse der Modellvalidierung (oder -verifizierung), dass das Modell, über das wir verfügen, nicht für seinen Zweck geeignet ist.
In dem Kommentar zu @davips habe ich darüber nachgedacht, die Instabilität im inneren Lebenslauf zu beheben - also als Teil des Modelloptimierungsprozesses .
Aber Sie haben sicherlich Recht: Wenn wir unser Modell auf der Grundlage der Ergebnisse des äußeren Lebenslaufs ändern, ist eine weitere Runde unabhängiger Tests des geänderten Modells erforderlich.
Instabilität im äußeren Lebenslauf wäre jedoch auch ein Zeichen dafür, dass die Optimierung nicht gut eingestellt war. Wenn man also Instabilität im äußeren Lebenslauf findet, bedeutet dies, dass der innere Lebenslauf die Instabilität nicht in der erforderlichen Weise bestraft - das wäre mein Hauptanliegen Kritik in einer solchen Situation. Mit anderen Worten, warum ermöglicht / führt die Optimierung zu einer starken Überanpassung von Modellen?
Allerdings gibt es eine Besonderheit hier , dass IMHO kann die weitere Veränderung des „final“ -Modell nach entschuldigt sorgfältige Prüfung der genauen Umstände : Da wir eine Überanpassung taten erkennen, jede vorgeschlagene Änderung (weniger df / restriktive oder Aggregation) zum Modell würde in Richtung einer geringeren Überanpassung (oder zumindest in Richtung von Hyperparametern, die weniger anfällig für Überanpassungen sind). Der Punkt des unabhängigen Testens ist das Erkennen von Überanpassung - Unteranpassung kann anhand von Daten erkannt werden, die bereits im Trainingsprozess verwendet wurden.
Wenn wir also beispielsweise über eine weitere Reduzierung der Anzahl latenter Variablen in einem PLS-Modell sprechen, die vergleichsweise harmlos wäre (wenn die vorgeschlagene Änderung ein völlig anderer Modelltyp wäre, z. B. PLS anstelle von SVM, wären alle Wetten ungültig) ), und ich wäre noch gelassener, wenn ich wüsste, dass wir uns sowieso in einem Zwischenstadium der Modellierung befinden. Wenn die optimierten Modelle immer noch instabil sind, sind ohne Zweifel weitere Fälle erforderlich. In vielen Situationen müssen Sie möglicherweise Studien durchführen, mit denen verschiedene Leistungsaspekte (z. B. die Verallgemeinerung zukünftig erfasster Daten) ordnungsgemäß getestet werden können. Dennoch würde ich darauf bestehen, dass der vollständige Modellierungsprozess gemeldet werden muss und dass die Auswirkungen dieser späten Änderungen sorgfältig besprochen werden müssen.
Darüber hinaus wäre eine Aggregation mit und aus dem Sack analogen CV-Schätzungen der Leistung aus den bereits verfügbaren Ergebnissen möglich - was die andere Art der "Nachbearbeitung" des Modells ist, die ich hier für harmlos halten würde. Wiederum wäre es dann besser gewesen, wenn die Studie von Anfang an darauf ausgelegt wäre, zu überprüfen, dass die Aggregation keinen Vorteil gegenüber einzelnen Vorhersagen bietet (was eine andere Art zu sagen ist, dass die einzelnen Modelle stabil sind).
Update (2019): Je mehr ich über diese Situationen nachdenke, desto mehr bevorzuge ich den Ansatz der "verschachtelten Kreuzvalidierung anscheinend ohne Verschachtelung" .
Neben der ausgezeichneten Antwort (+1) besteht die Grundidee darin, dass anhand der Kreuzvalidierung die Leistung einer Methode zum Anpassen eines Modells und nicht des Modells selbst bewertet wird . Wenn Sie eine Modellauswahl durchführen müssen, müssen Sie diese unabhängig in jeder Falte des Kreuzvalidierungsverfahrens durchführen, da sie ein integraler Bestandteil des Modellanpassungsverfahrens ist. Wenn Sie ein auf der Kreuzvalidierung basierendes Modellauswahlverfahren verwenden, bedeutet dies, dass Sie eine verschachtelte Kreuzvalidierung erhalten. Es ist hilfreich, den Zweck jeder Kreuzvalidierung zu berücksichtigen - eine dient der Modellauswahl, die andere der Leistungsschätzung.
Ich würde mein endgültiges Modell erstellen, indem ich das Modell (einschließlich Modellauswahl) an den gesamten Datensatz anpasse, nachdem ich eine verschachtelte Kreuzvalidierung verwendet habe, um eine Vorstellung von der Leistung zu bekommen, die ich vernünftigerweise von diesem Modell erwarten kann.
quelle
get an idea of the performance
?Ich glaube nicht, dass jemand die erste Frage wirklich beantwortet hat. Mit "verschachtelter Kreuzvalidierung" meinte er wohl, sie mit GridSearch zu kombinieren. In der Regel ist in GridSearch ein Lebenslauf integriert, in dem angegeben ist, wie viele Falten getestet werden sollen. Ich halte es für eine gute Praxis, diese beiden zu kombinieren, aber das Modell von GridSearch und CrossValidation ist nicht Ihr endgültiges Modell. Sie sollten die besten Parameter auswählen und schließlich ein neues Modell mit all Ihren Daten trainieren oder auch hier eine CrossValidation mit unsichtbaren Daten durchführen. Wenn das Modell dann wirklich so gut ist, trainieren Sie es mit all Ihren Daten. Das ist dein letztes Modell.
quelle
GridSearchCV(refit=True)
ein Modell anhand der besten Parameter auf die vollständigen Daten aktualisiert , sodass kein zusätzlicher Schritt erforderlich ist. Siehe Dokumentation