Warum das Aufteilen der Daten in das Trainings- und Test-Set nicht ausreicht


18

Ich weiß, dass ich die Daten in Trainings- / Testsätze aufteilen muss, um auf die Leistung des Klassifikators zugreifen zu können. Aber dies zu lesen :

Bei der Auswertung verschiedener Einstellungen („Hyperparameter“) für Schätzer, z. B. der C-Einstellung, die für eine SVM manuell festgelegt werden muss, besteht weiterhin die Gefahr einer Überanpassung des Testsets, da die Parameter so lange angepasst werden können, bis der Schätzer eine optimale Leistung erbringt. Auf diese Weise kann das Wissen über den Testsatz in das Modell „eindringen“, und Auswertungsmetriken geben keinen Hinweis mehr auf die Generalisierungsleistung. Um dieses Problem zu lösen, kann ein weiterer Teil des Datensatzes als sogenannter "Validierungssatz" ausgegeben werden: Das Training wird mit dem Trainingssatz fortgesetzt, wonach die Auswertung mit dem Validierungssatz erfolgt und wann das Experiment erfolgreich zu sein scheint Die endgültige Bewertung kann am Testgerät vorgenommen werden.

Ich sehe, dass ein weiterer (dritter) Validierungssatz eingeführt wird, der durch eine Überanpassung des Testsatzes während der Hyperparametertuning gerechtfertigt ist.

Das Problem ist, dass ich nicht verstehen kann, wie diese Überanpassung aussehen kann und daher die Rechtfertigung der dritten Menge nicht verstehen kann.


2
Ich denke, viele der Verwirrungen hier kommen von 2 oder 3 verschiedenen Bedeutungen des Begriffs "Validierung". Die Validierung bei der Kreuzvalidierung ist meist nur eine Bezeichnung für ein Verfahren zum Teilen ohne Ersetzen. Die im zitierten Text festgelegte "Validierung" würde meiner Meinung nach besser als "Tuning" oder "Optimierungssatz" verstanden werden. Während "Validierung" z. B. in der Technik oder auch in der analytischen Chemie bedeutet, zu beweisen, dass eine bestimmte endgültige Methode für ihren Zweck geeignet ist - was durch das "Test" -Set durchgeführt (simuliert, angenähert) wird. (Für mich klingt das Testen viel weniger endgültig als die Validierung ...)
cbeleites unterstützt Monica

Antworten:


17

Auch wenn Sie Modelle ausschließlich anhand der Trainingsdaten trainieren, optimieren Sie Hyperparameter (z. B. für eine SVM) basierend auf dem Testsatz. Daher kann Ihre Leistungsschätzung optimistisch sein, da Sie im Wesentlichen Best-Case-Ergebnisse melden. Wie einige auf dieser Website bereits erwähnt haben, ist die Optimierung die Wurzel allen Übels in der Statistik .C

Leistungsschätzungen sollten immer auf völlig unabhängigen Daten basieren. Wenn Sie einen Aspekt basierend auf Testdaten optimieren, sind Ihre Testdaten nicht mehr unabhängig und Sie benötigen einen Validierungssatz.

Ein anderer Weg, um damit umzugehen, ist die verschachtelte Kreuzvalidierung , die aus zwei umeinander gewickelten Kreuzvalidierungsprozeduren besteht. Die innere Kreuzvalidierung wird beim Optimieren verwendet (um die Leistung eines gegebenen Satzes von optimierten Hyperparametern abzuschätzen) und die äußere Kreuzvalidierung schätzt die Generalisierungsleistung der gesamten Pipeline für maschinelles Lernen (dh Optimieren von Hyperparametern + Trainieren des endgültigen Modells) ).


Ich könnte mich irren, aber der Test dient nicht nur zum Optimieren von Hyperparametern, sondern auch zum Vergleichen verschiedener Arten von Techniken, wie z. B. der Leistung von SVM im Vergleich zu LDA oder zufälligen Gesamtstrukturen, wie ich in meiner Antwort angegeben habe.

@fcoppens Ja, auf jeden Fall. Ich habe dies nicht ausdrücklich erwähnt, aber das passt sicherlich auch in diesen Schritt.
Marc Claesen

1
Im Allgemeinen ist Tuning oder Optimierung hier jede Art von datengesteuertem Prozess (durch die innere Kreuzvalidierung).
cbeleites unterstützt Monica

@MarcClaesen Ich habe eine Frage. Wenn ich 2 verschiedene Werte des Hyperparameters habe und diese 2 Modelle in den Trainingssatz einsetze, dann wende ich sie auf den Testsatz an, dann sollte die Fehlerrate, die ich im Testsatz erhalten habe, ein unverzerrter Schätzer für die wahre Vorhersagefehlerrate von sein diese 2 Modelle? Wenn Sie mir jetzt einen anderen unabhängigen Testdatensatz geben, ist dieser neue Testdatensatz im Wesentlichen derselbe wie der vorherige Testsatz. Wenn ein Modell also bessere Testergebnisse aufweist, sollte es auch das andere Modell in einem neuen Testdatensatz übertreffen. Warum brauchen wir ein Validierungsset?
KevinKim

"Wenn Sie einen Aspekt basierend auf Testdaten optimieren, sind Ihre Testdaten nicht mehr unabhängig und Sie benötigen einen Validierungssatz." das ist aufschlussreich
Sudip Bhandari

11

Ich denke, es ist am einfachsten, sich die Dinge so vorzustellen. Es gibt zwei Dinge, für die eine Kreuzvalidierung verwendet wird: das Optimieren der Hyperparameter eines Modells / Algorithmus und das Bewerten der Leistung eines Modells / Algorithmus.

Betrachten Sie die erste Verwendung als Teil des tatsächlichen Trainings des Algorithmus. Zum Beispiel ist eine Kreuzvalidierung zur Bestimmung der Regularisierungsstärke für einen GLM Teil der Ermittlung des Endergebnisses des GLM. Diese Verwendung wird normalerweise als interne Kreuzvalidierung bezeichnet . Da immer noch (Hyper-) Parameter eingestellt werden, ist der Verlust des Tuning-Sets kein gutes Maß für die tatsächliche Leistung des Algorithmus.

Die zweite Möglichkeit der Kreuzvalidierung besteht darin, Daten zu verwenden, die aus dem gesamten Prozess stammen, aus dem das Modell stammt, um seine Vorhersagekraft zu testen. Dieser Prozess wird als externe Quervalidierung bezeichnet .

Beachten Sie, dass die interne Validierung möglicherweise Teil des Prozesses war, der das Modell erstellt hat, sodass in vielen Fällen sowohl die interne als auch die externe Kreuzvalidierung erforderlich sind.


Persönlich würde ich den Begriff „externe Kreuzvalidierung“ nicht, wie ich sieht , würde Quervalidierung als wiederholte Abspaltung verschiedenen Validierungssätze aus dem Trainingssatz für die Modellauswahl und Tuning - Zwecke. Dies kann mit dem Testset nicht sinnvoll wiederholt werden, da dies ein einmaliger Proxy für zukünftige, noch unbekannte Daten ist, die zur Beurteilung der Leistung des endgültigen Modells verwendet werden.
Henry

3
Henry, ich glaube nicht, dass Sie externe Kreuzvalidierung verstehen. Sie können dies "wiederholt mit dem Test-Set durchführen", indem Sie wiederholt einen Teil Ihrer vollständigen Daten für Testzwecke bereithalten, während Sie im Übrigen Ihr vollständiges Trainingsverfahren ausführen (einschließlich der internen Kreuzvalidierung). Die externe Kreuzvalidierung wird in der Regel immer noch in Falten durchgeführt und ermöglicht, dass sich alle Originaldaten zu einem bestimmten Zeitpunkt im Testsatz befinden.
Jlimahaverford

αα

2

Während des Modellbaus trainieren Sie Ihre Modelle an einem Trainingsmuster . Beachten Sie, dass Sie verschiedene Modelle trainieren können (dh verschiedene Techniken wie SVM, LDA, Random Forest, ... oder dieselbe Technik mit unterschiedlichen Werten der Tuning-Parameter oder einer Mischung).

Unter allen verschiedenen Modellen, die Sie trainiert haben, müssen Sie eines auswählen. Daher verwenden Sie das Validierungsmuster , um das mit dem geringsten Fehler auf dem Testmuster zu finden.

Für dieses "endgültige" Modell müssen wir den Fehler noch abschätzen und verwenden daher das Testmuster .


1
Ich würde den Wortlaut in Ihrem zweiten und dritten Absatz umkehren: Ich würde den Validierungssatz verwenden, um das beste Modell zu finden und seine Hyperparameter abzustimmen (indem ich dies mit mehreren Validierungssätzen tue, welche Partition der Trainingssatz für diese Kreuzvalidierung verwendet ) und sobald das Modell hat Wurde der Test abgeschlossen, wenden Sie ihn auf das Testset an, um ein Beispiel für die Out-of-Sample-Leistung des Modells zu erhalten.
Henry

@Henry: OK Henry, ich denke, die Bezeichnungen der Phasen sind weniger wichtig als ihre Reihenfolge / ihr Inhalt, aber deine Bemerkung macht für mich Sinn, ich werde den Text editieren, danke (+1)

1

Durch die Kreuzvalidierung wird das Problem der Überanpassung bei der Modellauswahl nicht vollständig gelöst, sondern nur reduziert. Der Kreuzvalidierungsfehler hängt von dem von Ihnen verwendeten Datensatz ab. Je kleiner der Datensatz ist, desto höher ist der Kreuzvalidierungsfehler.

Wenn Sie bei der Modellauswahl über große Freiheitsgrade verfügen, besteht außerdem die Gefahr, dass das Modell eine schlechte Leistung erbringt, da das Kreuzvalidierungskriterium überbewertet wird.

Wenn also die Daten in zwei Sätze aufgeteilt werden, auch Trainings- und Testsätze genannt, erfolgt die Aufteilung statisch. Es besteht also die Möglichkeit, dass das Trainingsset überarbeitet wird. Die Kreuzvalidierungssätze werden jedoch mit verschiedenen Methoden erstellt , wie z. B. der k-fachen Kreuzvalidierung, der Ein-Kreuz-Auslass-Validierung (LOOCV) usw., wodurch sichergestellt wird, dass die Belohnung für die exakte Anpassung des 2-Satz-Split eliminiert wird und somit wird die Wahrscheinlichkeit einer Überanpassung verringert.

Dies sind einige Ressourcen, die Ihnen helfen, besser zu verstehen.

Eine Kreuzvalidierung würde Ihnen also helfen, wenn Sie einen größeren als einen kleineren Datensatz haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.