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 STRUCT s 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:
Zeile | 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:
Zeile | 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:
Zeile | 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 transformiert den Wert eines kategorialen Features in einen INT64
-Wert in [0, <number of categories>]
.
Angenommen, Sie haben ein Buch-Dataset wie das folgende:
Titel | Genre |
---|---|
Buch 1 | Fantasy |
Buch 2 | Kochen |
Buch 3 | Verlauf |
Buch 4 | Kochen |
Die 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.