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.
Übung: Ihre 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.
Wenn Sie dieses Verfahren mehrmals wiederholen, kann das Modell implizit an die Besonderheiten des Test-Datasets angepasst werden.
Ja! Je häufiger Sie denselben Testsatz verwenden, desto wahrscheinlicher ist es, dass das Modell dem Testsatz genau entspricht.
Ähnlich wie ein Lehrer, der „auf den Test hinlernt“, passt das Modell versehentlich an den Testsatz an, was es für das Modell schwieriger machen kann, sich an reale Daten anzupassen.
Dieser Ansatz ist in Ordnung. Schließlich trainieren Sie mit dem Trainings- und bewerten mit einem separaten Test-Dataset.
Es gibt hier ein kleines Problem. Überlegen Sie, was nach und nach schiefgehen könnte.
Dieser Ansatz ist rechenintensiv. Ändern Sie die Hyperparameter oder Funktionsgruppen nicht nach jeder Testrunde.
Häufige Tests sind teuer, aber entscheidend. Häufige Tests sind jedoch weitaus kostengünstiger als zusätzliche Schulungen. Die Optimierung der Hyperparameter und der Funktionen kann die Modellqualität erheblich verbessern. Planen Sie daher immer Zeit und Rechenressourcen für diese Arbeit ein.
Es ist eine gute Idee, den Datensatz in zwei Teile zu teilen. Besser ist es jedoch, 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.
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.
Am Ende dieses Workflows wählen Sie das Modell aus, das im Testsatz die besten Ergebnisse erzielt.
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.
Ja. Das kann bei einem Datensatz mit vielen redundanten Beispielen ein Problem sein. Wir empfehlen dringend, vor dem Testen doppelte Beispiele aus dem Testsatz zu löschen.
Training und Tests sind nicht deterministisch. Manchmal ist der Testverlust zufällig sehr gering. Wiederholen Sie den Test, um das Ergebnis zu bestätigen.
Die Verluste variieren zwar bei jedem Durchlauf ein wenig, sollten aber nicht so stark schwanken, dass Sie glauben, die Lotterie des maschinellen Lernens gewonnen zu haben.
Der Testsatz enthielt zufällig Beispiele, bei denen das Modell eine gute Leistung erbrachte.
Die Beispiele wurden gut gemischt, daher ist dies äußerst unwahrscheinlich.
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 Test-Datasets 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 Testsatz 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 sind repräsentativ für 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?
Jedes Beispiel, das zum Testen des Modells verwendet wird, ist ein Beispiel weniger, das zum Trainieren des Modells verwendet wird.
Die Aufteilung von Beispielen in Trainings-, Test- und Validierungs-Datasets ist ein Nullsummenspiel.
Das ist der zentrale Kompromiss.
Die Anzahl der Beispiele im Testsatz muss größer sein als die Anzahl der Beispiele im Validierungssatz.
Theoretisch sollten der Validierungssatz und der Testsatz dieselbe oder nahezu dieselbe Anzahl von Beispielen enthalten.
Die Anzahl der Beispiele im Testsatz muss größer sein als die Anzahl der Beispiele im Validierungs- oder Trainingssatz.
Die Anzahl der Beispiele im Trainingssatz ist in der Regel größer als die Anzahl der Beispiele im Validierungs- oder Testsatz. Es gibt jedoch keine Prozentanforderungen für die verschiedenen Sets.
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.
Ja. Selbst die besten Datensätze sind nur ein Snapshot der realen Daten. Die zugrunde liegende Ground Truth ändert sich im Laufe der Zeit. Obwohl Ihr Test-Dataset gut genug mit Ihrem Trainings-Dataset übereinstimmt, um eine gute Modellqualität zu vermuten, entspricht Ihr Dataset wahrscheinlich nicht hinreichend den Realdaten.
Möglicherweise müssen Sie das Modell neu trainieren und mit einem neuen Datenpool testen.
Wiederholen Sie den Test mit demselben Test-Dataset. Die Testergebnisse könnten eine Anomalie sein.
Auch wenn ein erneuter Test zu leicht abweichenden Ergebnissen führen kann, ist diese Taktik wahrscheinlich nicht sehr hilfreich.
Wie viele Beispiele sollte der Testsatz enthalten?
Ausreichend Beispiele, um einen statistisch signifikanten Test durchzuführen.
Ja. Wie viele Beispiele sind das? Sie müssen experimentieren.