Ich fand das verwirrend, wenn ich die Toolbox für neuronale Netze in Matlab verwende.
Der Rohdatensatz wurde in drei Teile geteilt:
- Trainingsset
- Validierungssatz
- Test-Set
Ich stelle bei vielen Trainings- oder Lernalgorithmen fest, dass die Daten häufig in zwei Teile unterteilt sind, den Trainingssatz und den Testsatz.
Meine Fragen sind:
- Was ist der Unterschied zwischen Validierungs- und Test-Set?
- Ist der Validierungssatz wirklich spezifisch für das neuronale Netzwerk? Oder es ist optional.
- Gibt es einen Unterschied zwischen Validierung und Testen im Zusammenhang mit maschinellem Lernen?
machine-learning
validation
xiaohan2012
quelle
quelle
The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
Antworten:
Normalerweise benötigen Sie zwei Arten von Datensätzen, um überwachtes Lernen durchzuführen:
In einem Datensatz (Ihrem "Goldstandard") haben Sie die Eingabedaten zusammen mit der korrekten / erwarteten Ausgabe. Dieser Datensatz wird normalerweise ordnungsgemäß von Menschen erstellt oder indem einige Daten auf halbautomatische Weise gesammelt werden. Es ist jedoch wichtig, dass Sie für jede Datenzeile hier die erwartete Ausgabe haben, da Sie diese für überwachtes Lernen benötigen.
Die Daten, auf die Sie Ihr Modell anwenden möchten. In vielen Fällen sind dies die Daten, an denen Sie für die Ausgabe Ihres Modells interessiert sind und daher haben Sie hier noch keine "erwartete" Ausgabe.
Während Sie maschinelles Lernen durchführen, gehen Sie wie folgt vor:
Die Validierungsphase besteht häufig aus zwei Teilen :
Daher die Trennung zu 50/25/25.
Falls Sie nicht aus mehreren konkurrierenden Ansätzen ein geeignetes Modell auswählen müssen, können Sie Ihr Set einfach neu partitionieren, da Sie im Grunde nur Trainings- und Test-Sets haben, ohne die Validierung Ihres trainierten Modells durchzuführen. Ich persönlich teile sie dann auf 70/30.
Siehe auch diese Frage .
quelle
Trainingsset: Eine Reihe von Beispielen, die zum Lernen verwendet werden: um die Parameter des Klassifikators anzupassen. Im Fall von Multilayer Perceptron (MLP) würden wir das Trainingsset verwenden, um die „optimalen“ Gewichte mit der Backprop-Regel zu finden
Validierungssatz: eine Reihe von Beispielen zur Optimierung der Parameter eines Klassifikators Im MLP-Fall würden wir den Validierungssatz verwenden, um die „optimale“ Anzahl von versteckten Einheiten zu ermitteln oder einen Haltepunkt für den Backpropagation-Algorithmus zu bestimmen
Testset: Eine Reihe von Beispielen, die nur zur Beurteilung der Leistung eines voll ausgebildeten Klassifikators verwendet werden. Im MLP-Fall würden wir den Test verwenden, um die Fehlerrate zu schätzen, nachdem wir das endgültige Modell (MLP-Größe und tatsächliches Gewicht) ausgewählt haben das endgültige Modell auf dem Test-Set, Sie dürfen das Modell nicht weiter abstimmen!
Warum separate Test- und Validierungssätze? Die Fehlerratenschätzung des endgültigen Modells anhand der Validierungsdaten ist verzerrt (kleiner als die tatsächliche Fehlerrate), da der Validierungssatz zur Auswahl des endgültigen Modells verwendet wird. Nach der Bewertung des endgültigen Modells anhand des Testsatzes DÜRFEN SIE KEINE Anpassungen am Modell vornehmen des Weiteren!
Quelle: Einführung in die Musteranalyse, Ricardo Gutierrez-OsunaTexas A & M University, Texas A & M University
quelle
Meine 5-jährige Erfahrung in der Informatik hat mich gelehrt, dass nichts besser ist als Einfachheit.
Das Konzept der Datensätze "Training / Cross-Validation / Test" ist so einfach. Wenn Sie einen großen Datensatz haben, wird empfohlen, ihn in drei Teile zu teilen:
++ Trainingssatz (60% des Originaldatensatzes): Dieser dient zum Aufbau unseres Vorhersagealgorithmus. Unser Algorithmus versucht, sich auf die Macken der Trainingsdatensätze abzustimmen. In dieser Phase erstellen wir normalerweise mehrere Algorithmen, um deren Leistung während der Cross-Validation-Phase zu vergleichen.
++ Cross-Validation-Satz (20% des ursprünglichen Datensatzes): Dieser Datensatz wird zum Vergleichen der Leistungen der Vorhersagealgorithmen verwendet, die auf der Grundlage des Trainingssatzes erstellt wurden. Wir wählen den Algorithmus mit der besten Leistung.
++ Testsatz (20% des Originaldatensatzes): Jetzt haben wir unseren bevorzugten Vorhersagealgorithmus ausgewählt, wissen aber noch nicht, wie er sich auf völlig unsichtbare Daten in der realen Welt auswirkt. Daher wenden wir unseren ausgewählten Vorhersagealgorithmus auf unser Test-Set an, um zu sehen, wie es sich verhält, damit wir eine Vorstellung von der Leistung unseres Algorithmus bei unsichtbaren Daten erhalten.
Anmerkungen:
-Es ist sehr wichtig zu beachten, dass das Überspringen der Testphase nicht empfohlen wird, da der Algorithmus, der während der Kreuzvalidierungsphase gut funktioniert hat, nicht wirklich bedeutet, dass er wirklich der beste ist, da die Algorithmen basierend auf dem Kreuz verglichen werden -Validierungsset und seine Macken und Geräusche ...
-Während der Testphase soll untersucht werden, wie sich unser endgültiges Modell in der Wildnis verhält. Wenn die Leistung also sehr schlecht ist, sollten wir den gesamten Prozess ab der Trainingsphase wiederholen.
quelle
Bei jedem Schritt, bei dem Sie aufgefordert werden, eine Entscheidung zu treffen (dh eine Option unter mehreren Optionen zu wählen), müssen Sie über einen zusätzlichen Satz / eine zusätzliche Partition verfügen, um die Genauigkeit Ihrer Wahl zu messen, damit Sie nicht einfach das günstigste Ergebnis aus Zufall und Zufall auswählen Verwechseln Sie das hintere Ende der Verteilung mit der Mitte 1 . Die Linke ist der Pessimist. Das Recht ist der Optimist. Das Zentrum ist der Pragmatiker. Sei der Pragmatiker.
Schritt 1) Training: Jede Art von Algorithmus verfügt über eigene Parameteroptionen (die Anzahl der Ebenen in einem neuronalen Netzwerk, die Anzahl der Bäume in einem zufälligen Wald usw.). Für jeden Ihrer Algorithmen müssen Sie eine Option auswählen. Deshalb haben Sie ein Trainingsset.
Schritt 2) Validierung: Sie haben jetzt eine Sammlung von Algorithmen. Sie müssen einen Algorithmus auswählen. Deshalb haben Sie ein Test-Set. Die meisten Leute wählen den Algorithmus, der am besten für den Validierungssatz geeignet ist (und das ist in Ordnung). Wenn Sie jedoch die Fehlerrate Ihres leistungsstärksten Algorithmus im Testsatz nicht messen und nur die Fehlerrate im Validierungssatz angeben, haben Sie das „bestmögliche Szenario“ blind für das „wahrscheinlichste Szenario“ gehalten. Das ist ein Rezept für eine Katastrophe.
Schritt 3) Testen: Ich nehme an, dass Sie keinen dritten Schritt benötigen würden, wenn Ihre Algorithmen keine Parameter hätten. In diesem Fall wäre Ihr Validierungsschritt Ihr Testschritt. Vielleicht fragt Matlab Sie nicht nach Parametern oder Sie haben sich dafür entschieden, diese nicht zu verwenden, und das ist die Ursache Ihrer Verwirrung.
1 Es ist oft hilfreich, in jedem Schritt davon auszugehen (Nullhypothese), dass alle Optionen gleich sind (z. B. sind alle Parameter gleich oder alle Algorithmen gleich), daher meine Bezugnahme auf die Verteilung.
2 Dieses Bild ist nicht mein eigenes. Ich habe es von dieser Seite genommen: http://www.teamten.com/lawrence/writings/bell-curve.png
quelle
Daraus folgt nicht, dass Sie die Daten in irgendeiner Weise aufteilen müssen. Der Bootstrap kann kleinere mittlere quadratische Fehlerabschätzungen der Vorhersagegenauigkeit unter Verwendung der gesamten Stichprobe sowohl zum Entwickeln als auch zum Testen des Modells bereitstellen.
quelle
Eine typische maschinelle Lernaufgabe kann als folgende verschachtelte Schleife dargestellt werden:
Typischerweise wird die äußere Schleife vom Menschen am Validierungssatz und die innere Schleife von der Maschine am Trainingssatz ausgeführt . Sie benötigen dann ein drittes Testset , um die endgültige Leistung des Modells zu beurteilen.
Mit anderen Worten, der Validierungssatz ist der Trainingssatz für den Menschen.
quelle
Eine Möglichkeit, an diese drei Mengen zu denken, ist, dass zwei von ihnen (
training
undvalidation
) aus der Vergangenheit stammen, während dietest
Menge aus der "Zukunft" stammt. Das Modell sollte mit Daten aus der "Vergangenheit" (training
/validation
data) erstellt und optimiert werden , jedoch niemals mittest
Daten aus der "Zukunft".Ein praktisches Beispiel: Wir bauen ein Modell auf, um vorherzusagen, wie gut Baseballspieler in Zukunft abschneiden werden. Wir werden Daten aus dem Zeitraum 1899-2014 verwenden, um eine
test
und einevalidation
Menge zu erstellen . Sobald das Modell auf diesen Daten aufgebaut und optimiert ist, werden wir Daten aus dem Jahr 2015 (tatsächlich in der Vergangenheit!) Als Testsatz verwenden, die aus der Perspektive des Modells als "zukünftige" Daten erscheinen und die Modellerstellung in keiner Weise beeinflussen . (Theoretisch könnten wir natürlich auf Daten von 2016 warten, wenn wir wirklich wollen!)Offensichtlich verwende ich überall Anführungszeichen, da die tatsächliche zeitliche Reihenfolge der Daten möglicherweise nicht mit der tatsächlichen Zukunft übereinstimmt (per Definition fand die gesamte Datenerzeugung wahrscheinlich in der tatsächlichen Vergangenheit statt). In Wirklichkeit kann es sich bei der
test
Menge einfach um Daten handeln, die aus demselben Zeitraum stammen wie dietraining
/validation
sets, die Sie "durchhalten". Auf diese Weise hatte es keinen Einfluss auf die Optimierung des Modells, aber diese Daten stammen eigentlich nicht aus der Zukunft.quelle
test
Daten niemals Teil des Trainingsprozesses sein sollten. Wenn wir sie als "zukünftige" Daten behandeln, wird dies zu einem unmöglichen Fehler.Die meisten überwachten Data Mining-Algorithmen folgen diesen drei Schritten:
quelle
Einige Leute haben Verwirrung darüber, warum wir einen Validierungssatz verwenden. Deshalb werde ich eine einfache, intuitive Erklärung geben, was passieren wird, wenn Sie keinen Validierungsdatensatz verwenden.
Wenn Sie keinen Validierungssatz verwenden, müssen Sie stattdessen Hyperparameter auswählen und anhand der Leistung des Modells im Testdatensatz entscheiden, wann das Training beendet werden soll. Wenn Sie basierend auf der Leistung des Modells im Testdatensatz entscheiden, wann Sie das Training beenden möchten, können Sie das Training einfach beenden, wenn das Modell im Testdatensatz zufriedenstellend abschneidet. Wenn Sie dann Ihre Ergebnisse melden, melden Sie die Genauigkeit im Testdatensatz. Das Problem dabei ist, dass Sie sagen können, dass Ihr Modell wirklich gut funktioniert hat, obwohl es sich nur um eine zufällige Variation handelte, die dazu führte, dass es nur im Testsatz besser lief.
Wenn Sie stattdessen einen Validierungssatz verwenden, um zu entscheiden, wann das Training beendet werden soll, spiegelt die Genauigkeit des Modells auf dem Testsatz eher vorurteilsfrei wider, wie gut es die Aufgabe im Allgemeinen erfüllt, und es zeigt, dass Sie das nicht optimiert haben Modell, nur um eine gute Leistung auf dem Testset zu erzielen.
quelle
Ich möchte hier weitere sehr gute Antworten geben, indem ich auf einen relativ neuen Ansatz des maschinellen Lernens verweise, der als "Differential Privacy" bezeichnet wird (siehe Artikel von Dwork; der Win Vector Blog für weitere Informationen ). Die Idee erlaubt es, das Testset tatsächlich wiederzuverwenden, ohne die endgültige Modellleistung zu beeinträchtigen. In einer typischen Einstellung wird der Testsatz nur zur Schätzung der endgültigen Leistung verwendet; idealerweise darf man es nicht einmal anschauen.
Wie in diesem Win Vector-Blog beschrieben (siehe auch andere Einträge), ist es möglich, das Test-Set zu "verwenden", ohne die Leistung des Modells zu beeinträchtigen. Dies geschieht mit dem speziellen Verfahren "Differential Privacy". Der Lernende hat keinen direkten Zugriff auf das Test-Set.
quelle
Meine Idee ist, dass diese Option in der Toolbox für neuronale Netzwerke dazu dient, eine Überanpassung zu vermeiden. In dieser Situation werden die Gewichte nur für die Trainingsdaten angegeben und zeigen nicht den globalen Trend an. Indem ein Validierungssatz festgelegt wird, können die Iterationen dahingehend angepasst werden, wo eine Verringerung des Trainingsdatenfehlers eine Verringerung der Validierungsdaten und eine Erhöhung des Validierungsdatenfehlers verursacht; Zusammen mit einer Verringerung des Trainingsdatenfehlers zeigt dies das Überanpassungsphänomen.
quelle