CREATE MODEL-Anweisung

CREATE MODEL-Anweisung

Verwenden Sie zum Erstellen eines Modells in BigQuery die BigQuery ML-Anweisung CREATE MODEL. Diese Anweisung ähnelt der DDL-Anweisung CREATE TABLE. Wenn Sie eine Standard-SQL-Abfrage ausführen, die eine CREATE MODEL-Anweisung enthält, wird ein Abfragejob erstellt, der die Abfrage verarbeitet.

CREATE MODEL-Syntax

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
model_name
[TRANSFORM (select_list)]
[OPTIONS(model_option_list)]
[AS query_statement]

model_option_list:
  MODEL_TYPE = { 'LINEAR_REG' | 'LOGISTIC_REG' | 'KMEANS' | 'TENSORFLOW' | 'MATRIX_FACTORIZATION' | 'AUTOML_REGRESSOR' | 'AUTOML_CLASSIFIER' | 'BOOSTED_TREE_CLASSIFIER' | 'BOOSTED_TREE_REGRESSOR' | 'DNN_CLASSIFIER' | 'DNN_REGRESSOR' }
  [, INPUT_LABEL_COLS = string_array ]
  [, OPTIMIZE_STRATEGY = { 'AUTO_STRATEGY' | 'BATCH_GRADIENT_DESCENT' | 'NORMAL_EQUATION' } ]
  [, L1_REG = float64_value ]
  [, L2_REG = float64_value ]
  [, MAX_ITERATIONS = int64_value ]
  [, LEARN_RATE_STRATEGY = { 'LINE_SEARCH' | 'CONSTANT' } ]
  [, LEARN_RATE = float64_value ]
  [, EARLY_STOP = { TRUE | FALSE } ]
  [, MIN_REL_PROGRESS = float64_value ]
  [, DATA_SPLIT_METHOD = { 'AUTO_SPLIT' | 'RANDOM' | 'CUSTOM' | 'SEQ' | 'NO_SPLIT' } ]
  [, DATA_SPLIT_EVAL_FRACTION = float64_value ]
  [, DATA_SPLIT_COL = string_value ]
  [, LS_INIT_LEARN_RATE = float64_value ]
  [, WARM_START = { TRUE | FALSE } ]
  [, AUTO_CLASS_WEIGHTS = { TRUE | FALSE } ]
  [, CLASS_WEIGHTS = struct_array ]
  [, NUM_CLUSTERS = int64_value ]
  [, KMEANS_INIT_METHOD = { 'RANDOM' | 'KMEANS++' | 'CUSTOM' } ]
  [, KMEANS_INIT_COL = string_value ]
  [, DISTANCE_TYPE = { 'EUCLIDEAN' | 'COSINE' } ]
  [, STANDARDIZE_FEATURES = { TRUE | FALSE } ]
  [, MODEL_PATH = string_value ]
  [, BUDGET_HOURS = float64_value ]
  [, FEEDBACK_TYPE = {'EXPLICIT' | 'IMPLICIT'} ]
  [, NUM_FACTORS = int64_value ]
  [, USER_COL = string_value ]
  [, ITEM_COL = string_value ]
  [, RATING_COL = string_value ]
  [, WALS_ALPHA = float64_value ]
  [, BOOSTER_TYPE = { 'gbtree' | 'dart'} ]
  [, NUM_PARALLEL_TREE = int64_value ]
  [, DART_NORMALIZE_TYPE = { 'tree' | 'forest'} ]
  [, TREE_METHOD = { 'auto' | 'exact' | 'approx' | 'hist'} ]
  [, MIN_TREE_CHILD_WEIGHT = float64_value ]
  [, COLSAMPLE_BYTREE = float64_value ]
  [, COLSAMPLE_BYLEVEL = float64_value ]
  [, COLSAMPLE_BYNODE = float64_value ]
  [, MIN_SPLIT_LOSS = float64_value ]
  [, MAX_TREE_DEPTH = int64_value ]
  [, SUBSAMPLE = float64_value ])
  [, ACTIVATION_FN = { 'RELU' | 'RELU6' | 'CRELU' | 'ELU' | 'SELU' | 'SIGMOID' | 'TANH' } ]
  [, BATCH_SIZE = int64_value ]
  [, DROPOUT = float64_value ]
  [, HIDDEN_UNITS = int_array ]
  [, OPTIMIZER = { 'ADAGRAD' | 'ADAM' | 'FTRL' | 'RMSPROP' | 'SGD' } ]
  [, TIME_SERIES_TIMESTAMP_COL = string_value ]
  [, TIME_SERIES_DATA_COL = string_value ]
  [, TIME_SERIES_ID_COL = string_value ]
  [, HORIZON = int64_value ]
  [, AUTO_ARIMA = { TRUE | FALSE } ]
  [, NON_SEASONAL_ORDER = (int64_value, int64_value, int64_value) ]
  [, DATA_FREQUENCY = { 'AUTO_FREQUENCY' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' } ]
  [, INCLUDE_DRIFT = { TRUE | FALSE } ]
  [, HOLIDAY_REGION = { 'GLOBAL' | 'NA' | 'JAPAC' | 'EMEA' | 'LAC' | 'AE' | ... } ]

Nicht alle Optionen gelten für jeden Modelltyp. Informationen zu TensorFlow-Modellen finden Sie in der CREATE MODEL-Anweisung für TensorFlow-Modelle. Informationen zu AutoML Tables-Modellen finden Sie in der CREATE MODEL-Anweisung für AutoML Tables-Modelle.

CREATE MODEL

Erstellt und trainiert ein neues Modell im angegebenen Dataset. Wenn der Modellname vorhanden ist, gibt CREATE MODEL einen Fehler zurück.

CREATE MODEL IF NOT EXISTS

Erstellt und trainiert ein neues Modell nur, wenn das Modell nicht bereits im angegebenen Dataset vorhanden ist.

CREATE OR REPLACE MODEL

Erstellt und trainiert ein Modell und ersetzt ein vorhandenes Modell mit demselben Namen im angegebenen Dataset.

model_name

model_name ist der Name des Modells, das Sie erstellen oder ersetzen. Der Modellname muss pro Dataset eindeutig sein: Kein anderes Modell und keine andere Tabelle darf denselben Namen haben. Der Modellname muss denselben Benennungsregeln wie eine BigQuery-Tabelle folgen. Ein Modellname kann:

  • bis zu 1.024 Zeichen enthalten.
  • Buchstaben (groß- oder kleingeschrieben), Ziffern und Unterstriche enthalten.

model_name unterscheidet nicht zwischen Groß- und Kleinschreibung.

Wenn Sie kein Standardprojekt konfiguriert haben, stellen Sie die Projekt-ID dem Modellnamen im folgenden Format, einschließlich der Backticks, voran: `[PROJEKT-ID].[DATASET].[MODELL]`. Beispiel: `myproject.mydataset.mymodel`.

TRANSFORM

Mit TRANSFORM können Sie die gesamte Vorverarbeitung während der Modellerstellung festlegen und während der Vorhersage und Auswertung automatisch anwenden lassen.

Sie können beispielsweise das folgende Modell erstellen:

CREATE OR REPLACE MODEL m
  TRANSFORM(ML.FEATURE_CROSS(STRUCT(f1, f2)) as cross_f,
            ML.QUANTILE_BUCKETIZE(f3) OVER() as buckets,
            label_col)
  OPTIONS(model_type=’linear_reg’, input_label_cols=['label_col'])
AS SELECT * FROM t

Während der Vorhersage müssen Sie die Eingabe nicht noch einmal vorverarbeiten und dieselben Transformationen werden automatisch wiederhergestellt:

SELECT * FROM ML.PREDICT(MODEL m, (SELECT f1, f2, f3 FROM table))

Wenn die TRANSFORM-Klausel vorhanden ist, werden beim Training nur Ausgabespalten aus der TRANSFORM-Klausel verwendet. Alle Ergebnisse von query_statement, die nicht in der TRANSFORM-Klausel enthalten sind, werden ignoriert.

Die Eingabespalten der TRANSFORM-Klausel sind das Ergebnis von query_statement. Die letzte Eingabe, die beim Training verwendet wird, ist also der Satz von Spalten, der durch die folgende Abfrage erstellt wird:

SELECT (select_list) FROM (query_statement);

Die Eingabespalten der TRANSFORM-Klausel können einen beliebigen SIMPLE-Typ oder ein ARRAY vom Typ SIMPLE haben. SIMPLE-Typen sind Nicht-STRUCT- und Nicht-ARRAY-Datentypen.

Bei der Vorhersage (ML.PREDICT) müssen die Nutzer nur die ursprünglichen Spalten aus dem query_statement übergeben, die in der TRANSFORM-Klausel verwendet werden. Die in TRANSFORM gelöschten Spalten müssen während der Vorhersage nicht angegeben werden. TRANSFORM wird während der Vorhersage automatisch auf die Eingabedaten angewendet, einschließlich der Statistiken, die in ML-Analysefunktionen verwendet werden, z. B. ML.QUANTILE_BUCKETIZE.

select_list

Sie können Spalten von query_statement bis zum Modelltraining ohne Transformation übergeben. Dazu können Sie entweder * oder * EXCEPT() verwenden oder die Spaltennamen direkt auflisten.

Nicht alle Spalten von query_statement müssen in der TRANSFORM-Klausel enthalten sein. Sie können in query_statement enthaltene Spalten löschen, indem Sie sie in der TRANSFORM-Klausel auslassen.

Sie können Eingaben von query_statement mithilfe von Ausdrücken in select_list umwandeln. select_list ist einer normalen SELECT-Anweisung ähnlich. select_list unterstützt die folgende Syntax:

  • *
  • * EXCEPT()
  • * REPLACE()
  • <var>expression</var>
  • <var>expression</var>.*

Folgende Elemente dürfen nicht in select_list vorkommen:

  • Aggregationsfunktionen.
  • Nicht-ML-Analysefunktionen. Sie finden alle ML-Analysefunktionen in Vorverarbeitungsfunktionen
  • UDFs
  • Unterabfragen.
  • Anonyme Spalten. Beispiel: "a + b as c" ist zulässig, "a + b" hingegen nicht.

Die Ausgabespalten von select_list können einen beliebigen von BigQuery ML unterstützten Datentyp haben.

Falls vorhanden, müssen die folgenden Spalten in select_list ohne Transformation angezeigt werden:

  • label
  • data_split_col
  • kmeans_init_col

Wenn diese Spalten von query_statement zurückgegeben werden, müssen Sie sie in select_list nach dem Spaltennamen außerhalb eines Ausdrucks oder mit * referenzieren. Die Verwendung eines Alias mit diesen Spalten ist nicht zulässig.

model_option_list

In model_option_list ist die Option model_type erforderlich. Alle anderen sind optional.

CREATE MODEL unterstützt die folgenden Optionen:

MODEL_TYPE

Syntax

MODEL_TYPE = { 'LINEAR_REG' | 'LOGISTIC_REG' | 'KMEANS' |
'BOOSTED_TREE_REGRESSOR' | 'BOOSTED_TREE_CLASSIFIER' | 'DNN_CLASSIFIER' | 'DNN_REGRESSOR' }

Beschreibung

Gibt den Modelltyp an. Diese Option ist erforderlich.

Argumente

'LINEAR_REG': Lineare Regression zur Vorhersage, z. B. wie oft ein bestimmter Artikel an einem bestimmten Tag verkauft wird. Labels sind reellwertig, können also nicht positiv/negativ unendlich oder NaN sein.

'LOGISTIC_REG': Logistische Regression zur Klassifizierung; z. B. ob ein Kunde etwas kauft. Es gibt zwei Typen dieses Modells:

  • Binär logistische Regression zur Klassifizierung, z. B. ob ein Kunde kaufen wird oder nicht. Labels dürfen nur zwei mögliche Werte haben.
  • Mehrklassige logistische Regression zur Klassifizierung: Mit diesen Modellen können mehrere mögliche Werte vorhergesagt werden, z. B. ob eine Eingabe einen "niedrigen Wert", einen "mittleren Wert" oder einen "hohen Wert" hat. Jedes Label kann bis zu 50 Einzelwerte haben. In BigQuery ML wird für das Training mit einem mehrklassigen logistischen Regressionsmodell ein multinominaler Klassifikator mit einer Kreuzentropie-Verlustfunktion verwendet.

'KMEANS': K-Means-Clustering zur Datensegmentierung; z. B. zur Identifizierung von Kundensegmenten. Da K-Means ein unüberwachtes Lernverfahren ist, sind für das Modelltraining weder Labels noch Datenaufteilungen für die Trainings- oder Evaluierungsphase erforderlich.

'TENSORFLOW' (Beta): Erstellt ein Modell durch Import eines TensorFlow-Modells in BigQuery ML. Weitere Informationen finden Sie unter CREATE MODEL-Anweisung zum Importieren von TensorFlow-Modellen.

'MATRIX_FACTORIZATION' (Beta): Matrixfaktorisierung für Empfehlungssysteme. Wenn Sie beispielsweise eine Gruppe von Nutzern, Artikeln sowie einige Präferenzen oder Bewertungen für eine Teilmenge der Artikel angeben, wird ein Modell erstellt. Mit diesem Modell wird dann die Präferenz eines Nutzers für Artikel vorhergesagt, die er noch nicht bewertet oder mit denen er bisher noch nicht interagiert hat. Weitere Informationen finden Sie unter CREATE MODEL-Anweisung für Matrixfaktorisierungsmodelle.

'AUTOML_REGRESSOR' (Beta): Erstellt ein Regressionsmodell mit AutoML Tables. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für AutoML Tables-Modelle.

'AUTOML_CLASSIFIER' (Beta): Erstellt ein Klassifizierungsmodell mit AutoML Tables. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für AutoML Tables-Modelle.

'BOOSTED_TREE_CLASSIFIER' (Beta): Erstellt ein Boosted Tree-Klassifikatormodell mithilfe der XGBoost-Bibliothek. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für Boosted Tree-Modelle.

'BOOSTED_TREE_REGRESSOR' (Beta): Erstellt ein Boosted Tree-Regressormodell mithilfe der XGBoost-Bibliothek. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für Boosted Tree-Modelle.

'DNN_CLASSIFIER' (Beta): Erstellt ein Klassifikatormodell mit neuronalem Deep-Learning-Netzwerk. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für DNN-Modelle.

'DNN_REGRESSOR' (Beta): Erstellt ein Regressormodell mit neuronalem Deep-Learning-Netzwerk. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für DNN-Modelle.

'ARIMA' (Beta) Univariates ARIMA-basiertes Zeitachsenmodell für Zeitachsenprognosen. Bei einer oder mehreren Zeitachsen wird beispielsweise ein Modell oder eine Reihe von Zeitachsenmodellen gleichzeitig erstellt, um zukünftige Datenpunkte vorherzusagen. Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für Zeitachsenmodelle.

INPUT_LABEL_COLS

Syntax

INPUT_LABEL_COLS = string_array

Beschreibung

Die Namen der Labelspalten in den Trainingsdaten.

Argumente

string_array ist ein ARRAY von STRINGs. Die Modelltypen der linearen Regression und der logistischen Regression unterstützen nur string_array-Werte, die ein Element enthalten.

OPTIMIZE_STRATEGY

Syntax

OPTIMIZE_STRATEGY = { 'AUTO_STRATEGY' | 'BATCH_GRADIENT_DESCENT' | 'NORMAL_EQUATION' }

Beschreibung

Die Strategie zum Trainieren von linearen Regressionsmodellen.

Argumente

Akzeptiert die folgenden Werte als Eingabe:

'AUTO_STRATEGY': Legt die Trainingsstrategie so fest:

  • Wenn l1_reg oder warm_start angegeben ist, wird die Strategie batch_gradient_descent verwendet.
  • Wenn die Gesamtkardinalität der Trainingsfeatures 10.000 überschreitet, wird die Strategie batch_gradient_descent verwendet.
  • Bei einem Überanpassungsproblem, d. h., wenn die Anzahl der Trainingsbeispiele kleiner als 10x ist, wobei x der Gesamtkardinalität entspricht, wird die Strategie batch_gradient_descent verwendet.
  • Für alle anderen Fälle wird die Strategie NORMAL_EQUATION verwendet.

'BATCH_GRADIENT_DESCENT': Trainiert das Modell mit dem Batch-Gradientenabstiegsverfahren, das die Verlustfunktion mithilfe der Gradientenfunktion optimiert.

'NORMAL_EQUATION': Berechnet direkt die Lösung der kleinsten Quadrate des linearen Regressionsproblems mit der analytischen Formel. Die Normalgleichung kann in folgenden Fällen nicht verwendet werden:

  • l1_reg ist angegeben.
  • warm_start ist angegeben.
  • Die Gesamtkardinalität der Trainingsfeatures überschreitet 10.000.

Der Standardwert ist 'AUTO_STRATEGY'.

L1_REG

Syntax

L1_REG = float64_value

Beschreibung

Wert der angewendeten L1-Regularisierung.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'. Der Standardwert ist 0.

L2_REG

Syntax

L2_REG = float64_value

Beschreibung

Wert der angewendeten L2-Regularisierung.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'. Der Standardwert ist 0.

MAX_ITERATIONS

Syntax

MAX_ITERATIONS = int64_value

Beschreibung

Die maximale Anzahl der Trainingsdurchläufe oder -schritte.

Argumente

int64_value gehört zur Gruppe 'INT64'. Der Standardwert ist 20.

LEARN_RATE_STRATEGY

Syntax

LEARN_RATE_STRATEGY = { 'LINE_SEARCH' | 'CONSTANT' }

Beschreibung

Die Strategie zum Angeben der Lernrate beim Training.

Argumente

'LINE_SEARCH': Verwendet das Liniensuchverfahren, um die Lernrate zu berechnen. Die anfängliche Lernrate für die Liniensuche ist der für LS_INIT_LEARN_RATE angegebene Wert.

Die Liniensuche verlangsamt das Training und erhöht die Anzahl der verarbeiteten Byte, konvergiert aber im Allgemeinen auch bei Angabe einer größeren anfänglichen Lernrate.

'CONSTANT': Legt die Lernrate auf den für LEARN_RATE angegebenen Wert fest.

Der Standardwert ist 'LINE_SEARCH'.

LEARN_RATE

Syntax

LEARN_RATE = float64_value

Beschreibung

Die Lernrate für den Gradientenabstieg, wenn LEARN_RATE_STRATEGY auf CONSTANT gesetzt ist. Wenn LEARN_RATE_STRATEGY auf 'LINE_SEARCH' gesetzt ist, wird ein Fehler zurückgegeben.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'. Der Standardwert ist 0,1.

EARLY_STOP

Syntax

EARLY_STOP = { TRUE | FALSE }

Beschreibung

Gibt an, ob das Training nach dem ersten Durchlauf beendet werden soll, wenn die relative Verlustverbesserung kleiner als der für MIN_REL_PROGRESS angegebene Wert ist.

Argumente

Der Wert ist ein BOOL. Der Standardwert ist TRUE.

MIN_REL_PROGRESS

Syntax

MIN_REL_PROGRESS = float64_value

Beschreibung

Die minimale relative Verlustverbesserung, die erforderlich ist, um das Training fortzusetzen, wenn EARLY_STOP auf "true" gesetzt ist. Beispiel: Ein Wert von 0,01 gibt an, dass jeder Durchlauf den Verlust um 1 % reduzieren muss, damit das Training fortgesetzt wird.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'. Der Standardwert ist 0,01.

DATA_SPLIT_METHOD

Syntax

DATA_SPLIT_METHOD = { 'AUTO_SPLIT' | 'RANDOM' | 'CUSTOM' | 'SEQ' | 'NO_SPLIT' }

Beschreibung

Methode, um Eingabedaten in Trainings- und Auswertungs-Datasets aufzuteilen. Trainingsdaten werden zum Trainieren des Modells verwendet. Mithilfe von Bewertungsdaten soll eine Überanpassung vermieden werden, indem das Training vorzeitig beendet wird.

Argumente

Akzeptiert die folgenden Werte als Eingabe:

'AUTO_SPLIT': Die Strategie zur automatischen Aufteilung ist so definiert:

  • Wenn die Eingabedaten weniger als 500 Zeilen enthalten, werden alle Zeilen als Trainingsdaten verwendet.
  • Wenn die Eingabedaten zwischen 500 und 50.000 Zeilen enthalten, werden 20 % der Daten durch eine RANDOM-Aufteilung als Bewertungsdaten verwendet.
  • Wenn die Eingabedaten mehr als 50.000 Zeilen enthalten, werden nur 10.000 davon durch eine RANDOM-Aufteilung als Bewertungsdaten verwendet.

'RANDOM': Teilt Daten nach dem Zufallsprinzip auf. Eine zufällige Aufteilung ist deterministisch: Unterschiedliche Trainingsläufe führen zu denselben Aufteilungsergebnissen, wenn die zugrunde liegenden Trainingsdaten gleich bleiben.

'CUSTOM': Teilt Daten mithilfe einer vom Kunden bereitgestellten Spalte vom Typ BOOL auf. Die Zeilen mit dem Wert TRUE werden als Bewertungsdaten verwendet. Die Zeilen mit dem Wert FALSE werden als Trainingsdaten verwendet.

'SEQ': Teilt die Daten mithilfe einer vom Kunden bereitgestellten Spalte sequenziell auf. Die Spalte kann einen beliebigen sortierbaren Datentyp haben: NUMERIC, STRING oder TIMESTAMP. Alle Zeilen mit aufgeteilten Werten, die kleiner als der Grenzwert sind, werden als Trainingsdaten verwendet. Die restlichen Zeilen, einschließlich NULLs, werden als Bewertungsdaten verwendet.

'NO_SPLIT': Verwendet alle Daten als Trainingsdaten.

Der Standardwert für lineare und logistische Regressionsmodelle ist 'AUTO_SPLIT'.

Der Standardwert für Matrixfaktorisierungsmodelle ist 'NO_SPLIT'. Wenn Sie sich für eine andere Aufteilungsmethode entscheiden, achten Sie darauf, dass alle Nutzer und Artikel im Trainings-Dataset genügend Zeilen haben, damit ein leistungsfähiges Modell erstellt werden kann.

Diese Option wird von TensorFlow- oder k-Means-Modellen nicht unterstützt.

DATA_SPLIT_EVAL_FRACTION

Syntax

DATA_SPLIT_EVAL_FRACTION = float64_value

Beschreibung

Diese Option wird für Aufteilungen vom Typ 'RANDOM' und 'SEQ' verwendet. Sie gibt den Anteil der zur Bewertung verwendeten Daten mit einer Genauigkeit von zwei Dezimalstellen an.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'. Der Standardwert ist 0,2.

DATA_SPLIT_COL

Syntax

DATA_SPLIT_COL = string_value

Beschreibung

Gibt die Spalte an, die zum Aufteilen der Daten verwendet wird. Diese Spalte kann nicht als Feature oder Label verwendet werden und wird automatisch von den Features ausgeschlossen.

  • Wenn der Wert von DATA_SPLIT_METHOD auf 'CUSTOM' gesetzt ist, muss die entsprechende Spalte vom Typ BOOL sein. Die Zeilen mit TRUE- oder NULL-Werten werden als Bewertungsdaten verwendet. Zeilen mit FALSE-Werten werden als Trainingsdaten verwendet.

  • Wenn der Wert von DATA_SPLIT_METHOD auf 'SEQ' gesetzt ist, werden die letzten n Zeilen aufsteigend in der entsprechenden Spalte als Bewertungsdaten verwendet, wobei n dem für DATA_SPLIT_EVAL_FRACTION angegebenen Wert entspricht. Die ersten Zeilen werden als Trainingsdaten verwendet.

Informationen zu unterstützten Eingabetypen finden Sie unter Unterstützte Eingabetypen für DATA_SPLIT_COL.

Weitere Informationen zur Verwendung von DATA_SPLIT_COL mit AutoML-Modelltypen finden Sie unter CREATE MODEL-Anweisung für AutoML Tables-Modelle.

Argumente

string_value gehört zur Gruppe 'STRING'.

LS_INIT_LEARN_RATE

Syntax

LS_INIT_LEARN_RATE = float64_value

Beschreibung

Legt die anfängliche Lernrate fest, die von LEARN_RATE_STRATEGY='LINE_SEARCH' verwendet wird. Diese Option kann nur verwendet werden, wenn LINE_SEARCH angegeben ist.

Wenn sich die LEARN_RATE des Modells laut ML.TRAINING_INFO bei jedem Durchlauf zu verdoppeln scheint, versuchen Sie, LS_INIT_LEARN_RATE auf die zuletzt verdoppelte Lernrate zu setzen. Die optimale anfängliche Lernrate unterscheidet sich von Modell zu Modell. Eine anfängliche Lernrate, die bei einem Modell gut funktioniert, muss nicht unbedingt bei einem anderen Modell genauso gut funktionieren.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'.

WARM_START

Syntax

WARM_START = { TRUE | FALSE }

Beschreibung

Trainiert ein Modell mit neuen Trainingsdaten und/oder neuen Modelloptionen noch einmal. Wenn nicht explizit überschrieben, werden die anfänglich zum Trainieren des Modells verwendeten Optionen für den Warmstartlauf verwendet.

Bei einem Warmstartlauf wird die Durchlaufnummerierung auf null zurückgesetzt. Anhand der TRAINING_RUN-Nummer oder der TIMESTAMP-Spalten kann der Warmstartlauf vom ursprünglichen Durchlauf unterschieden werden.

Die Werte der Optionen MODEL_TYPE und LABELS sowie das Trainingsdatenschema müssen bei einem Warmstart konstant bleiben. Die Option warm_start wird nur für das neue Trainieren der Modelle LINEAR_REG, LOGISTIC_REG und KMEANS unterstützt.

Argumente

Nimmt einen BOOL an. Der Standardwert ist FALSE.

AUTO_CLASS_WEIGHTS

Syntax

AUTO_CLASS_WEIGHTS = { TRUE | FALSE }

Beschreibung

Gibt an, ob Klassenlabels mithilfe von Gewichtungen für jede Klasse umgekehrt proportional zur Häufigkeit der jeweiligen Klasse ausgeglichen werden sollen.

Wird mit boosted_Tree_classifier, DNN_CLASSIFIER, logistischen und mehrklassigen logistischen Regressionen verwendet.

Standardmäßig sind die Trainingsdaten, die zum Erstellen einer mehrklassigen logistischen Regression, eines Boosted Tree-Klassifikators und eines DNN-Klassifikators verwendet werden, ungewichtet. Wenn die Labels in den Trainingsdaten nicht ausgewogen sind, lernt das Modell die Vorhersage der beliebtesten Labelklasse unter Umständen zu intensiv, was vielleicht nicht erwünscht ist.

Verwenden Sie die folgende Formel, um die Klassen untereinander auszugleichen:

total_input_rows / (input_rows_for_class_n * number_of_unique_classes)

Argumente

Nimmt einen BOOL an. Der Standardwert ist FALSE.

CLASS_WEIGHTS

Syntax

CLASS_WEIGHTS = struct_array

Beschreibung

Die für die einzelnen Klassenlabels zu verwendenden Gewichtungen. Diese Option kann nicht angegeben werden, wenn AUTO_CLASS_WEIGHTS angegeben ist.

Argumente

struct_array ist ein ARRAY von STRUCTs. Jedes STRUCT enthält einen STRING mit dem Klassenlabel und einen FLOAT64-Wert mit der Gewichtung für dieses Klassenlabel. Für jedes Klassenlabel muss eine Gewichtung vorhanden sein. Die Gewichtungen müssen nicht eins ergeben. Beispiel:

CLASS_WEIGHTS = [STRUCT('example_label', .2)]

NUM_CLUSTERS

Syntax

NUM_CLUSTERS = int64_value

Beschreibung

Bei einem k-Means-Modell die Anzahl der Cluster, die in den Eingabedaten identifiziert werden sollen.

Argumente

int64_value gehört zur Gruppe 'INT64'. Zulässige Werte sind 2 bis 100. Der Standardwert ist log10(n), wobei n die Anzahl der Trainingsbeispiele ist.

KMEANS_INIT_METHOD

Syntax

KMEANS_INIT_METHOD = { 'RANDOM' | 'KMEANS++' | 'CUSTOM' }

Beschreibung

Bei einem k-Means-Modell die Methode zur Initialisierung der Cluster.

Wenn Sie bei wiederholten CREATE MODEL-Abfragen denselben Schwerpunkte verwenden möchten, geben Sie die Option 'CUSTOM' an.

Argumente

'RANDOM': Initialisiert die Schwerpunkte durch zufällige Auswahl von NUM_CLUSTERS-Datenpunkten aus den Eingabedaten.

'KMEANS++': Initialisiert NUM_CLUSTERS-Schwerpunkte mithilfe des Algorithmus KMEANS++. 'KMEANS++' trainiert ein besseres Modell als die Clusterinitialisierung 'RANDOM'.

'CUSTOM': Initialisiert die Schwerpunkte mithilfe einer bereitgestellten Spalte vom Typ BOOL. Diese Spalte wird durch die Option 'KMEANS_INIT_COL' angegeben. BigQuery ML verwendet die Zeilen mit dem Wert TRUE als anfängliche Schwerpunkte. Wenn diese Option vorhanden ist und die Werte in 'KMEANS_INIT_COL' konstant sind, verwenden wiederholte CREATE MODEL-Abfragen dieselben Schwerpunkte.

Der Standardwert ist 'RANDOM'.

KMEANS_INIT_COL

Syntax

KMEANS_INIT_COL = string_value

Beschreibung

Bei einem k-Means-Modell wird die Spalte identifiziert, die zum Initialisieren der Schwerpunkte verwendet wird. Wenn diese Spalte für eine bestimmte Zeile den Wert TRUE enthält, verwendet BigQuery ML diese Zeile als anfänglichen Schwerpunkt.

Diese Option kann nur angegeben werden, wenn 'KMEANS_INIT_METHOD' den Wert 'CUSTOM' hat. Die entsprechende Spalte muss vom Typ BOOL sein. Die Modelloption NUM_CLUSTERS muss in der Abfrage vorhanden sein und ihr Wert muss der Gesamtanzahl von TRUE-Zeilen in dieser Spalte entsprechen. BigQuery ML kann diese Spalte nicht als Feature verwenden und schließt sie automatisch aus den Features aus.

Argumente

string_value gehört zur Gruppe 'STRING'.

DISTANCE_TYPE

Syntax

DISTANCE_TYPE = { 'EUCLIDEAN' | 'COSINE' }

Beschreibung

Bei einem k-Means-Modell der Messwerttyp, der zum Berechnen der Entfernung zwischen zwei Punkten verwendet wird.

Argumente

Akzeptiert die folgenden Werte als Eingabe:

'EUCLIDEAN': Verwendet die folgende Gleichung, um den Abstand zwischen Punkten x und y zu berechnen:

$$ \lVert x-y\rVert_{2} $$

'COSINE': Berechnet die Entfernung nach der folgenden Gleichung:

$$ \sqrt{1-\frac{x \cdot y}{\lVert x\rVert_{2}\lVert y\rVert_{2}}} $$

wobei \( \lVert x\rVert_{2} \) die L2-Norm für x darstellt.

Der Standardwert ist 'EUCLIDEAN'.

STANDARDIZE_FEATURES

Syntax

STANDARDIZE_FEATURES = { TRUE | FALSE }

Beschreibung

Gibt für ein kmeans-Modell an, ob numerische Features standardisiert werden sollen.

Argumente

Nimmt einen BOOL an. Der Standardwert ist TRUE.

MODEL_PATH

Syntax

MODEL_PATH = string_value

Beschreibung

Gibt für TensorFlow-Modelltypen den Speicherort des zu importierenden TensorFlow-Modells an.

string_value ist der Speicherort eines Google Cloud Storage-Buckets, der das zu importierende Modell enthält.

Weitere Informationen finden Sie unter CREATE MODEL-Anweisung zum Importieren von TensorFlow-Modellen.

Beispiel

MODEL_PATH = 'gs:////bucket/path/to/saved_model/*'

FEEDBACK_TYPE

Syntax

FEEDBACK_TYPE = { 'EXPLICIT' | 'IMPLICIT' }

Beschreibung

Gibt den Feedbacktyp für Matrixfaktorisierungsmodelle an. Dadurch wird der Algorithmus geändert, der während des Trainings verwendet wird.

Weitere Informationen finden Sie unter Matrixfaktorisierungsmodelle.

Argumente

Der Standardwert ist 'EXPLICIT'.

NUM_FACTORS

Syntax

NUM_FACTORS = int64_value

Beschreibung

Gibt die Anzahl der latenten Faktoren an, die für Matrixfaktorisierungsmodelle verwendet werden sollen.

Argumente

int64_value gehört zur Gruppe 'INT64'. Zulässige Werte sind 2 bis 200. Der Standardwert ist log2(n), wobei n die Anzahl der Trainingsbeispiele ist.

USER_COL

Syntax

USER_COL = string_value

Beschreibung

Der Name der Nutzerspalte für Matrixfaktorisierungsmodelle.

Argumente

string_value gehört zur Gruppe 'STRING'. Der Standardwert ist 'user'.

ITEM_COL

Syntax

ITEM_COL = string_value

Beschreibung

Der Name der Artikelspalte für Matrixfaktorisierungsmodelle.

Argumente

string_value gehört zur Gruppe 'STRING'. Der Standardwert ist 'item'.

RATING_COL

Syntax

RATING_COL = string_value

Beschreibung

Der Name der Bewertungsspalte für Matrixfaktorisierungsmodelle.

Argumente

string_value gehört zur Gruppe 'STRING'. Der Standardwert ist 'rating'.

WALS_ALPHA

Syntax

WALS_ALPHA = float64_value

Beschreibung

Ein Hyperparameter für das 'IMPLICIT'-Matrixfaktorisierungsmodell. Weitere Informationen finden Sie unter Matrixfaktorisierungsmodelle.

Argumente

float64_value gehört zur Gruppe 'FLOAT64'. Der Standardwert ist 40.

BUDGET_HOURS

Syntax

BUDGET_HOURS = float64_value

Beschreibung

Legt das Trainingsbudget für das AutoML Tables-Training in Stunden fest. Die Standardeinstellung ist 1,0 und der Wert muss zwischen 1,0 und 72,0 liegen. Diese Option kann nur verwendet werden, wenn MODEL_TYPE den Wert AUTOML_REGRESSOR oder AUTOML_CLASSIFIER hat.

Nach dem Training von AutoML Tables-Modellen komprimiert BigQuery ML das Modell, damit es klein genug ist, um importiert zu werden. Dies kann bis zu 50 % der Trainingszeit in Anspruch nehmen. Die Zeit für die Komprimierung des Modells ist nicht in der Trainingsbudgetzeit enthalten.

Weitere Informationen finden Sie in der CREATE MODEL-Anweisung für AutoML Tables-Modelle.

Argumente

float64_value gehört zur Gruppe FLOAT64.

BOOSTER_TYPE

Syntax

BOOSTER_TYPE =  { 'GBTREE' | 'DART'}

Beschreibung

Geben Sie für Boosted Tree-Modelle den zu verwendenden Boostertyp an. Der Standardwert ist GBTREE.

Argumente

Folgende Optionen sind verfügbar:

NUM_PARALLEL_TREE

Syntax

NUM_PARALLEL_TREE = int64_value

Beschreibung

Anzahl der parallelen Bäume, die in jedem Durchlauf erstellt werden. Der Standardwert ist 1. Legen Sie hierfür einen Wert über 1 fest, um einen Boosted Random Forest zu trainieren.

DART_NORMALIZE_TYPE

Syntax

DART_NORMALIZE_TYPE = { 'TREE' | 'FOREST'}

Beschreibung

Art des Normalisierungsalgorithmus für DART-Booster. Der Standardwert ist TREE.

TREE_METHOD

Syntax

TREE_METHOD = { 'AUTO' | 'EXACT' | 'APPROX' | 'HIST'}

Beschreibung

Typ des Baumerstellungsalgorithmus. Der Standardwert ist AUTO.

MIN_TREE_CHILD_WEIGHT

Syntax

MIN_TREE_CHILD_WEIGHT = float64_value

Beschreibung

Minimale Summe der Instanzgewichtung, die in einem untergeordneten Element für die weitere Partitionierung erforderlich ist. Wenn der Schritt der Baumpartitionierung zu einem Blattknoten führt, bei dem die Summe der Instanzgewichtung kleiner als min_tree_child_weight ist, stellt der Erstellungsprozess die weitere Partitionierung ein. Je größer der Wert von min_tree_child_weight ist, desto konservativer ist der Algorithmus. Der Wert muss größer oder gleich 0 sein. Der Standardwert ist 1.

COLSAMPLE_BYTREE

Syntax

COLSAMPLE_BYTREE = float64_value

Beschreibung

Subsampling-Rate für Spalten beim Erstellen der einzelnen Bäume. Das Subsampling erfolgt einmal für jeden erstellten Baum. Der Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 1.

COLSAMPLE_BYLEVEL

Syntax

COLSAMPLE_BYLEVEL = float64_value

Beschreibung

Subsampling-Rate für Spalten für jede Ebene. Das Subsampling erfolgt einmal für jede neue Ebene, die in einem Baum erreicht wird. Die Spalten werden aus den Spalten ausgewählt, die für den aktuellen Baum ausgewählt wurden. Der Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 1.

COLSAMPLE_BYNODE

Syntax

COLSAMPLE_BYNODE = float64_value

Beschreibung

Subsampling-Rate für Spalten für jeden Knoten (Aufteilung). Das Subsampling erfolgt jedes Mal, wenn eine neue Aufteilung ausgewertet wird. Die Spalten werden aus den Spalten ausgewählt, die für die aktuelle Ebene ausgewählt wurden. Der Wert muss zwischen 0 und 1 liegen. Der Standardwert ist 1.

MIN_SPLIT_LOSS

Syntax

MIN_SPLIT_LOSS = float64_value

Beschreibung

Minimale Verlustreduzierung, die erforderlich ist, damit eine weitere Partition auf einem Blattknoten des Baums erstellt wird. Je größer der Wert von min_split_loss ist, desto konservativer ist der Algorithmus. Der Standardwert ist 0.

MAX_TREE_DEPTH

Syntax

MAX_TREE_DEPTH = int64_value

Beschreibung

Maximale Tiefe eines Baums. Der Standardwert ist 6.

SUBSAMPLE

Syntax

SUBSAMPLE = float64_value

Beschreibung

Subsampling-Rate für die Trainingsinstanzen. Wenn Sie diesen Wert auf 0,5 setzen, wird beim Training die Hälfte der Trainingsdaten nach dem Zufallsprinzip ausgewählt, bevor die Bäume erweitert werden. So wird eine Überanpassung vermieden. Das Subsampling erfolgt einmal pro Boosting-Durchlauf. Dies ist unabhängig von der Aufteilung der Trainings-/Testdaten, die in den Trainingsoptionen verwendet wird (standardmäßig 80/20 zufällig). Die Testdaten werden in keinem Durchlauf verwendet, unabhängig von der Teilprobe. Die Teilprobe wird nur auf die Trainingsdaten angewendet. Der Wert muss zwischen 0 und 1 liegen, wobei der Standardwert 1,0 ist (alle Trainingsdaten in jedem Durchlauf verwenden).

ACTIVATION_FN

Syntax

ACTIVATION_FN =  { 'RELU' | 'RELU6' | 'CRELU' | 'ELU' | 'SELU' | 'SIGMOID' | 'TANH' }

Beschreibung

Gibt für DNN-Modelltypen die Aktivierungsfunktion des neuronalen Netzwerks an.

Argumente

Folgende Optionen sind verfügbar:

BATCH_SIZE

Syntax

BATCH_SIZE = int64_value

Beschreibung

Gibt für DNN-Modelltypen die minimale Batchgröße von Stichproben an, die an das neuronale Netzwerk gesendet werden.

Argumente

Der Standardwert ist 1.024 oder die Stichprobenzahl, je nachdem, welcher Wert kleiner ist.

Der Maximalwert beträgt 8192.

DROPOUT

Syntax

DROPOUT = float64_value

Beschreibung

Gibt für DNN-Modelltypen die Dropout-Rate für Einheiten im neuronalen Netzwerk an.

Argumente

Der Standardwert ist 0. Gültig sind Eingaben zwischen 0,0 und 1,0.

HIDDEN_UNITS

Syntax

HIDDEN_UNITS = int_array

Beschreibung

Gibt für DNN-Modelltypen die verborgenen Layer des neuronalen Netzwerks an.

Argumente

Ein Array von Ganzzahlen, das die Architektur der verborgenen Layer darstellt. Wenn nicht angegeben, wendet BigQuery ML einen einzelnen verborgenen Layer an, der nicht mehr als 128 Einheiten enthält.

Beispiel

HIDDEN_UNITS = [256, 128, 64]

Dieses Beispiel zeigt eine Architektur mit drei verborgenen Layern mit 256, 128 und 64 Knoten.

OPTIMIZER

Syntax

OPTIMIZER =  { 'ADAGRAD' | 'ADAM' | 'FTRL' | 'RMSPROP' | 'SGD' }

Beschreibung

Gibt für DNN-Modelltypen das Optimierungsprogramm zum Trainieren des Modells an.

Argumente

Folgende Optionen sind verfügbar:

TIME_SERIES_TIMESTAMP_COL

Syntax

TIME_SERIES_TIMESTAMP_COL = string_value

Beschreibung

Der Name der Zeitstempelspalte für Zeitachsenmodelle.

Argumente

string_value gehört zur Gruppe 'STRING'.

TIME_SERIES_DATA_COL

Syntax

TIME_SERIES_DATA_COL = string_value

Beschreibung

Der Name der Datenspalte für Zeitachsenmodelle.

Argumente

string_value gehört zur Gruppe 'STRING'.

TIME_SERIES_ID_COL

Syntax

TIME_SERIES_ID_COL = string_value

Beschreibung

Der Name der ID-Spalte für Zeitachsenmodelle. Diese Spalte wird verwendet, wenn der Nutzer mehrere Zeitachsen mit einer einzigen Abfrage anpassen und prognostizieren möchte. Unterschiedliche IDs stehen für unterschiedliche Zeitachsen.

Argumente

string_value gehört zur Gruppe 'STRING'.

HORIZON

Syntax

HORIZON = int64_value

Beschreibung

Die Anzahl der zu prognostizierenden Zeitpunkte. Wenn Sie mehrere Zeitachsen gleichzeitig prognostizieren, gilt dieser Parameter für jede Zeitachse.

Argumente

Der Wert ist ein INT64. Der Standardwert ist 1.000. Der Höchstwert ist 10.000.

AUTO_ARIMA

Syntax

AUTO_ARIMA = { TRUE | FALSE }

Beschreibung

Gibt an, ob für den Trainingsprozess auto.ARIMA verwendet werden soll. Wenn der Wert "true" ist, wird beim Training automatisch die beste nicht saisonale Reihenfolge (z. B. das Tupel p, d, q) ermittelt und es wird entschieden, ob ein linearer Driftbegriff einzuschließen ist, wenn d 1 ist. Wenn der Wert "false" ist, muss der Nutzer in der Abfrage "non_saisonal_order" angeben. Wenn Sie mehrere Zeitachsen gleichzeitig prognostizieren, muss der auto.ARIMA-Algorithmus für jede Zeitachse verwendet werden. Daher darf diese Option nicht auf "false" gesetzt werden.

Argumente

Der Wert ist ein BOOL. Der Standardwert ist TRUE.

NON_SEASONAL_ORDER

Syntax

NON_SEASONAL_ORDER = (int64_value, int64_value, int64_value)

Beschreibung

Das Tupel des nicht saisonalen "p", "d", "q" für das ARIMA-Modell. Es gibt keine Standardwerte und Sie müssen alle angeben. Sie müssen auto_arima explizit auf "false" setzen, um diese Option zu verwenden. Derzeit sind "p" und "q" auf [0, 1, 2, 3, 4, 5] und "d" auf [0, 1, 2] beschränkt. Wenn Sie mehrere Zeitachsen gleichzeitig prognostizieren, ist es sehr unwahrscheinlich, dass eine bestimmte nicht saisonale Reihenfolge für alle Zeitachsen passt. Der auto.ARIMA-Algorithmus wird verwendet, um für jede Zeitachse die beste nicht saisonale Reihenfolge zu finden. Daher ist diese Option in diesem Fall deaktiviert.

Argumente

(int64_value, int64_value, int64_value) ist ein Tupel aus drei 'INT64'-Werten.

DATA_FREQUENCY

Syntax

DATA_FREQUENCY = { 'AUTO_FREQUENCY' | 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY' | 'YEARLY' }

Beschreibung

Die Datenhäufigkeit der Eingabezeitachse. Der exakteste unterstützte Detaillierungsgrad ist 'HOURLY'. Bei der Prognose mehrerer Zeitachsen gleichzeitig muss dieses Argument den Standardwert 'AUTO_FREQUENCY' haben.

Argumente

Akzeptiert die folgenden Werte als Eingabe:

'AUTO_FREQUENCY': Der Trainingsprozess leitet automatisch die Datenhäufigkeit ab. Dabei kann es sich um einen der unten aufgeführten Werte handeln.

'HOURLY': Zeitachse mit stündlichen Werten

'DAILY': Zeitachse mit täglichen Werten

'WEEKLY': Zeitachse mit wöchentlichen Werten

'MONTHLY': Zeitachse mit monatlichen Werten

'QUARTERLY': Zeitachse mit vierteljährlichen Werten

'YEARLY': Zeitachse mit jährlichen Werten

Der Standardwert ist 'AUTO_FREQUENCY'.

INCLUDE_DRIFT

Syntax

INCLUDE_DRIFT = { TRUE | FALSE }

Beschreibung

Gibt an, ob das ARIMA-Modell einen linearen Driftbegriff enthalten soll. Der Driftbegriff kann angewendet werden, wenn das nicht saisonale "d" 1 ist.

  • Wenn auto.Arima auf "false" gesetzt ist, ist dieses Argument standardmäßig "false". Es kann nur auf "true" gesetzt werden, wenn das nicht saisonale "d" 1 ist. Andernfalls wird ein Fehler für eine ungültiger Abfrage zurückgegeben.

  • Wenn auto.ARIMA auf "true" gesetzt ist, wird automatisch entschieden, ob ein linearer Driftbegriff einzuschließen ist. Daher ist diese Option für auto.ARIMA deaktiviert.

Argumente

Der Wert ist ein BOOL. Der Standardwert ist FALSE, wenn Auto-Arima deaktiviert ist.

HOLIDAY_REGION

Syntax

HOLIDAY_REGION = { 'GLOBAL' | 'NA' | 'JAPAC' | 'EMEA' | 'LAC' | 'AE' | ... }

Beschreibung

Die geografische Region, anhand der die Feiertagseffekte bei der Modellierung angewendet werden. Standardmäßig ist die Effektmodellierung deaktiviert. Geben Sie zum Aktivieren die Feiertagsregion mit dieser Option an.

Argumente

Akzeptiert die folgenden Werte als Eingabe:

Oberste Ebene: global

  • 'GLOBAL'

Zweite Ebene: kontinentale Regionen

  • 'NA': Nordamerika
  • 'JAPAC': Japan und asiatisch-pazifischer Raum
  • 'EMEA': Europa, Naher Osten und Afrika
  • 'LAC': Lateinamerika und die Karibik

Dritte Ebene: Länder/Regionen

  • 'AE': Vereinigte Arabische Emirate
  • 'AR': Argentinien
  • 'AT': Österreich
  • 'AU': Australien
  • 'BE': Belgien
  • 'BR': Brasilien
  • 'CA': Kanada
  • 'CH': Schweiz
  • 'CL': Chile
  • 'CN': China
  • 'CO': Kolumbien
  • 'CZ': Tschechien
  • 'DE': Deutschland
  • 'DK': Dänemark
  • 'DZ': Algerien
  • 'EC': Ecuador
  • 'EE': Estland
  • 'EG': Ägypten
  • 'ES': Spanien
  • 'FI': Finnland
  • 'FR': Frankreich
  • 'GB': Vereinigtes Königreich
  • 'GR': Griechenland
  • 'HK': Hongkong
  • 'HU': Ungarn
  • 'ID': Indonesien
  • 'IE': Irland
  • 'IL': Israel
  • 'IN': Indien
  • 'IR': Iran
  • 'IT': Italien
  • 'JP': Japan
  • 'KR': Südkorea
  • 'LV': Lettland
  • 'MA': Marokko
  • 'MX': Mexiko
  • 'MY': Malaysia
  • 'NG': Nigeria
  • 'NL': Niederlande
  • 'NO': Norwegen
  • 'NZ': Neuseeland
  • 'PE': Peru
  • 'PH': Philippinen
  • 'PK': Pakistan
  • 'PL': Polen
  • 'PT': Portugal
  • 'RO': Rumänien
  • 'RS': Serbien
  • 'RU': Russland
  • 'SA': Saudi-Arabien
  • 'SE': Schweden
  • 'SG': Singapur
  • 'SI': Slowenien
  • 'SK': Slowakei
  • 'TH': Thailand
  • 'TR': Türkei
  • 'TW': Taiwan
  • 'UA': Ukraine
  • 'US': USA
  • 'VE': Venezuela
  • 'VN': Vietnam
  • 'ZA': Südafrika

query_statement

Die Klausel AS query_statement gibt die Standard-SQL-Abfrage an, die zum Erstellen der Trainingsdaten verwendet wird. Informationen zu der von der Klausel query_statement unterstützten SQL-Syntax finden Sie auf der Seite zur Standard-SQL-Abfragesyntax.

Alle Spalten, auf die query_statement verweist, werden als Eingaben für das Modell verwendet. Hiervon ausgenommen sind die Spalten, die in input_label_cols und data_split_col enthalten sind.

Unterstützte Eingaben

Die Anweisung CREATE MODEL unterstützt die folgenden Datentypen für Eingabelabel- und Datenaufteilungsspalten.

Unterstützte Datentypen für Eingabelabelspalten

BigQuery ML unterstützt je nach Modelltyp verschiedene Standard-SQL-Datentypen. input_label_cols unterstützt folgende Datentypen:

Model type Supported label types
linear_reg INT64
NUMERIC
FLOAT64
logistic_reg Jeder gruppierbare Datentyp
kmeans Jeder gruppierbare Datentyp

Unterstützte Datentypen für Datenaufteilungsspalten

BigQuery ML unterstützt je nach Datenaufteilungsmethode verschiedene Standard-SQL-Datentypen. data_split_col unterstützt folgende Datentypen:

Data split method Supported column types
custom BOOL
seq INT64
NUMERIC
FLOAT64
TIMESTAMP

Einschränkungen

Für CREATE MODEL-Anweisungen gelten die folgenden Regeln:

  • Es ist nur eine CREATE-Anweisung zulässig.
  • Wenn Sie eine CREATE MODEL-Anweisung verwenden, darf das Modell maximal 90 MB groß sein, andernfalls schlägt die Abfrage fehl. Wenn alle kategorialen Variablen kurze Strings sind, wird im Allgemeinen eine Feature-Gesamtkardinalität (Modelldimension) von 5 bis 10 Millionen unterstützt. Die Dimensionalität hängt von der Kardinalität und der Länge der Stringvariablen ab.
  • Die Labelspalte darf keine NULL-Werte enthalten. Wenn die Labelspalte NULL-Werte enthält, schlägt die Abfrage fehl.
  • Derzeit aktualisiert die Klausel CREATE MODEL IF NOT EXISTS immer den jeweils letzten geänderten Zeitstempel eines Modells.
  • Bei linearen Regressionsmodellen muss die Spalte label reellwertig sein. Die Spaltenwerte dürfen nicht positiv oder negativ unendlich oder NaN sein.
  • Bei logistischen Regressionsmodellen können die Labelspalten bis zu 50 eindeutige Werte enthalten. Das heißt, die Anzahl der Klassen ist kleiner oder gleich 50.

Transformationen von Eingabevariablen

BigQuery ML transformiert Eingabevariablen oder -Features so:

Datentyp der Eingabe Transformationsmethode Details
INT64
NUMERIC
FLOAT64
Standardisierung Bei allen numerischen Spalten standardisiert und zentriert BigQuery ML die Spalte bei null, bevor sie an das Training übergeben wird, mit Ausnahme von Boosted Tree-Modellen. Beim Erstellen eines k-Means-Modells gibt die STANDARDIZE_FEATURES-Option an, ob numerische Features standardisiert werden sollen.
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 durch, außer bei Boosted Tree-Modellen. Diese Transformation generiert ein separates Feature für jeden eindeutigen Wert in der Spalte. Die Transformation der Labelcodierung wird so auf trainierte Boosted Tree-Modelle 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 BigQuery ML auf eine TIMESTAMP-Spalte stößt, extrahiert es eine Reihe von Komponenten aus TIMESTAMP und führt eine Mischung aus Standardisierung und One-Hot-Codierung für die extrahierten Komponenten durch. 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.

Mit der Funktion ML.WEIGHTS können Sie die Transformation einer TIMESTAMP-Spalte in mehrere Featurespalten anzeigen lassen.
STRUCT Struct-Erweiterung Wenn BigQuery ML eine Spalte STRUCT erkennt, werden die Felder in STRUCT auf einzelne Spalten erweitert. Alle Felder müssen benannt werden. Ein verschachteltes STRUCT ist nicht zulässig. Nach der Erweiterung haben die Spaltennamen das Format {Struct-Name}_{Feldname}.

Imputation

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. Wie BigQuery ML mit fehlenden Daten umgeht, hängt davon ab, ob die Spalte numerisch, One-Hot-codiert oder ein Zeitstempel ist.

Numerische Spalten

Beim Training und bei der Vorhersage werden NULL-Werte in numerischen Spalten durch den Mittelwert ersetzt, der von der Featurespalte in den ursprünglichen Eingabedaten berechnet wurde.

One-Hot- und Multi-Hot-codierte Spalten

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.

Zeitstempelspalten

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-Spalten

Beim Training und bei der Vorhersage wird jedes STRUCT-Feld seinem Typ entsprechend hinzugefügt.

Beispiele für CREATE MODEL

Die Anweisung CREATE MODEL erstellt ein Modell mit den angegebenen Optionen. Wenn der Modellname im Dataset vorhanden ist, wird der folgende Fehler zurückgegeben:

Already Exists: [PROJECT_ID]:[DATASET].[MODEL]

Wenn Sie ein vorhandenes Modell ersetzen möchten, verwenden Sie stattdessen die Anweisung CREATE OR REPLACE MODEL.

In den folgenden Beispielen werden Modelle namens mymodel unter mydataset in Ihrem Standardprojekt erstellt.

Lineares Regressionsmodell trainieren

Im folgenden Beispiel wird ein lineares Regressionsmodell erstellt und trainiert. Die Lernrate wird auf 0,15, die L1-Regularisierung auf 1 und die maximale Anzahl der Trainingsdurchläufe auf 5 festgelegt.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='LINEAR_REG',
    LS_INIT_LEARN_RATE=.15,
    L1_REG=1,
    MAX_ITERATIONS=5 ) AS
SELECT
  column1,
  column2,
  column3,
  label
FROM
  `mydataset.mytable`
WHERE
  column4 < 10

Lineares Regressionsmodell mit sequentieller Datenaufteilung trainieren

In diesem Beispiel erstellen Sie ein lineares Regressionsmodell mit sequenzieller Datenaufteilung. Der Aufteilungsanteil liegt bei 0,3 und die Spalte timestamp bildet die Grundlage für die Aufteilung.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='LINEAR_REG',
    LS_INIT_LEARN_RATE=.15,
    L1_REG=1,
    MAX_ITERATIONS=5,
    DATA_SPLIT_METHOD='SEQ',
    DATA_SPLIT_EVAL_FRACTION=0.3,
    DATA_SPLIT_COL='timestamp' ) AS
SELECT
  column1,
  column2,
  column3,
  timestamp,
  label
FROM
  `mydataset.mytable`
WHERE
  column4 < 10

Lineares Regressionsmodell mit benutzerdefinierter Datenaufteilung trainieren

In diesem Beispiel haben Sie Ihre Daten manuell in eine Trainingstabelle und eine Auswertungstabelle aufgeteilt. Die Trainingstabelle heißt training_table. Die Bewertungstabelle heißt evaluation_table.

Folgender Befehl erstellt ein lineares Regressionsmodell mithilfe einer benutzerdefinierten Aufteilungsmethode. Das Modell wird außerdem trainiert, indem die Daten aus den Auswertungs- und Trainingstabellen verknüpft werden.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='LINEAR_REG',
    DATA_SPLIT_METHOD='CUSTOM',
    DATA_SPLIT_COL='SPLIT_COL' ) AS
SELECT
  *,
  false AS split_col
FROM
  `mydataset.training_table`
UNION ALL
SELECT
  *,
  true AS split_col
FROM
  `mydataset.evaluation_table`

In diesem Beispiel sind alle Spalten in der Trainings- und Auswertungstabelle entweder Features oder Labels. Die Abfrage verwendet SELECT * und UNION ALL, um alle Daten in der Spalte split_col an die vorhandenen Daten anzufügen.

Mehrklassiges logistisches Regressionsmodell mit automatisch berechneten Gewichtungen trainieren

In diesem Beispiel erstellen Sie mit der Option auto_class_weights ein mehrklassiges logistisches Regressionsmodell.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='LOGISTIC_REG',
    AUTO_CLASS_WEIGHTS=TRUE ) AS
SELECT
  *
FROM
  `mydataset.mytable`

Mehrklassiges logistisches Regressionsmodell mit angegebenen Gewichtungen trainieren

In diesem Beispiel erstellen Sie mit der Option class_weights ein mehrklassiges logistisches Regressionsmodell. Die Labelspalten lauten label1, label2 und label3.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='LOGISTIC_REG',
    CLASS_WEIGHTS=[('label1', 0.5), ('label2', 0.3), ('label3', 0.2)]) AS
SELECT
  *
FROM
  `mydataset.mytable`

Logistisches Regressionsmodell mit angegebenen Gewichtungen trainieren

In diesem Beispiel erstellen Sie mit der Option class_weights ein logistisches Regressionsmodell.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='LOGISTIC_REG',
    CLASS_WEIGHTS=[('0', 0.9), ('1', 0.1)]) AS
SELECT
  *
FROM
  `mydataset.mytable`

k-Means-Modell trainieren

In diesem Beispiel wird ein k-Means-Modell mit vier Clustern unter Verwendung des distance_type-Standardwerts euclidean_distance erstellt.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='KMEANS',
    NUM_CLUSTERS=4 ) AS
SELECT
  *
FROM `mydataset.mytable`

k-Means-Modell mit zufälligen Clustern trainieren

In diesem Beispiel wird mithilfe der Methode für zufällige Clusterinitialisierung ein k-Means-Modell mit drei Clustern erstellt.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='KMEANS',
    NUM_CLUSTERS=3,
    KMEANS_INIT_METHOD='RANDOM') AS
SELECT
  *
FROM
  `mydataset.mytable`

k-Means-Modell mit benutzerdefinierten Clustern trainieren

In diesem Beispiel wird unter Verwendung der Methode für zufällige Clusterinitialisierung ein k-Means-Modell mit vier Clustern erstellt. init_col identifiziert die Spalte des Typs BOOL mit den Werten, die angeben, ob eine bestimmte Zeile ein anfänglicher Schwerpunkt ist. Diese Spalte sollte nur drei Zeilen mit dem Wert TRUE enthalten.

CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  ( MODEL_TYPE='KMEANS',
    NUM_CLUSTERS=3,
    KMEANS_INIT_METHOD='CUSTOM',
    KMEANS_INIT_COL='init_col') AS
SELECT
  init_col,
  features
FROM
  `mydataset.mytable`

Modellerstellung mit TRANSFORM unter Ausschluss der ursprünglichen Spalten

Die folgende Abfrage trainiert ein Modell nach dem Hinzufügen der Spalten f1 und f2 aus der SELECT-Anweisung, um eine neue Spalte c zu bilden. Die Spalten f1 und f2 werden in den Trainingsdaten ausgelassen. Beim Modelltraining werden die Spalten f3 und label_col entsprechend der Datenquelle t verwendet.

CREATE MODEL m
  TRANSFORM(f1 + f2 as c, * EXCEPT(f1, f2))
  OPTIONS(model_type=’linear_reg’, input_label_cols=['label_col'])
AS SELECT f1, f2, f3, label_col FROM t;