Datasets: Ursprüngliches Dataset unterteilen

Bei allen guten Softwareentwicklungsprojekten wird viel Energie darauf verwendet, die Apps zu testen. Wir empfehlen außerdem dringend, Ihr ML-Modell zu testen, um die Richtigkeit seiner Vorhersagen zu bestimmen.

Trainings-, Validierungs- und Testsätze

Sie sollten ein Modell mit anderen Beispielen testen als denjenigen, die zum Trainieren des Modells verwendet wurden. Wie Sie etwas später erfahren, ist ein Test mit verschiedenen Beispielen ein stärkerer Nachweis für die Eignung Ihres Modells als ein Test mit denselben Beispielen. Woher bekommen Sie diese verschiedenen Beispiele? Beim herkömmlichen maschinellen Lernen werden diese verschiedenen Beispiele durch Aufteilen des ursprünglichen Datasets gewonnen. Sie könnten daher davon ausgehen, dass Sie den ursprünglichen Datensatz in zwei Teilmengen aufteilen sollten:

  • Ein Trainingssatz, mit dem das Modell trainiert wird.
  • Einen Testsatz zur Bewertung des trainierten Modells.
Abbildung 8. Eine horizontale Leiste, die in zwei Teile unterteilt ist: ~ 80% davon sind das Trainingsset und ~ 20% das Testset.
Abbildung 8 Nicht optimal aufgeteilt.

 

Übung: Intuition überprüfen

Angenommen, Sie trainieren mit dem Trainings- und bewerten mit dem Test-Dataset über mehrere Runden hinweg. In jeder Runde verwenden Sie die Ergebnisse des Testsatzes, um die Hyperparameter und die Funktionsgruppe zu aktualisieren. Sehen Sie etwas Falsches an diesem Ansatz? Wählen Sie nur eine Antwort aus.
Dieser Ansatz ist in Ordnung. Schließlich trainieren Sie mit dem Trainingssatz und bewerten mit einem separaten Testsatz.
Wenn Sie dieses Verfahren mehrmals wiederholen, kann das Modell implizit an die Besonderheiten des Test-Datasets angepasst werden.
Dieser Ansatz ist rechenintensiv. Ändern Sie die Hyperparameter oder Funktionsgruppen nicht nach jeder Testrunde.

Die Aufteilung des Datasets in zwei Sets ist eine gute Idee, aber es ist besser, den Datensatz in drei Teilmengen aufzuteilen. Zusätzlich zum Trainings- und Testsatz gibt es einen dritten Teilsatz:

  • Mit einem Validierungs-Dataset werden die ersten Tests am Modell durchgeführt, während es trainiert wird.
Abbildung 9. Eine horizontale Leiste, die in drei Teile unterteilt ist: 70% für den Trainingssatz, 15% für den Validierungssatz und 15 % für den Testsatz
Abbildung 9 Eine viel bessere Aufteilung.

Verwenden Sie den Validierungssatz, um die Ergebnisse aus dem Trainingssatz zu bewerten. Wenn der Validierungssatz wiederholt gute Vorhersagen liefert, können Sie Ihr Modell mit dem Testsatz noch einmal überprüfen.

Die folgende Abbildung zeigt diesen Workflow. In der Abbildung bedeutet „Modell optimieren“, dass alle Aspekte des Modells angepasst werden, z. B. die Lernrate, das Hinzufügen oder Entfernen von Funktionen oder das Entwerfen eines komplett neuen Modells.

Abbildung 10. Ein Workflow-Diagramm mit den folgenden Phasen:
            1. Trainieren Sie das Modell mit dem Trainingssatz.
            2. Modell anhand des Validierungs-Datasets bewerten
            3. Passen Sie das Modell anhand der Ergebnisse des Validierungs-Datasets an.
            4. Wiederholen Sie die Schritte 1, 2 und 3 und wählen Sie am Ende das Modell aus, das im Validierungs-Dataset die beste Leistung erzielt.
            5. Bestätigen Sie die Ergebnisse im Testsatz.
Abbildung 10: Ein guter Workflow für Entwicklung und Tests.

Der in Abbildung 10 dargestellte Workflow ist optimal, aber selbst bei diesem Workflow „verschleißen“ Test- und Validierungssätze bei wiederholter Verwendung. Je häufiger Sie dieselben Daten verwenden, um Entscheidungen über Hyperparametereinstellungen oder andere Modellverbesserungen zu treffen, desto geringer ist die Wahrscheinlichkeit, dass das Modell gute Vorhersagen für neue Daten trifft. Aus diesem Grund ist es empfehlenswert, mehr Daten zu erheben, um den Test- und Validierungssatz zu „aktualisieren“. Ein Neustart ist eine gute Möglichkeit, einen Neuanfang zu machen.

Übung: Ihre Intuition überprüfen

Sie haben alle Beispiele im Dataset zufällig gemischt und die gemischten Beispiele in Trainings-, Validierungs- und Testsätze aufgeteilt. Der Verlustwert in Ihrem Test-Dataset ist jedoch so unglaublich niedrig, dass Sie einen Fehler vermuten. Was könnte das Problem sein?
Viele der Beispiele im Testsatz sind Duplikate von Beispielen im Trainingssatz.
Der Testsatz enthielt zufällig Beispiele, bei denen das Modell eine gute Leistung erbrachte.
Training und Tests sind nicht deterministisch. Manchmal ist der Testverlust zufällig sehr gering. Wiederholen Sie den Test, um das Ergebnis zu bestätigen.

Weitere Probleme mit Testgruppen

Wie die vorherige Frage zeigt, können doppelte Beispiele die Modellbewertung beeinträchtigen. Nachdem Sie ein Dataset in Trainings-, Validierungs- und Test-Datasets aufgeteilt haben, löschen Sie alle Beispiele im Validierungs- oder Test-Dataset, die Duplikate von Beispielen im Trainings-Dataset sind. Der einzige faire Test eines Modells ist der Test mit neuen Beispielen, nicht mit Duplikaten.

Angenommen, Sie haben ein Modell, das vorhersagt, ob eine E-Mail Spam ist. Als Features werden die Betreffzeile, der E-Mail-Text und die E-Mail-Adresse des Absenders verwendet. Angenommen, Sie teilen die Daten in Trainings- und Testsätze mit einer 80:20-Aufteilung auf. Nach dem Training erreicht das Modell eine Genauigkeit von 99% sowohl für das Trainings- als auch für das Test-Set. Sie würden wahrscheinlich eine geringere Genauigkeit für den Testsatz erwarten. Sie sehen sich die Daten noch einmal an und stellen fest, dass viele der Beispiele im Testsatz Duplikate von Beispielen im Trainingssatz sind. Das Problem ist, dass Sie vor dem Aufteilen der Daten keine doppelten Einträge für dieselbe Spam-E-Mail aus Ihrer Eingabedatenbank entfernt haben. Sie haben versehentlich einige Ihrer Testdaten für das Training verwendet.

Zusammenfassend erfüllt ein guter Test- oder Validierungssatz alle folgenden Kriterien:

  • Sie muss groß genug sein, um statistisch signifikante Testergebnisse zu liefern.
  • Repräsentativ für den gesamten Datensatz. Mit anderen Worten: Wählen Sie kein Test-Dataset mit anderen Merkmalen als das Trainings-Dataset aus.
  • Sie repräsentieren die realen Daten, die dem Modell im Rahmen seines Geschäftszwecks begegnen werden.
  • Im Trainingssatz sind keine duplizierten Beispiele vorhanden.

Übungen: Wissen testen

Welche der folgenden Aussagen ist für einen einzelnen Datensatz mit einer festen Anzahl von Beispielen richtig?
Die Anzahl der Beispiele im Testsatz muss größer sein als die Anzahl der Beispiele im Validierungs- oder Trainingssatz.
Die Anzahl der Beispiele im Testsatz muss größer als die Anzahl der Beispiele im Validierungssatz sein.
Jedes Beispiel, das zum Testen des Modells verwendet wird, ist ein Beispiel weniger, das zum Trainieren des Modells verwendet wird.
Angenommen, Ihr Testsatz enthält genügend Beispiele, um einen statistisch signifikanten Test durchzuführen. Außerdem führt das Testen mit dem Testsatz zu geringen Verlusten. In der Praxis funktionierte das Modell jedoch nicht gut. Was solltest du tun?
Ermitteln Sie, inwiefern sich der ursprüngliche Datensatz von realen Daten unterscheidet.
Testen Sie noch einmal mit demselben Test-Dataset. Die Testergebnisse könnten eine Anomalie sein.
Wie viele Beispiele sollte der Testsatz enthalten?
Mindestens 15% des ursprünglichen Datasets.
Ausreichend Beispiele, um einen statistisch signifikanten Test durchzuführen.