Declaración CREATE MODEL para modelos de árbol mejorado

Declaración CREATE MODEL para modelos de árbol mejorado mediante XGBoost

Para crear un modelo de árbol mejorado en BigQuery, usa la declaración CREATE MODEL de BigQuery ML con los tipos de modelo BOOSTED_TREE_CLASSIFIER o BOOSTED_TREE_REGRESSOR. El modelo se entrena mediante la biblioteca XGBoost.

Sintaxis de CREATE MODEL

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL} model_name
[OPTIONS(MODEL_TYPE = { 'BOOSTED_TREE_CLASSIFIER' | 'BOOSTED_TREE_REGRESSOR' },
         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,
         AUTO_CLASS_WEIGHTS = { TRUE | FALSE },
         CLASS_WEIGHTS = struct_array,
         L1_REG = float64_value,
         L2_REG = float64_value,
         EARLY_STOP = { TRUE | FALSE },
         LEARN_RATE = float64_value,
         INPUT_LABEL_COLS = string_array,
         MAX_ITERATIONS = int64_value,
         MIN_REL_PROGRESS = float64_value,
)];

CREATE MODEL

Crea un modelo nuevo de BigQuery ML en el conjunto de datos especificado. Si el nombre del modelo ya existe, CREATE MODEL muestra un error.

CREATE MODEL IF NOT EXISTS

Crea un modelo de BigQuery ML nuevo solo si el modelo no existe en la actualidad en el conjunto de datos especificado.

CREATE OR REPLACE MODEL

Crea un modelo de BigQuery ML nuevo y reemplaza los modelos existentes con el mismo nombre en el conjunto de datos especificado.

model_name

model_name es el nombre del modelo de BigQuery ML que creas o reemplazas. El nombre del modelo debe ser único por conjunto de datos: ningún otro modelo o tabla puede tener el mismo nombre. El nombre del modelo debe seguir las mismas reglas de denominación que una tabla de BigQuery. Un nombre de modelo puede contener lo siguiente:

  • Hasta 1,024 caracteres
  • Letras en mayúscula o minúscula, números y guiones bajos

model_name no distingue entre mayúsculas y minúsculas.

Si no tienes un proyecto predeterminado configurado, antepone el ID del proyecto al nombre del modelo en el siguiente formato, incluidos los acentos graves:

`[PROJECT_ID].[DATASET].[MODEL]`

Por ejemplo:

`myproject.mydataset.mymodel`

CREATE MODEL para los modelos de árbol mejorado admite las siguientes opciones:

MODEL_TYPE

Sintaxis

MODEL_TYPE = { 'BOOSTED_TREE_CLASSIFIER' | 'BOOSTED_TREE_REGRESSOR' }

Descripción

Especifica el tipo de modelo. Esta opción es obligatoria.

AUTO_CLASS_WEIGHTS

Sintaxis

AUTO_CLASS_WEIGHTS = { TRUE | FALSE }

Descripción

Si se deben equilibrar las etiquetas de clase mediante pesos para cada clase en proporción inversa a la frecuencia de esa clase

Úsalo solo con el modelo BOOSTED_TREE_CLASSIFIER.

De forma predeterminada, los datos de entrenamiento que se usan para crear un modelo clasificador de árbol mejorado no están ponderados. Si las etiquetas en los datos de entrenamiento no tienen un equilibrio, el modelo puede aprender a predecir la clase de etiquetas más popular, lo que podría no ser conveniente.

Para equilibrar cada clase, usa la siguiente fórmula:

total_input_rows / (input_rows_for_class_n * number_of_unique_classes)

Argumentos

Acepta un BOOL. El valor predeterminado es FALSE.

CLASS_WEIGHTS

Sintaxis

CLASS_WEIGHTS = struct_array

Descripción

Son los pesos que se usan para cada etiqueta de clase. Esta opción no se puede especificar si AUTO_CLASS_WEIGHTS es TRUE.

Argumentos

struct_array es un ARRAY de STRUCT; cada STRUCT contiene una STRING que contiene la etiqueta de clase y un FLOAT64 que contiene el peso de esa etiqueta. Debe haber un peso para cada etiqueta de clase. No es necesario que los pesos sumen uno. Por ejemplo:

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

EARLY_STOP

Sintaxis

EARLY_STOP = { TRUE | FALSE }

Descripción

Indica si el entrenamiento debe detenerse después de la primera iteración en la que la mejora de la pérdida relativa es menor que el valor especificado para MIN_REL_PROGRESS.

Argumentos

El valor es BOOL. El valor predeterminado es TRUE.

INPUT_LABEL_COLS

Sintaxis

INPUT_LABEL_COLS = string_array

Descripción

Son los nombres de las columnas de etiquetas en los datos de entrenamiento.

Argumentos

string_array es un ARRAY de STRING. Los tipos de modelo de árbol mejorado solo admiten valores string_array que contienen un elemento.

L1_REG

Sintaxis

L1_REG = float64_value

Descripción

Se aplicó la cantidad de regularización L1.

Argumentos

float64_value es una FLOAT64. El valor predeterminado es 0.

L2_REG

Sintaxis

L2_REG = float64_value

Descripción

Se aplicó la cantidad de regularización L2.

Argumentos

float64_value es un FLOAT64. El valor predeterminado es 1.0.

LEARN_RATE

Sintaxis

LEARN_RATE = float64_value

Descripción

Learn_rate es la reducción del tamaño del paso que se usa en la actualización para evitar el sobreajuste. Después de cada paso de boosting, learn_rate reduce las ponderaciones de las funciones para que el proceso sea más conservador.

Argumentos

float64_value es un FLOAT64. El valor predeterminado es 0.3.

MAX_ITERATIONS

Sintaxis

MAX_ITERATIONS = int64_value

Descripción

La cantidad máxima de rondas para el boosting

Argumentos

int64_value es un INT64. El valor predeterminado es 20.

MIN_REL_PROGRESS

Sintaxis

MIN_REL_PROGRESS = float64_value

Descripción

La mejora de pérdida relativa mínima que se necesita para continuar con el entrenamiento cuando EARLY_STOP se configura como true. Por ejemplo, un valor de 0.01 especifica que cada iteración debe reducir la pérdida en un 1% para que el entrenamiento continúe.

Argumentos

float64_value es un FLOAT64. El valor predeterminado es 0.01.

BOOSTER_TYPE

Sintaxis

BOOSTER_TYPE =  { 'GBTREE' | 'DART'}

Descripción

Para los modelos de árbol mejorado, especifica el tipo de booster que se usará, con el valor predeterminado gbtree.

Argumentos

Las siguientes opciones están disponibles:

NUM_PARALLEL_TREE

Sintaxis

NUM_PARALLEL_TREE = int64_value

Descripción

Cantidad de árboles paralelos construidos durante cada iteración. El valor predeterminado es 1. Para entrenar un bosque aleatorio mejorado, establece este valor como mayor que 1.

DART_NORMALIZE_TYPE

Sintaxis

DART_NORMALIZE_TYPE = { 'TREE' | 'FOREST'}

Descripción

Tipo de algoritmo de normalización para el booster de DART. El valor predeterminado es tree.

TREE_METHOD

Sintaxis

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

Descripción

Tipo de algoritmo de construcción de árboles. El valor predeterminado es AUTO.

MIN_TREE_CHILD_WEIGHT

Sintaxis

MIN_TREE_CHILD_WEIGHT = float64_value

Descripción

Suma mínima del peso de la instancia que se necesita en un elemento secundario para una mayor partición. Si el paso de partición de árbol da como resultado un nodo hoja con la suma del peso de la instancia menor que min_tree_child_weight, el proceso de compilación dejará de realizar particiones. Cuanto mayor sea min_tree_child_weight, más conservador será el algoritmo. El valor debe ser mayor o igual que 0, con el valor predeterminado 1.

COLSAMPLE_BYTREE

Sintaxis

COLSAMPLE_BYTREE = float64_value

Descripción

Proporción de submuestra de columnas cuando se construye cada árbol. El submuestreo ocurre una vez por cada árbol construido. El valor debe estar entre 0 y 1, con el valor predeterminado 1.

COLSAMPLE_BYLEVEL

Sintaxis

COLSAMPLE_BYLEVEL = float64_value

Descripción

Proporción de submuestra de columnas para cada nivel. El submuestreo ocurre una vez por cada nivel de profundidad nuevo alcanzado en un árbol. Las columnas se submuestran a partir del conjunto de columnas elegido para el árbol actual. El valor debe estar entre 0 y 1, con el valor predeterminado 1.

COLSAMPLE_BYNODE

Sintaxis

COLSAMPLE_BYNODE = float64_value

Descripción

Proporción de submuestra de columnas para cada nodo (división). El submuestreo ocurre una vez por cada vez que se evalúa una nueva división. Las columnas se submuestran a partir del conjunto de columnas elegido para el nivel actual. El valor debe estar entre 0 y 1, con el valor predeterminado 1.

MIN_SPLIT_LOSS

Sintaxis

MIN_SPLIT_LOSS = float64_value

Descripción

Reducción de pérdida mínima necesaria para realizar una partición adicional en un nodo hoja del árbol. Cuanto mayor sea min_split_loss, más conservador será el algoritmo. El valor predeterminado es 0.

MAX_TREE_DEPTH

Sintaxis

MAX_TREE_DEPTH = int64_value

Descripción

La profundidad máxima de un árbol. El valor predeterminado es 6.

SUBSAMPLE

Sintaxis

SUBSAMPLE = float64_value

Descripción

Proporción de submuestra de las instancias de entrenamiento. Establecer este valor en 0.5 significa que el entrenamiento toma muestras aleatorias de la mitad de los datos de entrenamiento antes del crecimiento de los árboles, lo que evita el sobreajuste. El submuestreo ocurrirá una vez en cada iteración de boosting. Es independiente de la división de datos de prueba de entrenamiento que se usa en las opciones de entrenamiento (80/20 al azar de forma predeterminada). Los datos de prueba no se usan en ninguna iteración, sin importar la submuestra. Esta solo se aplica a los datos de entrenamiento. El valor debe estar entre 0 y 1, con el valor predeterminado 1.0 (usa todos los datos de entrenamiento en cada iteración).

Ejemplo

En el siguiente ejemplo, se entrena un modelo clasificador de árbol mejorado en 'mytable' con 'mylabel' como la columna de etiqueta.

CREATE MODEL project_id:mydataset.mymodel
OPTIONS(MODEL_TYPE='BOOSTED_TREE_CLASSIFIER',
        BOOSTER_TYPE = 'GBTREE',
        NUM_PARALLEL_TREE = 1,
        MAX_ITERATIONS = 50,
        TREE_METHOD = 'HIST',
        EARLY_STOP = FALSE,
        SUBSAMPLE = 0.85,
        INPUT_LABEL_COLS = ['mylabel'])
AS SELECT * FROM project_id:mydataset.mytable;

Regiones admitidas

El entrenamiento de modelos de árbol mejorado no es compatible con todas las regiones de BigQuery ML. Para obtener una lista completa de las regiones y multirregiones admitidas, consulta Ubicaciones regionales.