Über Train-, Validierungs- und Test-Sets beim maschinellen Lernen
On Oktober 17, 2021 by adminDies soll eine kurze Einführung für alle sein, die den Unterschied zwischen den verschiedenen Datensatzaufteilungen beim Training von Machine Learning-Modellen kennen müssen.
Für diesen Artikel zitiere ich die grundlegenden Definitionen aus Jason Brownlees exzellentem Artikel zum selben Thema, er ist ziemlich umfassend, sehen Sie ihn sich für weitere Details an.
Trainingsdatensatz: Der Datensatz, der zum Anpassen des Modells verwendet wird.
Der eigentliche Datensatz, der zum Trainieren des Modells verwendet wird (Gewichte und Verzerrungen im Falle eines neuronalen Netzes). Das Modell sieht und lernt von diesen Daten.
Validierungsdatensatz
Validierungsdatensatz: Die Datenstichprobe, die verwendet wird, um eine unvoreingenommene Bewertung der Anpassung eines Modells an den Trainingsdatensatz zu ermöglichen, während die Hyperparameter des Modells abgestimmt werden. Die Bewertung wird umso voreingenommener, je mehr Wissen über den Validierungsdatensatz in die Modellkonfiguration einfließt.
Der Validierungsdatensatz wird verwendet, um ein bestimmtes Modell zu bewerten, aber nur zur häufigen Bewertung. Wir, die Ingenieure des maschinellen Lernens, verwenden diese Daten zur Feinabstimmung der Hyperparameter des Modells. Das Modell sieht also gelegentlich diese Daten, aber es „lernt“ nie daraus. Wir verwenden die Ergebnisse des Validierungssatzes und aktualisieren Hyperparameter auf höherer Ebene. Der Validierungssatz wirkt sich also auf ein Modell aus, allerdings nur indirekt. Der Validierungssatz wird auch als Dev-Set oder Development-Set bezeichnet. Dies ist sinnvoll, da dieser Datensatz in der „Entwicklungsphase“ des Modells hilft.
Testdatensatz
Testdatensatz: Die Datenstichprobe, die verwendet wird, um eine unvoreingenommene Bewertung der endgültigen Anpassung des Modells an den Trainingsdatensatz vorzunehmen.
Der Testdatensatz stellt den Goldstandard für die Bewertung des Modells dar. Er wird erst verwendet, wenn ein Modell vollständig trainiert wurde (unter Verwendung der Trainings- und Validierungssätze). Der Testdatensatz wird im Allgemeinen verwendet, um konkurrierende Modelle zu bewerten (bei vielen Kaggle-Wettbewerben wird der Validierungsdatensatz zunächst zusammen mit dem Trainingsdatensatz veröffentlicht, während der eigentliche Testdatensatz erst kurz vor dem Ende des Wettbewerbs freigegeben wird und das Ergebnis des Modells auf dem Testdatensatz über den Gewinner entscheidet). Häufig wird der Validierungssatz als Testsatz verwendet, was jedoch keine gute Praxis ist. Der Testsatz ist im Allgemeinen gut kuratiert. Er enthält sorgfältig ausgewählte Daten, die die verschiedenen Klassen abdecken, mit denen das Modell in der realen Welt konfrontiert wäre.
Über das Verhältnis zwischen den Datensätzen
Nachdem Sie nun wissen, was diese Datensätze tun, suchen Sie vielleicht nach Empfehlungen, wie Sie Ihren Datensatz in Train-, Validierungs- und Test-Sets aufteilen können.
Dies hängt hauptsächlich von 2 Dingen ab. Erstens von der Gesamtzahl der Stichproben in Ihren Daten und zweitens von dem eigentlichen Modell, das Sie trainieren.
Einige Modelle benötigen umfangreiche Daten zum Trainieren, so dass Sie in diesem Fall für größere Trainingssätze optimieren würden. Modelle mit sehr wenigen Hyperparametern sind leicht zu validieren und einzustellen, so dass Sie wahrscheinlich die Größe Ihres Validierungssatzes reduzieren können, aber wenn Ihr Modell viele Hyperparameter hat, würden Sie auch einen großen Validierungssatz haben wollen (obwohl Sie auch eine Kreuzvalidierung in Betracht ziehen sollten). Wenn Sie ein Modell ohne Hyperparameter oder mit Parametern haben, die nicht leicht angepasst werden können, brauchen Sie wahrscheinlich auch kein Validierungsset!
Alles in allem, wie viele andere Dinge beim maschinellen Lernen, ist auch das Verhältnis zwischen Training, Test und Validierung sehr spezifisch für Ihren Anwendungsfall und es wird einfacher, es zu beurteilen, wenn Sie mehr und mehr Modelle trainieren und erstellen.
Hinweis zur Kreuzvalidierung: Häufig wird der Datensatz zunächst in 2 Teile aufgeteilt – Train und Test. Danach wird der Testdatensatz beiseite gelegt und zufällig X% des Trainingsdatensatzes als Trainingsdatensatz und der verbleibende (100-X)% als Validierungsdatensatz ausgewählt, wobei X eine feste Zahl ist (z.B. 80%), das Modell wird dann iterativ auf diesen verschiedenen Datensätzen trainiert und validiert. Es gibt mehrere Möglichkeiten, dies zu tun, und ist allgemein als Kreuzvalidierung bekannt. Im Grunde genommen verwenden Sie Ihre Trainingsmenge, um mehrere Splits der Trainings- und Validierungsmengen zu erzeugen. Die Kreuzvalidierung vermeidet eine Überanpassung und wird immer beliebter, wobei die K-fache Kreuzvalidierung die beliebteste Methode der Kreuzvalidierung ist. Hier finden Sie weitere Informationen.
Schreibe einen Kommentar