Ist es immer eine gute Idee, nach einer Kreuzvalidierung mit dem vollständigen Datensatz zu trainieren ? Anders ausgedrückt, ist es in Ordnung, mit allen Mustern in meinem Datensatz zu trainieren und nicht zu überprüfen, ob diese bestimmte Passform überpasst ?
Hintergrundinformationen zum Problem:
Sagen wir , ich habe eine Familie von Modellen parametrisiert durch . Sagen Sie auch, dass ich eine Menge von N Datenpunkten habe und eine Modellauswahl mit k-facher Kreuzvalidierung durchführe, um das Modell zu wählen, das die Daten am besten verallgemeinert.
Für die Modellauswahl kann ich eine Suche (z. B. eine Rastersuche) auf indem ich beispielsweise für jeden Kandidaten eine k-fache Kreuzvalidierung durchführe. In jeder Falte der Kreuzvalidierung erhalte ich das erlernte Modell β α .
Der Punkt der Kreuzvalidierung ist, dass ich für jede dieser Faltungen überprüfen kann, ob das erlernte Modell eine Überanpassung aufwies, indem ich es an "unsichtbaren Daten" teste. In Abhängigkeit von den Ergebnissen konnte ich das Modell wählen, das am besten für die Parameter → α am besten gelernt wurde und das sich bei der Kreuzvalidierung in der Rastersuche am besten verallgemeinerte.
Jetzt sagt, dass nach der Modellauswahl , ich möchte verwenden alle die Punkte in meinem Dataset und hoffentlich ein besseres Modell lernen. Dafür ich die Parameter verwenden könnte → & agr; b e s t entsprechend dem Modell , das ich bei der Modellauswahl gewählt haben, und dann nach dem Training auf dem vollständigen Datensatz, würde ich einen bekommen neues gelernt Modell β f u l l . Das Problem ist , dass, wenn ich alle Punkte in meinen Daten - Set für die Ausbildung nutze, kann ich nicht überprüfen , ob dieses neue Modell gelernt β f u l l Überanpassung auf allen unsichtbaren Daten. Was ist der richtige Weg, um dieses Problem zu denken?
quelle
Antworten:
Bei der Kreuzvalidierung wird die Leistung geschätzt, die mit einer Methode zum Erstellen eines Modells erzielt wird, und nicht die Leistung eines Modells.
Wenn Sie die Kreuzvalidierung verwenden, um die Hyperparameter eines Modells (das s) zu schätzen, und dann diese Hyperparameter verwenden, um ein Modell an den gesamten Datensatz anzupassen, ist dies in Ordnung, sofern Sie die Kreuzvalidierungsschätzung von erkennen Die Performance dürfte (möglicherweise im Wesentlichen) optimistisch eingestellt sein. Dies liegt daran, dass ein Teil des Modells (die Hyperparameter) ausgewählt wurde, um die Kreuzvalidierungsleistung zu minimieren. Wenn die Kreuzvalidierungsstatistik also eine Abweichung ungleich Null aufweist (und dies auch tun wird), besteht die Möglichkeit einer Überanpassung das Modell Auswahlkriterium.α
Wenn Sie die Hyperparameter auswählen und die Leistung des resultierenden Modells schätzen möchten, müssen Sie eine verschachtelte Kreuzvalidierung durchführen, bei der die äußere Kreuzvalidierung zur Bewertung der Leistung des Modells verwendet wird. Die Validierung wird verwendet, um die Hyperparameter in jeder Falte separat zu bestimmen. Sie erstellen das endgültige Modell, indem Sie die Hyperparameter mithilfe der Kreuzvalidierung für die gesamte Menge auswählen und dann den Klassifizierer für die gesamte Datenmenge unter Verwendung der optimierten Hyperparameter erstellen.
Dies ist natürlich rechenintensiv, aber es lohnt sich, da die durch eine falsche Leistungsschätzung verursachte Verzerrung groß sein kann. Siehe meine Zeitung
GC Cawley und NLC Talbot, Überanpassung bei der Modellauswahl und anschließende Auswahlverzerrung bei der Leistungsbewertung, Journal of Machine Learning Research, 2010. Research, vol. 11, S. 2079-2107, Juli 2010. ( www , pdf )
Es ist jedoch weiterhin möglich, dass die Modellauswahl eine Überanpassung aufweist (bei verschachtelter Kreuzvalidierung können Sie nur testen). Eine von mir als nützlich erachtete Methode besteht darin, dem Kreuzvalidierungsfehler einen Regularisierungsbegriff hinzuzufügen, der Hyperparameterwerte benachteiligt, die wahrscheinlich zu überkomplexen Modellen führen, siehe
GC Cawley und NLC Talbot, Verhinderung einer Überanpassung bei der Modellauswahl durch Bayes'sche Regularisierung der Hyperparameter, Journal of Machine Learning Research, Band 8, Seiten 841-861, April 2007. ( www , pdf )
Die Antworten auf Ihre Frage lauten also (i) Ja, Sie sollten den vollständigen Datensatz verwenden, um das endgültige Modell zu erstellen. Je mehr Daten Sie verwenden, desto wahrscheinlicher ist eine gute Verallgemeinerung. (Ii) Stellen Sie jedoch sicher, dass Sie über eine unvoreingenommene Leistungsschätzung erhalten verschachtelte Kreuzvalidierung und erwägen möglicherweise eine Bestrafung der Kreuzvalidierungsstatistik, um eine Überanpassung bei der Modellauswahl weiter zu vermeiden.
quelle
Um die Antwort von @ mark999 zu ergänzen, ist Max Kuhns
caret
Paket (Klassifizierungs- und Regressionstraining) die umfassendste Quelle in R für die Modellauswahl auf der Grundlage der Bootstrap-Kreuzvalidierung oder des N-fachen Lebenslaufs sowie einiger anderer Schemata.Um die Größe des
rms
Pakets nicht außer Acht zu lassen ,caret
können Sie so ziemlich jede in R verfügbare Lernmethode anpassen, während diesvalidate
nur mitrms
Methoden funktioniert (glaube ich).Das
caret
Paket ist eine einzige Infrastruktur zur Vorverarbeitung, Anpassung und Bewertung beliebiger Modelle. Daher ist es für alle Methoden einfach zu verwenden und bietet eine grafische Bewertung vieler Leistungsmessungen (etwas, das neben dem Überanpassungsproblem die Modellauswahl erheblich beeinflussen kann) gut) über Ihr Raster und variable Bedeutung.Sehen Sie sich die Paketvignetten an, um zu beginnen (die Verwendung ist sehr einfach).
Datenvorverarbeitung
Variablenauswahl mit Caret
Modellbildung mit Caret
Variable Wichtigkeit
Sie können auch die Caret-Website aufrufen, um weitere Informationen zum Paket und bestimmte Implementierungsbeispiele zu erhalten:
Offizielle Caret-Website
quelle
train
) in caret eine Möglichkeit gibt, mit dem vollständigen Datensatz zu trainieren?Ich glaube, dass Frank Harrell eher eine Bootstrap-Validierung als eine Kreuzvalidierung empfehlen würde. Mit der Bootstrap-Validierung können Sie das Modell validieren, das in den vollständigen Datensatz eingepasst ist, und es ist stabiler als die Kreuzvalidierung. Sie können dies in R mit
validate
Harrellsrms
Paket tun .Weitere Informationen finden Sie im Buch "Regression Modeling Strategies" von Harrell und / oder "An Introduction to the Bootstrap" von Efron und Tibshirani.
quelle
Ich denke, Sie haben hier eine Reihe von verschiedenen Fragen:
Die Sache ist, dass Sie (einen) Validierungsschritt nur für eine Sache verwenden können: entweder zur Parameteroptimierung (x) oder zur Schätzung der Generalisierungsleistung.
Wenn Sie also eine Parameteroptimierung durch Kreuzvalidierung (oder eine andere datengesteuerte Parameterbestimmung) durchführen, benötigen Sie Testmuster, die von diesen Trainings- und Optimierungsmustern unabhängig sind. Dikran nennt es verschachtelte Kreuzvalidierung, ein anderer Name ist doppelte Kreuzvalidierung. Oder natürlich ein eigenständiges Testset.
Die Verwendung eines der Kreuzvalidierungsmodelle ist in der Regel schlechter als das Training am vollständigen Satz (zumindest wenn Ihre Lernkurvenleistung = f (nsamples) immer noch zunimmt. In der Praxis ist dies: Wenn dies nicht der Fall wäre, hätten Sie wahrscheinlich den Satz erstellt Neben einem unabhängigen Test-Set.)
Wenn Sie große Unterschiede zwischen den Kreuzvalidierungsmodellen (mit denselben Parametern) feststellen, sind Ihre Modelle instabil. In diesem Fall kann die Aggregation der Modelle hilfreich sein und sogar besser sein als die Verwendung eines Modells, das für die gesamten Daten trainiert wurde.
Update: Bei dieser Aggregation handelt es sich um die Idee, dass das Absacken auf das ersatzlose Resampling (Kreuzvalidierung) und nicht auf das Resampling mit Ersetzung (Bootstrap- / Out-of-Bootstrap-Validierung) angewendet wird.
In diesem Artikel haben wir diese Technik verwendet:
Beleites, C. & Salzer, R .: Bewertung und Verbesserung der Stabilität chemometrischer Modelle in Situationen mit geringer Probengröße, Anal Bioanal Chem, 390, 1261-1271 (2008).
DOI: 10.1007 / s00216-007-1818-6
Sehr konservativ mit den für das "beste" Modell zulässigen Freiheitsgraden, dh unter Berücksichtigung der (zufälligen) Unsicherheit bei den Ergebnissen der Optimierungskreuzvalidierung. Wenn die df tatsächlich für die Kreuzvalidierungsmodelle geeignet sind, stehen die Chancen gut, dass sie für den größeren Trainingssatz nicht zu viele sind . Die Gefahr besteht darin, dass die Parameteroptimierung tatsächlich aus mehreren Tests besteht. Sie müssen sich vor versehentlich gut aussehenden Parametersätzen schützen.
quelle
...If you observe a large variation between the cross validation models (with the same parameters), then your models are unstable. In that case, aggregating the models can help...
Können Sie das etwas näher erläutern? Wenn ich z. B. eine logistische Regression in einem 10-k-Cross-validierten Setup durchführe und am Ende 10 Koeffizientensätze erhalte, empfehlen Sie, die Koeffizientenschätzungen zu einem endgültigen Modell zu aggregieren? Wenn ja, wie kann dies mit den Mitteln geschehen?If the d.f. are actually appropriate for the cross validation models
. Nach meinem Verständnis argumentieren Sie, dass die Zug- / Validierungssätze im Vergleich zum gesamten Datensatz nicht sehr groß sind. Stimmt das?Was Sie tun, ist keine Kreuzvalidierung, sondern eine Art stochastische Optimierung.
Die Idee von CV ist es, eine Leistung an unsichtbaren Daten zu simulieren, indem mehrere Runden des Aufbaus des Modells auf einer Teilmenge von Objekten und des Testens an den verbleibenden Objekten durchgeführt werden. Die etwas gemittelten Ergebnisse aller Runden sind die Näherungswerte für die Leistung eines am gesamten Satz trainierten Modells .
Bei der Modellauswahl sollten Sie für jeden Parametersatz einen vollständigen Lebenslauf erstellen und somit für jedes Setup eine Leistungsannäherung für den gesamten Satz erhalten, so wie Sie es sich anscheinend gewünscht haben.
Beachten Sie jedoch, dass keineswegs garantiert werden kann, dass das Modell mit der bestmöglichen approximierten Genauigkeit tatsächlich das beste Modell ist. Sie können das gesamte Modellauswahlverfahren durch Kreuzvalidierung überprüfen, um festzustellen, dass im Parameterraum ein bestimmter Bereich vorhanden ist, in dem die Unterschiede bestehen Modellgenauigkeiten sind nicht signifikant.
quelle