Mit ganzen Daten meine ich Zug + Test + Validierung
Wenn ich meinen Hyperparameter anhand der Validierungsdaten festgelegt und das Modell anhand der Testdaten ausgewählt habe, ist es nicht besser, ein Modell für die gesamten Daten zu trainieren, damit die Parameter besser trainiert werden, als das Modell nur für die Daten zu trainieren Zugdaten
machine-learning
Apoorva Abhishekh
quelle
quelle
Antworten:
Die Frage steht unter einer falschen Annahme. Viele Menschen tun, was Sie sagen, dass sie "nicht können".
In der Tat, die Rastersuche tut Implementierung in dem weit verbreiteten sklearn Paket genau das. Es sei denn
refit=False
, das endgültige Modell wird unter Verwendung der gesamten Daten neu trainiert.Ich denke, für einige Hyperparameter ist dies möglicherweise nicht sehr wünschenswert, da sie relativ zum Datenvolumen sind. Betrachten Sie beispielsweise die
min_samples_leaf
Vorbeschneidungstaktik für einen Entscheidungsbaum . Wenn Sie über mehr Daten verfügen, wird die Vorbereinigung möglicherweise nicht wie gewünscht ausgeführt.Aber auch hier trainieren die meisten Menschen nach der Kreuzvalidierung die gesamten Daten neu, damit sie das bestmögliche Modell erhalten.
Nachtrag: @NeilSlater sagt weiter unten, dass einige Leute zusätzlich zum Lebenslauf einen Hold-out durchführen. Mit anderen Worten, sie haben eine Aufteilung des Zugtests und führen dann eine Modellauswahl für das Training durch. Ihm zufolge trainieren sie mit dem ursprünglichen Trainingssatz, aber nicht mit dem Testsatz. Der Testsatz wird dann verwendet, um eine endgültige Modellschätzung durchzuführen. Persönlich sehe ich drei Mängel: (a) Es löst nicht das Problem, das ich erwähnt habe, da einige Hyperparameter vom Trainingsvolumen abhängen, da Sie sowieso neu trainieren. (B) Wenn Sie viele Modelle testen, bevorzuge ich anspruchsvollere Methoden wie verschachtelte Kreuzvalidierung, damit keine Daten verschwendet werden, und (c) Hold-out ist eine schreckliche Methode, um zu schließen, wie sich ein Modell verallgemeinert, wenn Sie nur wenige Daten haben.
quelle
refit
Option der GridSearchCV-Funktion. Es passt nicht wieder dazu, durchgehaltene Testdaten einzuschließen (diese Daten werden nicht einmal angezeigt).Ja, du kannst.
Da Testdaten aus einer ähnlichen Verteilung stammen sollen, um Daten zu trainieren, werden Sie Ihr Modell nicht beschädigen. Wenn Sie das Modell richtig trainiert haben, werden Sie keine signifikanten Änderungen feststellen (außer einer besseren Genauigkeitsmetrik für frühere Test- / Validierungsdaten).
Es ist jedoch selten der Fall, dass Testdaten aus genau derselben Verteilung stammen wie Zugdaten. In einem realen Anwendungsfall erhalten Sie möglicherweise eine bessere Generalisierbarkeit Ihres Modells.
quelle
Die Antwort auf diese Frage hängt vom verwendeten Trainingsalgorithmus (Technologie) ab. Zum Beispiel habe ich einige Ansätze in der Ensemble-Klassifizierung gesehen, bei denen am Ende Trainings- und Validierungssätze (aber keine Testsätze) kombiniert werden. Es ist sehr wichtig zu wissen, dass sogar die Validierung hauptsächlich zur Entscheidung der Hyperparameter verwendet wird. Einige dieser Hyperparameter können eine Funktion der für das Training verwendeten Daten sein. Bei der DNN-Validierung, die verwendet wurde, um zu wissen, wann zu stoppen ist, müssen wir wissen, wann zu stoppen ist, da eine Überanpassung auftreten kann, wenn die Parameter (Gewichte) des Netzwerks ständig angepasst werden. Ohne das Validierungsset gehen Sie blind im Trainingsprozess. Wenn Sie jedoch genau die gleiche Anzahl von Iterationen wie zuvor angegeben verwenden, besteht eine hohe Wahrscheinlichkeit, dass Sie von diesen zusätzlichen Beispielen nicht profitieren. Der Testsatz sollte überhaupt nicht berührt werden, wie oben angegeben. Ohne den Testsatz haben Sie keine Methode zur Bewertung Ihres Modells. Dies ist ein Glücksspiel. Sie können KEIN Modell oder keine Lösung liefern, ohne die Genauigkeit der tatsächlichen Datenverteilung (die durch die Testdaten dargestellt wird) abzuschätzen.
quelle