Datasets: Ursprüngliches Dataset unterteilen

Alle guten Softwareentwicklungsprojekte stecken viel Energie in ihre Apps zu testen. Ebenso empfehlen wir Ihnen dringend, Ihre ML-Modell zur Bestimmung der Richtigkeit seiner Vorhersagen.

Trainings-, Validierungs- und Test-Datasets

Sie sollten ein Modell an einem anderen Satz von Beispielen testen das zum Trainieren des Modells verwendet wird. Wie Sie noch lernen werden, etwas später anhand verschiedener Beispiele die Eignung Ihres Modells besser belegen als Tests. für denselben Satz Beispiele. Woher stammen diese verschiedenen Beispiele? Traditionell gibt es beim maschinellen Lernen erhalten Sie diese unterschiedlichen Beispiele, indem Sie das ursprüngliche Dataset aufteilen. Möglicherweise gehen Sie daher davon aus, dass Sie das ursprüngliche Dataset in zwei Teilmengen aufteilen sollten:

Abbildung 8. Ein horizontaler Balken, der in zwei Teile unterteilt ist: von ca. 80% davon
            Trainings-Dataset und ~20% des Test-Datasets.
Abbildung 8: Keine optimale Aufteilung.

 

Übung: Teste deine Intuition

Angenommen, Sie trainieren mit dem Trainings-Dataset und bewerten anhand des Test-Datasets in mehreren Runden. In jeder Runde verwenden Sie die Testergebnisse eine Anleitung zum Aktualisieren von Hyperparametern und dem Feature-Set. Können Sie ein Problem mit diesem Ansatz erkennen? Wählen Sie nur eine Antwort aus.
Wenn Sie diesen Vorgang mehrmals wiederholen, kann das dazu führen, um implizit an die Besonderheiten des Test-Datasets anzupassen.
Ja! Je häufiger Sie dasselbe Test-Dataset verwenden, desto wahrscheinlicher ist es, dass das Modell eng mit dem Test-Dataset übereinstimmt. Wie ein Lehrer, der die Prüfung unterrichtet, das Modell versehentlich zum Test-Dataset passen, was das Modell erschwert an reale Daten anzupassen.
Dieser Ansatz ist in Ordnung. Schließlich trainieren Sie auf dem Trainings-Dataset und die Auswertung anhand eines separaten Test-Datasets.
Tatsächlich gibt es hier ein subtiles Problem. Überlegen Sie, allmählich schief gehen.
Dieser Ansatz ist rechenintensiv. Nicht ändern nach jeder Testrunde Hyperparameter oder Feature-Sets zu ermitteln.
Häufige Tests sind teuer, aber wichtig. Häufig Tests sind weitaus kostengünstiger als zusätzliches Training. Wird optimiert Hyperparameter und das Feature Set Budget von Zeit und Rechenressourcen beim Budget einplanen, um daran zu arbeiten.

Das Dataset in zwei Datasets aufzuteilen, ist zwar eine gute Idee, Ein besserer Ansatz besteht darin, das Dataset in drei Teilmengen zu unterteilen. Neben dem Trainings-Dataset und dem Test-Dataset ist die dritte Teilmenge:

Abbildung 9. Ein horizontaler Balken, der in drei Teile unterteilt ist: 70% davon
            sind das Trainings-Dataset, 15% das Validierungs-Dataset und 15%
            das Test-Dataset
Abbildung 9. Eine viel bessere Aufteilung.

Verwenden Sie das Validierungs-Dataset, um die Ergebnisse des Trainings-Datasets zu bewerten. Nach wiederholter Verwendung des Validierungs-Datasets ist es wahrscheinlich, dass Ihr Modell Nutzen Sie das Test-Dataset, um Ihr Modell nochmals zu überprüfen.

Die folgende Abbildung veranschaulicht diesen Workflow. In der Abbildung ist „Tweak-Modell“ Änderungen am Modell – vom Ändern der Lernrate über das Hinzufügen oder Entfernen bis hin zur Entwicklung eines neuen Modells. Am Ende dieses Workflows wählen Sie das Modell aus, das im Test-Dataset am besten abschneidet.

Abbildung 10. Ein Workflow-Diagramm, das aus den folgenden Phasen besteht:
            1. Modell mit dem Trainings-Dataset trainieren.
            2. Modell im Validierungs-Dataset bewerten.
            3. Modell gemäß den Ergebnissen des Validierungs-Datasets optimieren.
            4. Iterieren Sie über 1, 2 und 3 und wählen Sie schließlich das Modell aus,
               am besten im Validierungs-Dataset.
            5. Bestätigen Sie die Ergebnisse des Test-Datasets.
Abbildung 10: Ein guter Workflow für Entwicklung und Tests.

Der in Abbildung 10 gezeigte Workflow ist optimal, aber selbst mit diesem Workflow Test-Datasets und Validierungs-Datasets „verschleißen“ weiterhin. bei wiederholter Verwendung. Das heißt, je häufiger Sie dieselben Daten verwenden, um Entscheidungen Hyperparameter-Einstellungen oder andere Modellverbesserungen dass das Modell gute Vorhersagen für neue Daten trifft. Aus diesem Grund empfiehlt es sich, mehr Daten zum „Aktualisieren“ zu sammeln der Test und Validierungs-Dataset. Ein Neuanfang ist ein guter Anfang.

Übung: Teste deine Intuition

Sie haben alle Beispiele im Dataset zufällig angeordnet und die gemischten Beispiele in Training, Validierung und Test festgelegt. Der Verlustwert Ihres Test-Datasets ist jedoch sehr niedrig. dass Sie einen Fehler vermuten. Was könnte schief gelaufen sein?
Viele der Beispiele im Test-Dataset sind Duplikate von Beispielen. im Trainings-Dataset.
Ja. Dies kann in einem Dataset mit vielen redundanten Beispiele. Wir empfehlen dringend, doppelte Beispiele aus das Test-Dataset vor dem Testen.
Training und Tests sind nicht deterministisch. Manchmal ist Ihr Testverlust unglaublich gering. Führen Sie den Test erneut aus, um zu bestätigen, dass Ergebnis.
Obwohl der Verlust bei jedem Durchlauf geringfügig variiert, sollte er nicht variieren. von denen Sie glauben, dass Sie bei der ML-Lotterie gewonnen haben.
Das Test-Dataset enthielt zufällig Beispiele, die die gut funktioniert hat.
Da die Beispiele gut nach dem Zufallsprinzip angeordnet wurden, ist dies sehr unwahrscheinlich.

Weitere Probleme mit Test-Datasets

Wie die vorherige Frage zeigt, können doppelte Beispiele die Modellbewertung beeinflussen. Nach der Aufteilung eines Datasets in Trainings-, Validierungs- und Test-Datasets Löschen Sie alle Beispiele im Validierungs- oder Test-Dataset, die Duplikate sind von Trainingsbeispiele. Der einzige faire Test eines Modells neue Beispiele, keine Duplikate.

Stellen Sie sich beispielsweise ein Modell vor, das vorhersagt, ob es sich bei einer E-Mail um Spam handelt. die Betreffzeile, den E-Mail-Text und die E-Mail-Adresse des Absenders. Angenommen, Sie teilen die Daten in Trainings- und Test-Datasets mit einer Aufteilung von 80:20 auf. Nach dem Training erreicht das Modell eine Genauigkeit von 99% für das Trainings-Dataset und mit dem Test-Dataset. Wahrscheinlich wäre eine geringere Genauigkeit für das Test-Dataset zu erwarten, Schauen Sie sich die Daten noch einmal an und stellen Sie fest, dass viele der Beispiele aus dem Test Duplikate von Beispielen im Trainings-Dataset sind. Das Problem ist, dass Sie versäumen, doppelte Einträge für dieselbe Spam-E-Mail aus Ihrer Eingabe zu entfernen bevor Sie die Daten aufteilen. Sie haben versehentlich mit einigen der Ihre Testdaten.

Zusammenfassend lässt sich sagen, dass ein gutes Test-Dataset oder Validierungs-Dataset alle folgenden Kriterien:

  • Sie ist groß genug, um statistisch signifikante Testergebnisse zu erhalten.
  • Repräsentativ für das Dataset als Ganzes. Mit anderen Worten: Wählen Sie einem Test-Dataset mit anderen Eigenschaften als das Trainings-Dataset.
  • Repräsentativ für die realen Daten, auf die das Modell stößt als Teil seines Geschäftszwecks.
  • Im Trainings-Dataset wurden keine Beispiele dupliziert.

Übungen: Wissen testen

Bei einem einzelnen Dataset mit einer festen Anzahl von Beispielen Welche der folgenden Aussagen ist richtig?
Jedes Beispiel, das beim Testen des Modells verwendet wird, ist ein Beispiel weniger. das Modell trainieren.
Die Unterteilung von Beispielen in Trainings-/Test-/Validierungs-Datasets ist ein Nullsummenspiel. Dies ist der zentrale Kompromiss.
Die Anzahl der Beispiele im Test-Dataset muss größer sein als Anzahl der Beispiele im Validierungs-Dataset
Theoretisch sollten das Validierungs-Dataset und der Testtest die gleichen oder ungefähr so viele Beispiele geben.
Die Anzahl der Beispiele im Test-Dataset muss größer sein als Die Anzahl der Beispiele im Validierungs- oder Trainings-Dataset.
Die Anzahl der Beispiele im Trainings-Dataset ist normalerweise größer als Anzahl der Beispiele im Validierungs- oder Test-Dataset Allerdings gibt es keine prozentualen Anforderungen für die verschiedenen Sätze.
Angenommen, Ihr Test-Dataset enthält genügend Beispiele, um eine einen statistisch signifikanten Test durchgeführt hat. Außerdem sind Tests mit liefert das Test-Dataset nur einen geringen Verlust. Das Modell schnitt jedoch ab, in der realen Welt nicht gut funktioniert. Was solltest du tun?
Stellen Sie fest, wie sich das ursprüngliche Dataset von realen Daten unterscheidet.
Ja. Selbst die besten Datasets sind nur eine Momentaufnahme realer Daten. die zugrunde liegende Ground Truth ändert sich im Laufe der Zeit. Ihr Test-Dataset entsprach Ihren das Training so festgelegt ist, dass eine gute Modellqualität vorgeschlagen wird, wahrscheinlich nicht genau mit realen Daten übereinstimmt. Möglicherweise müssen Sie ein neues Dataset neu trainieren und testen.
Führen Sie den Test noch einmal mit demselben Test-Dataset durch. Die Testergebnisse können eine Anomalie.
Erneute Tests können leicht unterschiedliche Ergebnisse liefern, ist diese Taktik wahrscheinlich nicht sehr hilfreich.
Wie viele Beispiele sollte das Test-Dataset enthalten?
Ausreichend Beispiele für einen statistisch signifikanten Test.
Ja. Wie viele Beispiele sind das? Sie müssen experimentieren.
Mindestens 15% des ursprünglichen Datasets.
15% sind vielleicht nicht ausreichend.