Dabei werden die folgenden Themen behandelt:
- Best Practices für alle tabellarischen Datenmodelle
- Best Practices für tabellarische AutoML-Modelle
- Best Practices für tabellarische Prognosemodelle
- Best Practices für das Datenformat
Best Practices für alle tabellarischen Datenmodelle
Die folgenden Best Practices gelten unabhängig davon, ob Sie ein AutoML-Modell oder ein benutzerdefiniertes Modell mit tabellarischen Daten erstellen.
Vermeiden Sie Datenlecks
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.
Datenlecks können auch auftreten, wenn Sie dieselben Daten in mehreren Datenaufteilungen verwenden. Wenn Sie Zeitachsendaten verwenden, achten Sie darauf, dass Daten vom demselben Datum nur in einer der drei Datenaufteilungen verwendet werden.
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 bei der Projekterstellung den Unterschied zwischen den Trainingsdaten und den Vorhersagedaten für Ihre Produktionsumgebung exakt wiedergibt. Vertex AI 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 bei Klassifizierungs- und Regressionsmodellen wahrscheinlich im Laufe der Zeit ändert (also in Bezug auf die Zeit nicht zufällig verteilt ist), müssen Sie diese Informationen für Vertex AI 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 Transformationstyp
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 InformationenWenn 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
Bei einigen Datenprimitiven können Sie 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
Vertex AI verwendet 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.
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.
Best Practices für tabellarische AutoML-Modelle
Die folgenden Best Practices dienen zum Erstellen von tabellarischen Trainingsdaten für tabellarische AutoML-Modelle.
Nullwerte entsprechend darstellen
Wenn Sie aus einer CSV-Datei importieren, verwenden Sie leere Zeichenfolgen, um Nullwerte darzustellen. In BigQuery verwenden Sie den Wert NULL.
Wenn Ihre Daten zur Darstellung von Nullwerten Sonderzeichen oder Zahlen verwenden, einschließlich null, werden diese Werte falsch interpretiert, wodurch die Modellqualität reduziert wird.
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 und er wird als Nullwert behandelt.
Leerzeichen zum Trennen von Text verwenden
In Vertex AI 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 die Daten beispielsweise "Braun" und "braun" enthalten, verwendet Vertex AI diese Werte als separate Kategorien, obwohl dies möglicherweise nicht beabsichtigt war. 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.
Seien Sie besonders vorsichtig mit unausgeglichenen Klassen für Klassifizierungsmodelle
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 zu 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
Vertex AI 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.
Genügend Trainingsdaten bereitstellen
Wenn Sie nicht genügend Trainingsdaten bereitstellen, kann dies die Leistung des resultierenden Modells beeinträchtigen. Je mehr Spalten Sie zum Trainieren Ihres Modells verwenden, desto mehr Daten müssen Sie angeben.
Ihr Dataset muss immer mindestens 1.000 Zeilen enthalten.
Die folgende Tabelle enthält einige Heuristiken dazu, wie viele Trainingsdaten Sie je nach Ziel bereitstellen müssen.
Ziel | Vorgeschlagene Mindestmenge an Trainingsdaten |
---|---|
Klassifizierung | Mindestens zehnmal so viele Zeilen wie Spalten. |
Vorhersage | Mindestens 10 Zeitachsen für jede Spalte, die zum Trainieren des Modells verwendet wird. |
Regression | Mindestens 50-mal so viele Zeilen wie die Anzahl der Spalten. |
Alle anderen Vorverarbeitungen und Transformationen Vertex AI überlassen
Sofern oben nicht anders angegeben, lassen Sie Vertex AI das Feature-Engineering für Sie erledigen, wenn Sie ein AutoML-Modell trainieren. AutoML Tables liefert die besten Ergebnisse, wenn es Zugriff auf die zugrunde liegenden Daten hat. Eine Liste aller Transformationen, die AutoML nach Transformationstyp ausführt, finden Sie unter Vertex-KI-Transformationen.
Best Practices für tabellarische Prognosemodelle
Trainingsdaten für Prognosemodelle müssen einige besondere Aspekte berücksichtigen.
Überlegungen zur Auswahl der Datengranularität
Wenn Sie ein Prognosemodell trainieren, geben Sie die Datengranularität oder das Zeitintervall zwischen den Trainingsdatenzeilen an. Sie kann stündlich, täglich, wöchentlich, monatlich oder jährlich sein. Darüber hinaus kann es alle 1, 5, 10, 15 oder 30 Minuten sein.
Die Datengranularität muss in den gesamten Trainingsdaten und allen Batchvorhersagedaten konsistent sein. Wenn Sie eine tägliche Granularität angeben und zwischen zwei Trainingsdatenzeilen zwei Tage liegen, behandelt Vertex AI den Zwischentag als fehlende Daten, was die Modellleistung beeinträchtigen kann. Mehrere Zeilen in derselben Zeitachse mit demselben Zeitstempel (wie durch den Detaillierungsgrad bestimmt) werden zum Zeitpunkt des Trainings als Validierungsfehler betrachtet.
Im Allgemeinen bestimmen die Vorgehensweisen zur Datenerfassung den Detaillierungsgrad Ihrer Daten.
Guten Wert für das Kontextfenster finden
Wenn Sie davon ausgehen, dass Sie viele Vorhersagedaten benötigen, die nicht in die Vergangenheit (Kaltstarts) reichen, beginnen Sie, zuerst das Kontextfenster auf 0 zu setzen. Andernfalls wird ein Kontextfenster zwischen der Größe des Prognosezeitraums und dem 10-fachen der Größe des Prognosezeitraums gut funktionieren.
Mit den folgenden Schritten können Sie einen guten Wert für Ihre Daten ermitteln:
Legen Sie für den ersten Trainingsdurchlauf das Kontextfenster und den Prognosehorizont auf denselben Wert und Ihr Trainingsbudget auf mindestens sechs Stunden fest.
Trainieren Sie das Modell noch einmal mit demselben Trainingsbudget, aber verdoppeln Sie die Größe des Kontextfensters auf das Doppelte der Größe des Prognosezeitraums.
Wenn die Bewertungsmesswerte für das zweite Modell eine erhebliche Verbesserung zeigen, trainieren Sie das Modell noch einmal und erhöhen Sie das Kontextfenster auf das Fünffache der Größe des Prognosezeitraums. Ziehen Sie eine proportionale Erhöhung des Trainingsbudgets in Betracht, wenn Sie im ersten Schritt 10 Stunden trainiert haben. Erhöhen Sie das Trainingsbudget auf 50 Stunden.
Erhöhen Sie das Kontextfenster so lange, bis keine verbesserten Bewertungsmesswerte mehr angezeigt werden oder bis Sie mit den Ergebnissen zufrieden sind. Kehren Sie zum niedrigsten Wert des Kontextfensters zurück, das akzeptable Ergebnisse erzeugt hat.
Das Vergrößern des Kontextfensters hat folgende Auswirkungen:
Erhöht die Trainingszeit
Bei einem größeren Kontextfenster verwendet das Modell mehr Datenpunkte für das Training, sodass die Trainingszeit zunimmt.
Der erforderliche Verlauf an Vorhersagedaten wird erhöht.
Die Vorhersagedaten sollten so viele Verlaufsdatenpunkte enthalten wie der Wert des Kontextfensters.
Best Practices für das Datenformat
Sie können Ihre Trainingsdaten im weiten oder schmalen Format erstellen. Für Regressions- und Klassifizierungsmodelle wird ein breites Format verwendet, das sich einfacher zusammenstellen und überprüfen lässt. Bei Prognosemodellen können Sie durch die Verwendung des schmalen Formats vermeiden, dass unbeabsichtigte Verbindungen zwischen Ihren Daten und Ihrem Ziel eingerichtet werden (Datenlecks).
Wenn Sie Trainingsdaten zum Trainieren eines Prognosemodells erstellen, sollte jede Zeile eine einzelne Beobachtung auf einer einzelnen Zeitachse darstellen. Sie müssen eine Spalte haben, die Ihre Zeitachsenkennzeichnung darstellt, wie sich die Zeitachsen voneinander unterscheiden, und eine Spalte, die den Wert Ihrer Vorhersage darstellt (Ihr Ziel). Dann muss jeder andere Wert in der Zeile, die zum Trainieren des Modells verwendet wird, zum Zeitpunkt der Anforderung einer Vorhersage für Ihr Ziel vorhanden sein.
Betrachten Sie die folgenden (vereinfachten und abgekürzten) Beispieltrainingsdaten:
Datum | Widget_1_Demand | Widget_2_Demand | Widget_3_Demand | Promo | Region |
---|---|---|---|---|---|
01/01/2019 | 112 | 241 | 0 | 0 | CA |
01/02/2019 | 141 | 219 | 0 | 1 | CA |
01/03/2019 | 149 | 244 | 0 | 0 | CA |
01/01/2019 | 52 | 0 | 43 | 0 | IL |
01/02/2019 | 81 | 0 | 26 | 1 | IL |
01/03/2019 | 89 | 0 | 86 | 0 | IL |
Diese Tabelle enthält im Wide-Format Geschäftsdaten nach Datum, konnte jedoch für ein Prognosemodell in ihrer aktuellen Form nicht verwendet werden. Es gibt keine einzelne Zielspalte und keine Zeitachsen-ID-Spalte. Für ein bestimmtes Datum kennen Sie die Nachfrage für die anderen Widgets zum Zeitpunkt der Vorhersage nicht.
Sie können diese Tabelle in dieses Format konvertieren:
Datum | Produkt | Region_CA_Demand | Region_IL_Demand | Promo |
---|---|---|---|---|
01/01/2019 | Widget_1 | 112 | 52 | 0 |
01/02/2019 | Widget_1 | 141 | 81 | 1 |
01/03/2019 | Widget_1 | 149 | 89 | 0 |
01/01/2019 | Widget_2 | 241 | 0 | 0 |
01/02/2019 | Widget_2 | 219 | 0 | 1 |
01/03/2019 | Widget_2 | 244 | 0 | 0 |
01/01/2019 | Widget_3 | 0 | 43 | 0 |
01/02/2019 | Widget_3 | 0 | 26 | 1 |
01/03/2019 | Widget_3 | 0 | 86 | 0 |
Wir haben jetzt eine potenzielle Zeitachsen-ID-Spalte, Produkt. Dieses Format könnte jedoch nur zur Vorhersage einer der Regionen verwendet werden und die Daten für die andere Region müssen zum Zeitpunkt der Vorhersage bekannt sein.
Die Lösung besteht darin, das Format in ein enges Format umzuwandeln, sodass jede Zeile eine einzelne Beobachtung darstellt. Alle Daten, die von der Zeitachse unabhängig sind, werden für jede Zeile wiederholt:
Datum | Nachfrage | ID | Promo |
---|---|---|---|
01/01/2019 | 112 | Widget_1_CA | 0 |
01/02/2019 | 141 | Widget_1_CA | 1 |
01/03/2019 | 149 | Widget_1_CA | 0 |
01/01/2019 | 52 | Widget_1_IL | 0 |
01/02/2019 | 81 | Widget_1_IL | 1 |
01/03/2019 | 89 | Widget_1_IL | 0 |
01/01/2019 | 241 | Widget_2_CA | 0 |
01/02/2019 | 219 | Widget_2_CA | 1 |
01/03/2019 | 244 | Widget_2_CA | 0 |
01/01/2019 | 0 | Widget_2_IL | 0 |
01/02/2019 | 0 | Widget_2_IL | 1 |
01/03/2019 | 0 | Widget_2_IL | 0 |
01/01/2019 | 0 | Widget_3_CA | 0 |
01/02/2019 | 0 | Widget_3_CA | 1 |
01/03/2019 | 0 | Widget_3_CA | 0 |
01/01/2019 | 43 | Widget_3_IL | 0 |
01/02/2019 | 26 | Widget_3_IL | 1 |
01/03/2019 | 86 | Widget_3_IL | 0 |
Jetzt haben wir eine Zeitachsenkennzeichnung (ID), eine Zielspalte (Nachfrage) und eine Zeitspalte (Datum). Darüber hinaus basiert jede Zeile auf einer einzelnen Beobachtung, mit der der Zielwert vorhergesagt werden kann. Die Spalte "Promo" wird als Feature zum Trainieren des Modells verwendet.
Tatsächlich haben Sie viel mehr Zeilen und viel mehr Spalten als diese Beispiele. Sie müssen jedoch hier die Richtlinien befolgen, um Ihre Daten zu strukturieren und um so Datenlecks zu vermeiden.
Nächste Schritte
- Sind meine Daten in Ordnung? Eine Checkliste der ML-Voraussetzungen
- Daten für maschinelles Lernen vorbereiten und kuratieren