Warum nur drei Partitionen? (Training, Validierung, Test)

61

Wenn Sie versuchen, Modelle an ein großes Dataset anzupassen, besteht der allgemeine Rat darin, die Daten in drei Teile zu unterteilen: das Training, die Validierung und das Test-Dataset.

Dies liegt daran, dass die Modelle normalerweise drei "Parameterebenen" haben: Der erste "Parameter" ist die Modellklasse (z. B. SVM, neuronales Netzwerk, zufällige Gesamtstruktur), der zweite Parametersatz sind die "Regularisierungs" -Parameter oder "Hyperparameter" ( (zB Lasso-Strafkoeffizient, Wahl des Kernels, neuronale Netzwerkstruktur) und die dritte Menge werden üblicherweise als "Parameter" angesehen (zB Koeffizienten für die Kovariaten).

Bei einer gegebenen Modellklasse und einer Auswahl von Hyperparametern wählt man die Parameter aus, indem man die Parameter auswählt, die den Fehler auf dem Trainingssatz minimieren. Bei einer gegebenen Modellklasse werden die Hyperparameter durch Minimieren von Fehlern im Validierungssatz optimiert. Man wählt die Modellklasse nach Leistung auf dem Testset.

Aber warum nicht mehr Partitionen? Oft kann man die Hyperparameter in zwei Gruppen aufteilen und eine "Validierung 1" für die erste und eine "Validierung 2" für die zweite verwenden. Oder man könnte sogar die Größe der aufgeteilten Trainingsdaten / Validierungsdaten als einen zu stimmenden Hyperparameter behandeln.

Ist dies in einigen Anwendungen bereits gängige Praxis? Gibt es theoretische Arbeiten zur optimalen Aufteilung von Daten?

charles.y.zheng
quelle

Antworten:

79

Erstens denke ich, dass Sie sich irren, was die drei Partitionen bewirken. Sie treffen keine Auswahl basierend auf den Testdaten. Ihre Algorithmen passen ihre Parameter basierend auf den Trainingsdaten an. Anschließend führen Sie sie anhand der Validierungsdaten aus, um Ihre Algorithmen (und ihre trainierten Parameter) zu vergleichen und einen Gewinner zu bestimmen. Anschließend führen Sie den Gewinner anhand Ihrer Testdaten aus, um eine Prognose zu erhalten, wie gut sie in der realen Welt abschneiden werden.

Sie können die Trainingsdaten nicht validieren, da dies zu einer Überanpassung Ihrer Modelle führen würde. Sie hören nicht bei der Punktzahl des Siegers des Validierungsschritts auf, weil Sie iterativ die Dinge angepasst haben, um einen Sieger im Validierungsschritt zu erhalten, und deshalb benötigen Sie einen unabhängigen Test (auf den Sie sich nicht speziell eingestellt haben), um eine zu erhalten Vorstellung davon, wie gut Sie sich außerhalb der aktuellen Arena schlagen werden.

Zweitens würde ich denken, dass ein einschränkender Faktor hier ist, wie viel Daten Sie haben. In den meisten Fällen möchten wir die Daten nicht einmal in feste Partitionen aufteilen, daher CV.

Wayne
quelle
2
Das konzeptionelle Problem, das ich hatte, ist, dass, wenn Sie genügend Modelle vergleichen, Sie effektiv auf die Validierungsdaten passen, wenn Sie anhand der Validierungsdaten "über einen Gewinner entscheiden". Daher kann es immer noch sinnvoll sein, die Validierungsdaten zu partitionieren.
charles.y.zheng
Ich denke, dass der Trainings-Validierungs-Layer und der Validierungs-Test-Layer in gewisser Weise unterschiedlichen Zwecken dienen und dass Sie eventuell Modelle auf einem gemeinsamen Validierungs-Set vergleichen müssen, um einen Gewinner zu ermitteln. Ich bin mir also nicht sicher, ob zusätzliche Ebenen helfen. (Obwohl mein Wissen nicht tief genug ist, um es wirklich zu wissen.) Das, was ich Ihrem Vorschlag am nächsten bringen kann, ist, wie der Netflix-Wettbewerb durchgeführt wurde. Ich glaube, sie haben teilweise Testsets verwendet, um Teams davon abzuhalten, den Gradienten der Testsets zu überwinden, aber ich denke, das ist anders.
Wayne
2
@ user10882, dein Kommentar ist nicht korrekt, Firebugs auch nicht. Sowohl die (1) Modellparameter (Gewichte, Schwellenwerte) als auch die (2) sogenannten "Hyper" -Parameter (Anzahl der verborgenen Schichten, Anzahl der Entscheidungsbäume) können sehr unterschiedlich interpretiert und empfunden werden, sind jedoch allesamt nur Parameter, die zwischen verschiedenen unterscheiden Modelle . Verwenden Sie die Trainingsdaten, um sie alle zu optimieren, verwenden Sie die Validierungsdaten, um eine Überanpassung zu vermeiden, und verwenden Sie die Kreuzvalidierung, um sicherzustellen, dass Ihre Ergebnisse stabil sind. Die Testdaten dienen nur zur Angabe der erwarteten Leistung Ihres Modells, nicht zur Annahme / Ablehnung.
Ytsen de Boer
1
n
1
@YtsendeBoer: Fair genug - wenn Sie etw wie validierungsbasiertes vorzeitiges Stoppen verwenden, bin ich damit einverstanden, dass die Grenzen zumindest im Hinblick auf das Optimierungsverfahren verschwimmen. Meines Erachtens verschmilzt das Konzept eines "Hyperparameters" jedoch nicht vollständig mit dem eines regulären Parameters. Es gibt immer noch viele Situationen, in denen sie unterschiedlich behandelt werden, und ich sehe sie auch in Bezug auf ihre Rolle bei der Definition eines Modells anders. Wie auch immer, ich hoffe, diese Diskussion hat anderen geholfen, die (subtilen) Unterschiede und Ähnlichkeiten zwischen diesen Konzepten zu veranschaulichen =).
Ruben van Bergen
0

Dies ist eine interessante Frage, und ich fand sie hilfreich bei der Antwort von @Wayne.

Nach meinem Verständnis hängt die Aufteilung des Datensatzes in verschiedene Partitionen vom Zweck des Autors und den Anforderungen des Modells in der Praxis ab.

Normalerweise haben wir zwei Datensätze: Training und Testen. Das Training wird verwendet, um die Parameter der Modelle zu finden oder um die Modelle anzupassen. Der Test wird verwendet, um die Leistung des Modells in unsichtbaren Daten (oder realen Daten) zu bewerten.

Wenn wir nur einen Schritt im Training machen, ist es offensichtlich, dass es ein Training und einen Test- (oder Validierungs-) Prozess gibt.

Auf diese Weise kann jedoch das Problem der Überanpassung auftreten, wenn das Modell einmal mit einem Datensatz trainiert wird. Dies kann zu einer Instabilität des Modells in der realen Welt führen. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, das Modell im Trainingsdatensatz einer Kreuzvalidierung (CV) zu unterziehen. Das heißt, wir teilen den Trainingsdatensatz in verschiedene Faltungen auf, behalten eine Faltung zum Testen des mit anderen Faltungen trainierten Modells bei. Der Gewinner ist nun derjenige, der im gesamten CV-Prozess einen minimalen Verlust (basierend auf unserer eigenen Zielfunktion) erzielt. Auf diese Weise können wir sicherstellen, dass das Risiko einer Überanpassung im Trainingsprozess minimiert wird, und den richtigen Gewinner auswählen. Das Testset wird erneut verwendet, um den Gewinner in den unsichtbaren Daten zu bewerten.

Dao Vu Hoang
quelle