Automatische Feature-Vorverarbeitung

BigQuery ML führt während des Trainings eine automatische Vorverarbeitung aus. Dazu wird die Anweisung CREATE MODEL verwendet. Die automatische Vorverarbeitung besteht aus fehlenden Wertberechnungen und Featuretransformationen.

Informationen zur Unterstützung der Vorverarbeitung von Features in BigQuery ML finden Sie unter Übersicht über die Feature-Vorverarbeitung.

Informationen zu den unterstützten SQL-Anweisungen und -Funktionen für die einzelnen Modelltypen erhalten Sie unter End-to-End-Nutzerpfad für jedes Modell.

Fehlende Datenberechnung

In der Statistik wird die Imputation verwendet, um fehlende Daten durch Ersatzwerte zu ersetzen. Wenn Sie ein Modell in BigQuery ML trainieren, werden NULL-Werte als fehlende Daten behandelt. Beim Vorhersagen von Ergebnissen in BigQuery ML können Werte fehlen, wenn BigQuery ML auf einen NULL-Wert oder einen bisher unbekannten Wert stößt. Je nach Datentyp der Spalte werden die fehlenden Daten von BigQuery ML unterschiedlich behandelt.

Spaltentyp Imputationsmethode
Numerisch Beim Training und bei der Vorhersage werden NULL-Werte in numerischen Spalten durch den Mittelwert der angegebenen Spalte ersetzt, wie durch die Featurespalte in den ursprünglichen Eingabedaten berechnet.
One-Hot- und Multi-Hot-codiert Beim Training und bei der Vorhersage werden NULL-Werte in den codierten Spalten einer zusätzlichen Kategorie zugeordnet, die den Daten hinzugefügt wird. Bisher unbekannten Daten wird während der Vorhersage eine Gewichtung von 0 zugewiesen.
TIMESTAMP TIMESTAMP-Spalten verwenden einen Mix von Imputationsmethoden aus standardisierten und One-Hot-codierten Spalten. In der generierten Unix-Zeitspalte ersetzt BigQuery ML Werte durch die mittlere Unix-Zeit aus den ursprünglichen Spalten. Andere generierte Werte werden von BigQuery ML der jeweiligen NULL-Kategorie für jedes extrahierte Feature zugewiesen.
STRUCT Beim Training und bei der Vorhersage wird jedes STRUCT-Feld seinem Typ entsprechend hinzugefügt.

Featuretransformationen

Standardmäßig wandelt BigQuery ML Eingabefeatures so um:

Datentyp der Eingabe Transformationsmethode Details
INT64
NUMERIC
BIGNUMERIC
FLOAT64
Standardisierung Bei den meisten Modellen standardisiert und zentriert BigQuery ML numerische Spalten bei null, bevor er an das Training übergeben wird. Die Ausnahmen sind Boosted Tree- und Random-Gesamtstrukturmodelle, für die keine Standardisierung erfolgt, und k-Means-Modelle, wobei die Option STANDARDIZE_FEATURES steuert, ob numerische Features standardisiert sind.
BOOL
STRING
BYTES
DATE
DATETIME
TIME
One-Hot-Codierung Bei allen nicht numerischen Nicht-Array-Spalten außer TIMESTAMP führt BigQuery ML eine One-Hot-Codierungstransformation für alle Modelle außer Boosted Tree- und Random-Gesamtstrukturmodellen durch. Diese Transformation generiert ein separates Feature für jeden eindeutigen Wert in der Spalte. Die Transformation der Labelcodierung wird so auf trainierte Baumstrukturen und zufällige Gesamtstrukturmodelle angewendet, dass jeder eindeutige Wert in einen numerischen Wert umgewandelt wird.
ARRAY Multi-Hot-codiert Für alle nicht numerischen Spalten außer ARRAY führt BigQuery ML eine One-Hot-Codierungstransformation durch. Diese Transformation generiert ein separates Feature für jedes spezifische Element im ARRAY.
TIMESTAMP Zeitstempeltransformation Wenn ein lineares oder logistisches Regressionsmodell eine Spalte TIMESTAMP erkennt, extrahiert es eine Reihe von Komponenten aus TIMESTAMP und führt einen Mix aus Standardisierung und One-Hot-Codierung für den extrahierten Code aus. Komponenten: Für die Komponente der Unix-Zeit in Sekunden verwendet BigQuery ML die Standardisierung. Für alle anderen Komponenten wird die One-Hot-Codierung verwendet.

Weitere Informationen finden Sie in der Tabelle zur Transformation von Zeitstempelfunktionen weiter unten.
STRUCT Struct-Erweiterung Wenn BigQuery ML eine Spalte STRUCT erkennt, werden die Felder in STRUCT erweitert, um eine einzelne Spalte zu erstellen. Alle STRUCT-Felder müssen benannt werden. Verschachtelte STRUCTs sind nicht zulässig. Nach der Erweiterung haben die Spaltennamen das Format {struct_name}_{field_name}.
ARRAY von STRUCT Keine Transformation
ARRAY von NUMERIC Keine Transformation

TIMESTAMP Featuretransformation

Die folgende Tabelle enthält die aus TIMESTAMP-Spalten extrahierten Komponenten und die entsprechende Transformationsmethode.

TIMESTAMP-Komponente processed_input-Ergebnis Transformationsmethode
Unix-Zeit in Sekunden [COLUMN_NAME] Standardisierung
Tag des Monats _TS_DOM_[COLUMN_NAME] One-Hot-Codierung
Wochentag _TS_DOW_[COLUMN_NAME] One-Hot-Codierung
Monat des Jahres _TS_MOY_[COLUMN_NAME] One-Hot-Codierung
Tageszeit _TS_HOD_[COLUMN_NAME] One-Hot-Codierung
Minute _TS_MOH_[COLUMN_NAME] One-Hot-Codierung
Woche des Jahres (Wochen beginnen am Sonntag) _TS_WOY_[COLUMN_NAME] One-Hot-Codierung
Jahr _TS_YEAR_[COLUMN_NAME] One-Hot-Codierung

Codierung von Kategorie-Features

Für One-Hot-codierte Merkmale können Sie mit der Modelloption CATEGORY_ENCODING_METHOD eine andere Standardcodierungsmethode angeben. Bei generalisierten linearen Modellen (GLM) können Sie für CATEGORY_ENCODING_METHOD einen der folgenden Werte festlegen:

One-Hot-Codierung

Die One-Hot-Codierung ordnet jede Kategorie einem eigenen Merkmal zu. Dabei gilt:0 steht für das Fehlen der Funktion und 1 steht für die Präsenz (alsDummy-Variable). Durch diese Zuordnung werden N neue Featurespalten erstellt, wobei N die Anzahl der eindeutigen Kategorien für das Feature in der Trainingstabelle ist.

Angenommen, Ihre Trainingstabelle enthält eine Featurespalte mit dem Namen fruit und den Kategorien Apple, Banana und Cranberry, zum Beispiel:

Row Obstsorte
1 Apple
2 Banane
3 Cranberry

In diesem Fall wandelt die Option CATEGORY_ENCODING_METHOD='ONE_HOT_ENCODING' die Tabelle in die folgende interne Darstellung um:

Row fruit_Apple fruit_Banana fruit_Cranberry
1 1 0 0
2 0 1 0
3 0 0 1

Die One-Hot-Codierung wird von linearen und logistischen Regressionsmodellen sowie von Boosted Tree-Modellen unterstützt.

Dummy-Codierung

Die Dummy-Codierung ähnelt der One-Hot-Codierung. Dabei wird ein kategoriales Merkmal in eine Reihe von Platzhaltervariablen umgewandelt. Für die Dummy-Codierung werden N-1-Platzhaltervariablen anstelle von N-Platzhaltervariablen verwendet, um N-Kategorien für ein Feature darzustellen. Beispiel: CATEGORY_ENCODING_METHOD in 'DUMMY_ENCODING' für das gleiche fruit-Feature, wie im vorherigen One-Hot-Codierungsbeispiel dargestellt, wird die Tabelle in die folgende interne Darstellung umgewandelt:

Row fruit_Apple fruit_Banana
1 1 0
2 0 1
3 0 0

Die Kategorie mit den meisten Vorkommen im Trainings-Dataset wird gelöscht. Wenn mehrere Kategorien die meisten Vorkommen haben, wird eine zufällige Kategorie innerhalb dieser Gruppe gelöscht.

Der letzte Gewichtungssatz von ML.WEIGHTS enthält weiterhin die verworfene Kategorie, aber die Gewichtung ist immer 0.0. Bei ML.ADVANCED_WEIGHTS sind der Standardfehler und der p-Wert für die verworfene Variable NaN.

Wenn warm_start für ein Modell verwendet wird, das ursprünglich mit 'DUMMY_ENCODING' trainiert wurde, wird dieselbe Platzhaltervariable aus dem ersten Trainingslauf gelöscht. Modelle können zwischen Codierungsläufen keine Codierungsmethoden ändern.

Die Dummy-Codierung wird von linearen und logistischen Regressionsmodellen unterstützt.

Labelcodierung

Die Labelcodierung wandelt den Wert eines kategorialen Features in einen INT64-Wert in [0, <number of categories>] um.

Angenommen, Sie haben ein Buch-Dataset wie das folgende:

Titel Genre
Buch 1 Fantasy
Buch 2 Kochen
Buch 3 Verlauf
Buch 4 Kochen

Die mit Label codierten Werte können in etwa so aussehen:

Titel Genre (Text) Genre (numerisch)
Buch 1 Fantasy 1
Buch 2 Kochen 2
Buch 3 Verlauf 3
Buch 4 Kochen 2

Das Codierungsvokabular ist alphabetisch angeordnet. NULL-Werte und Kategorien, die nicht im Vokabular enthalten sind, werden mit 0 codiert.

Die Labelcodierung wird von Boosted Tree-Modellen unterstützt.

Zielcodierung

Die Zielcodierung ersetzt den kategorialen Merkmalswert durch die Wahrscheinlichkeit des Ziels für Klassifizierungsmodelle oder durch den erwarteten Wert des Ziels bei Regressionsmodellen.

Zielcodierte Features können in etwa wie im folgenden Beispiel aussehen:

# Classification model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, target_1) |     0.5              |
| (category_1, target_2) |     0.5              |
| (category_2, target_1) |     0.0              |
+------------------------+----------------------+

# Regression model
+------------------------+----------------------+
| original value         | target encoded value |
+------------------------+----------------------+
| (category_1, 2)        |     2.5              |
| (category_1, 3)        |     2.5              |
| (category_2, 1)        |     1.5              |
| (category_2, 2)        |     1.5              |
+------------------------+----------------------+

Die Zielcodierung wird von Boosted Tree-Modellen unterstützt.