Best Practices für das Erstellen von Trainingsdaten

Diese Seite beschreibt einige grundlegende Konzepte, die Sie beim Zusammenstellen von Daten für ein AutoML Tables-Dataset berücksichtigen sollten. Sie erhebt nicht den Anspruch, alle Aspekte umfassend abzudecken.

Einführung

Ein sorgfältig aufgebautes Dataset erhöht die Qualität des resultierenden Modells für maschinelles Lernen. Sie können die Richtlinien auf dieser Seite nutzen, um die Qualität Ihres Datasets und Modells zu verbessern.

Wenn Sie bereits mit dem Erstellen von Trainingsdaten für ML-Modelle vertraut sind, lesen Sie unbedingt die Liste der Aufgaben, über die Sie sich keine Gedanken machen müssen. AutoML Tables führt viele Datenvorbereitungsaufgaben für Sie aus.

Best Practices für die Datenvorbereitung

Datenlecks vermeiden

Datenlecks treten auf, wenn Ihre Trainingsdaten vorhersagende Informationen enthalten, die nicht verfügbar sind, wenn Sie eine Vorhersage anfordern. Datenlecks können dazu führen, dass das Modell hervorragende Bewertungsmesswerte zeigt, aber schlecht mit echten Daten funktioniert.

Angenommen, Sie möchten wissen, wie viel Eiscreme Ihr Geschäft morgen verkaufen wird. Sie können die Temperatur des Zieltages nicht in Ihre Trainingsdaten einbeziehen, da Sie die Temperatur ja nicht kennen (es ist noch nicht passiert). Sie können jedoch die vorhergesagte Temperatur vom Vortag verwenden und sie in die Vorhersageanfrage einbeziehen.

Abweichungen zwischen Training und Bereitstellung vermeiden

Eine Abweichung zwischen Training und Bereitstellung tritt auf, wenn Sie die Trainingsdaten anders generieren als die Daten, die Sie zum Anfordern von Vorhersagen verwenden.

Beispielsweise, wenn Sie einen Durchschnittswert verwenden und zu Trainingszwecken einen Durchschnitt aus 10 Tagen bilden, aber beim Anfordern einer Vorhersage einen Durchschnitt für den letzten Monat.

Im Allgemeinen sollten alle Unterschiede zwischen dem Generieren der Trainingsdaten und der Bereitstellungsdaten, also den Daten, die Sie zum Generieren von Vorhersagen verwenden, überprüft werden, um Abweichungen zwischen Training und Bereitstellung zu vermeiden.

Abweichungen zwischen Training und Bereitstellung und Datenverteilung

Abweichungen zwischen Training und Bereitstellung können auch aufgrund der Datenverteilung in den Trainings-, Validierungs- und Testdatenaufteilungen auftreten. Es gibt häufig einen Unterschied zwischen der Datenverteilung, mit der ein Modell bei seiner Bereitstellung in der Produktion konfrontiert ist, und der Datenverteilung des Datasets, mit dem ein Modell trainiert wird. Beispiel: Es kann passieren, dass ein Modell in der Produktion auf eine völlig andere Nutzergruppe angewendet wird als während des Trainings. Oder das Modell wird möglicherweise 30 Tage nach Aufzeichnung der endgültigen Trainingsdaten für Vorhersagen verwendet.

Die besten Ergebnisse erzielen Sie, wenn die Verteilung der Datenaufteilungen, mit denen Ihr Modell erstellt wurde, genau dem Unterschied zwischen dem Trainingsdataset und den Daten entspricht, für die Sie Vorhersagen in Ihrer Produktionsumgebung treffen. AutoML Tables kann nicht-monotone Vorhersagen treffen. Wenn die Produktionsdaten aus einer sehr unterschiedlichen entnommen werden, die sich stark von den Trainingsdaten unterscheidet, dann sind nicht-monotone Vorhersagen nicht sehr zuverlässig.

Außerdem zwischen Produktionsdaten und Trainingsdaten der gleiche Unterschied bestehen wie zwischen der Validierungsdatenaufteilung und der Trainingsdatenaufteilung sowie zwischen der Testdatenaufteilung und der Validierungsdatenaufteilung.

Wenn Sie beispielsweise Voraussagen über den Lifetime-Wert (LTV) des Nutzers während der nächsten 30 Tage treffen möchten, müssen die Daten in der Validierungsdatenaufteilung 30 Tage älter sein als die Daten in Ihrer Trainingsdatenaufteilung, und die Daten in der Testdatenaufteilung müssen von einem Zeitpunkt 30 Tage nach der Validierungsdatenaufteilung stammen.

Wenn Sie Ihr Modell abstimmen möchten, um allgemeine Vorhersagen zu neuen Nutzern zu treffen, dürfen Daten von einem bestimmten Nutzer nur in einer einzigen Aufteilung Ihrer Trainingsdaten enthalten sein. Zum Beispiel befinden sich alle Zeilen, die sich auf user1 beziehen, in der Trainingsdatenaufteilung, alle Zeilen, die sich auf user2 beziehen, in der Validierungsdatenaufteilung und alle Zeilen, die sich auf user3 beziehen, in der Testdatenaufteilung.

Zeitsignal bereitstellen

Wenn sich das zugrunde liegende Muster in den Daten wahrscheinlich im Laufe der Zeit ändert (also in Bezug auf die Zeit nicht zufällig verteilt ist), müssen Sie diese Informationen unbedingt für AutoML Tables angeben. Sie können ein Zeitsignal auf verschiedene Arten angeben:

  • Wenn jede Datenzeile einen Zeitstempel hat, achten Sie darauf, dass die Spalte enthalten ist, den Datentyp Timestamp aufweist und beim Erstellen des Datasets als die Spalte Time (Zeit) definiert wird. Diese Reihenfolge wird verwendet, um die Daten aufzuteilen, wobei die neuesten Daten als Testdaten und die ältesten Daten als Trainingsdaten dienen. Weitere Informationen

  • Wenn Ihre Zeitspalte nicht viele unterschiedliche Werte enthält, sollten Sie sie manuell aufteilen, anstatt die Daten in der Spalte "Time" (Zeit) zu unterteilen. Andernfalls erhalten Sie möglicherweise nicht genügend Zeilen in den einzelnen Datasets, was dazu führen kann, dass das Training fehlschlägt.

  • Wenn die Zeitinformationen nicht in einer einzelnen Spalte enthalten sind, können Sie eine manuelle Datenaufteilung verwenden, um die neuesten Daten als Testdaten und die ältesten Daten als Trainingsdaten zu verwenden.

Informationen explizit zur Verfügung stellen, wo sie benötigt werden

Normalerweise müssen Sie beim Erstellen eines Modells mit AutoML Tables kein Feature Engineering vornehmen. Bei bestimmten Datenprimitiven können Sie jedoch die Modellqualität durch Engineering-Features verbessern.

Wenn die Daten beispielsweise Längen- und Breitengrade enthalten, werden diese Spalten ohne spezielle Berechnungen als numerische Daten behandelt. Wenn der Standort oder die Entfernung ein Signal für Ihr Problem darstellt, müssen Sie ein Feature entwickeln, das diese Informationen explizit bereitstellt.

Einige Datentypen, die möglicherweise ein Feature-Engineering erfordern:

  • Längengrad/Breitengrad
  • URLs
  • IP-Adressen
  • E-Mail-Adressen
  • Telefonnummern
  • Andere geografische Codes (z. B. Postleitzahlen)

Berechnete oder aggregierte Daten in eine Zeile einfügen

AutoML Tables verwenden nur die Eingabedaten in einer einzelnen Zeile, um den Zielwert für diese Zeile vorherzusagen. Wenn Sie Daten aus anderen Zeilen oder Quellen berechnet oder aggregiert haben, die für die Bestimmung des vorhergesagten Werts für eine Zeile nützlich wären, fügen Sie diese Daten in die Quellzeile ein. Achten Sie darauf, dass die neue Spalte kein Datenleck oder keine Abweichungen zwischen Training und Bereitstellung verursacht.

Wenn Sie beispielsweise den Bedarf der nächsten Woche für ein Produkt vorhersagen möchten, können Sie die Qualität der Vorhersage durch Einfügen von Spalten mit den folgenden Werten verbessern:

  • Die Gesamtzahl der vorrätigen Artikel aus derselben Kategorie wie das Produkt.
  • Der durchschnittliche Preis der vorrätigen Artikel aus derselben Kategorie wie das Produkt.
  • Die Anzahl der Tage vor einem bekannten Feiertag, an dem die Vorhersage angefordert wird.
  • Und so weiter...

Wenn Sie in einem anderen Beispiel vorhersagen möchten, ob ein bestimmter Nutzer ein Produkt kauft, können Sie die Qualität der Vorhersage durch Einfügen von Spalten mit den folgenden Werten verbessern:

  • Die durchschnittliche bisherige Conversion-Rate oder Klickrate für den bestimmten Nutzer.
  • Menge der Produkte, die sich derzeit im Einkaufswagen des Nutzers befinden.

Nullwerte als leere Zeichenfolgen darstellen

Wenn die Daten zur Darstellung von Nullwerten Sonderzeichen oder Zahlen verwenden, kann dies zu Problemen für AutoML Tables führen, da ihre Bedeutung nicht bekannt ist. Wenn Sie aus einer CSV-Datei importieren, verwenden Sie leere Zeichenfolgen, um Nullwerte darzustellen. In BigQuery verwenden Sie den Wert NULL.

Vermeiden Sie nach Möglichkeit fehlende Werte.

Prüfen Sie Ihre Daten auf fehlende Werte und korrigieren Sie sie nach Möglichkeit. Andernfalls können Sie den Wert leer lassen, wenn für die Spalte Nullwerte zulässig sind.

Leerzeichen zum Trennen von Text verwenden

In AutoML Tables werden Textstrings mit einem Token versehen und das Trainingssignal kann aus einzelnen Wörtern abgeleitet werden. Zum Trennen von Wörtern werden Leerzeichen verwendet. Wörter, die durch andere Zeichen getrennt sind, werden als eine Einheit behandelt.

Wenn Sie beispielsweise den Text "Rot/Grün/Blau" eingeben, wird er nicht in "Rot", "Grün" und "Blau" unterteilt. Wenn diese einzelnen Wörter für das Training des Modells wichtig sein könnten, sollten Sie den Text in "Rot Grün Blau" umwandeln, bevor Sie ihn in die Trainingsdaten aufnehmen.

Kategoriale Features müssen korrekt und einwandfrei sein

Dateninkonsistenzen können dazu führen, dass Kategorien falsch aufgeteilt werden. Wenn Sie beispielsweise "Braun" und "braun" haben, verwendet AutoML Tables diese Werte als separate Kategorien, obwohl dies möglicherweise von Ihnen nicht beabsichtigt war und beide Werte zur selben Kategorie gehören sollten. Rechtschreibfehler können einen ähnlichen Effekt haben. Achten Sie darauf, dass Sie diese Art von Inkonsistenzen aus den kategorialen Daten entfernen, bevor Sie die Trainingsdaten erstellen.

Unausgeglichene Klassen erfordern besondere Sorgfalt

Bei unausgeglichenen Klassen (ein selten auftretendes Klassifizierungsproblem bei einem oder mehreren Ergebnissen) lesen Sie die folgenden Tipps.

Ausreichende Trainingsdaten für die Minderheitenklasse bereitstellen

Wenn nur wenige Datenzeilen für eine Klasse vorhanden sind, beeinträchtigt dies die Modellqualität. Wenn möglich, sollten Sie für jede Klasse mindestens 100 Datenzeilen bereitstellen.

Manuelle Aufteilung

AutoML Tables wählt die Zeilen für das Test-Dataset nach dem Zufallsprinzip (aber deterministisch) aus. Bei unausgeglichenen Klassen kann es vorkommen, dass das Test-Dataset nur eine geringe Anzahl der Minderheitsklasse oder gar keine enthält, sodass das Training fehlschlägt.

Wenn Sie unausgeglichene Klassen haben, sollten Sie sie manuell aufteilen, damit in jeder Aufteilung genügend Zeilen mit den Minderheitsergebnissen enthalten sind.

Verzerrungen vermeiden

Achten Sie darauf, dass die Trainingsdaten repräsentativ für die gesamten potenziellen Daten sind, für die Sie Vorhersagen treffen werden. Wenn Sie beispielsweise Kunden auf der ganzen Welt haben, sollten Sie keinesfalls Trainingsdaten aus nur einem Land verwenden.

Genügend Trainingsdaten bereitstellen

Wenn Sie nicht genügend Trainingsdaten (Zeilen) bereitstellen, kann dies die Leistung des resultierenden Modells beeinträchtigen. Je mehr Features (Spalten) Sie zum Trainieren des Modells verwenden, desto mehr Daten (Zeilen) müssen Sie bereitstellen. Für Klassifizierungsmodelle empfiehlt es sich, mindestens 10-mal so viele Zeilen wie Spalten zu verwenden. Für Regressionsmodelle sollte die Zeilenanzahl mindestens das 50-Fache der Spaltenzahl ausmachen.

Ihr Dataset muss immer mindestens 1.000 Zeilen enthalten.

Alle anderen Vorverarbeitungen und Transformationen AutoML Tables überlassen

Sofern oben nicht anders angegeben, lassen Sie AutoML Tables das Feature-Engineering für Sie erledigen. AutoML Tables liefert die besten Ergebnisse, wenn es Zugriff auf die zugrunde liegenden Daten hat. Siehe Datenvorbereitung, die AutoML Tables erledigt.

Datenvorbereitung, die AutoML Tables erledigt

In diesem Abschnitt werden allgemeine Anforderungen an Trainingsdaten aufgeführt, die AutoML Tables automatisch für Sie übernimmt. Sie müssen diese Berechnungen nicht in Ihre Trainingsdaten aufnehmen. Wenn Sie diese Transformationen selbst durchführen und in Ihre Trainingsdaten aufnehmen, kann sich die Qualität des Modells verschlechtern.

Die folgenden automatischen Transformationen werden je nach Spaltentyp auf die einzelnen Funktionsspalten angewendet:

Spaltentyp Transformation
Numerisch
  • Der in float32 umgewandelte Wert.
  • Die z_Score des Werts.
  • Ein Bucket-Index des Werts basierend auf Quantilen. Die Bucket-Größe beträgt 100.
  • log(value+1), wenn der Wert größer oder gleich 0 ist. Andernfalls wird diese Transformation nicht angewendet und der Wert wird als fehlender Wert betrachtet.
  • z_score von log(value+1), wenn der Wert größer oder gleich 0 ist. Andernfalls wird diese Transformation nicht angewendet und der Wert wird als fehlender Wert betrachtet.
  • Ein boolescher Wert, mit dem angegeben wird, ob der Wert null ist.
  • Zeilen mit ungültigen numerischen Eingaben (z. B. ein String, der nicht in float32 geparst werden kann) werden beim Training und bei der Vorhersage nicht berücksichtigt.
  • Extreme Werte bzw. Ausreißerwerte werden nicht speziell behandelt.
Numerical array (Numerisches Array)
  • Alle Transformationen für die Typen Numerical (Numerisch), die auf den Durchschnitt der letzten N Elemente mit N = {1, 2, 4, 8, alle} angewendet werden. Die am stärksten hervorgehobenen Elemente sind also diejenigen am Ende des Arrays und nicht am Anfang.
  • Der Durchschnitt leerer Arrays wird als null behandelt.
Kategorial
  • Der kategoriale String in der vorliegenden Form: keine Änderung in Groß- und Kleinschreibung, Zeichensetzung, Rechtschreibung, Zeitform usw.
  • Wandeln Sie den Kategorienamen in einen Index für die Wörterbuchsuche um und generieren Sie für jeden Index eine Einbettung.
  • Kategorien, die im Trainings-Dataset weniger als fünfmal vorkommen, werden als Kategorie "Unbekannt" behandelt. Die Kategorie "Unbekannt" erhält einen eigenen speziellen Lookup-Index und eine entsprechende Einbettung.
Categorical array (Kategoriales Array)
  • Wandeln Sie für jedes Element im Array der letzten N Elemente mit N = {1, 2, 4, 8, alle} den Kategorienamen in einen Dictionary-Lookup-Index um und erstellen Sie eine Einbettung für jeden Index. Kombinieren Sie mithilfe des Mittelwerts die Einbettung aller Elemente zu einer einzelnen Einbettung.
  • Leere Arrays werden als Einbettung von Nullen behandelt.
SMS
  • Der Text, wie er ist, keine Änderung in Groß-/Kleinschreibung, Zeichensetzung, Rechtschreibung, Zeitform usw.
  • Wandeln Sie Text in Wörter um und erstellen Sie 1-Gramme und 2-Gramme aus Wörtern. Wandeln Sie jedes N-Gramm in einen Dictionary-Lookup-Index um und erstellen Sie eine Einbettung für jeden Index. Kombinieren Sie mithilfe des Mittelwerts die Einbettung aller Elemente zu einer einzelnen Einbettung.

    Die Tokenisierung basiert auf Unicode-Skriptgrenzen.

  • Fehlende Werte erhalten ihren eigenen Lookup-Index und die entsprechende Einbettung.
  • Stoppwörter erhalten keine besondere Behandlung und werden nicht entfernt.
Text-Array
  • Verketten Sie alle Textwerte im Array zu einem einzelnen Textwert, indem Sie ein Leerzeichen (" ") als Trennzeichen verwenden, und behandeln Sie das Ergebnis dann als einzelnen Textwert. Wenden Sie die Transformationen auf die Spalten Text an.
  • Leere Arrays werden als Einbettung von Nullen behandelt.
Timestamp
  • Wenden Sie die Transformationen auf Spalten des Typs Numerical (Numerisch) an.
  • Bestimmen Sie das Jahr, den Monat, den Tag und den Wochentag. Behandeln Sie jeden Wert aus dem Zeitstempel als Spalte des Typs Categorical (Kategorial).
  • Ungültige numerische Werte (z. B. Werte, die außerhalb eines typischen Zeitstempelbereichs oder Extremwerte liegen) werden nicht gesondert behandelt und nicht entfernt.
  • Zeilen mit ungültigen Zeitstempeleingaben (z. B. ein ungültiger Zeitstempelstring) werden nicht für Training und Vorhersage einbezogen.
Timestamp array (Zeitstempel-Array)
  • Wenden Sie die Transformationen in Spalten des Typs Numerical (Numerisch) auf den Durchschnitt der letzten N Elemente des Arrays an. N = {1, 2, 4, 8, alle}. Dies bedeutet, dass die am stärksten hervorgehobenen Elemente am Ende des Arrays liegen.
Struct
  • Struct-Werte werden automatisch zu Feldern vereinfacht. Die vereinfachten Felder werden entsprechend ihrem Spaltentyp behandelt.

Nullwerte oder fehlende Werte

Sie können festlegen, wie Nullwerte für Ihre Trainingsdaten gehandhabt werden sollen. Dazu legen Sie für diese Spalte in Ihrem Dataset-Schema fest, ob sie Nullwerte enthalten darf oder nicht. Weitere Informationen finden Sie unter Dataset erstellen.

Wenn in einer Spalte, die keine Nullwerte zulässt, ein Nullwert vorhanden ist, wird die gesamte Zeile vom Training ausgeschlossen.

Nullwerte in Spalten, für die Nullwerte zulässig sind, werden mit einer speziellen Indikatorvariable gekennzeichnet, die angibt, dass der Wert null war oder fehlte. Bei kategorialen Transformationen und Texttransformationen führt der Indikator zu einer Einbettung.

AutoML Tables behandelt die folgenden Werte als Nullwerte:

  • Ein BigQuery-NULL-Wert

  • NaN oder unendliche numerische Werte

  • Leerer String. AutoML Tables entfernt keine Leerzeichen von Strings. Das heißt, " " wird nicht als Nullwert betrachtet.

  • Ein String, der in NaN oder einen unendlichen numerischen Wert umgewandelt werden kann.

    • Bei "NAN" wird Groß- und Kleinschreibung ignoriert, wobei ein optionales Plus- oder Minuszeichen vorangestellt wird.
    • Bei "INF" wird Groß- und Kleinschreibung ignoriert, wobei ein optionales Plus- oder Minuszeichen vorangestellt wird.
  • Fehlende Werte

Nächste Schritte