En este tutorial, usarás un modelo de regresión lineal en BigQuery ML para predecir el peso de un pingüino en función de su información demográfica. Una regresión lineal es un tipo de modelo de regresión que genera un valor continuo a partir de una combinación lineal de las características de entrada.
En este tutorial se usa el conjunto de datos
bigquery-public-data.ml_datasets.penguins
.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Permisos obligatorios
Para crear el modelo con BigQuery ML, necesita los siguientes permisos de gestión de identidades y accesos:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Para ejecutar la inferencia, necesitas los siguientes permisos:
bigquery.models.getData
en el modelobigquery.jobs.create
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de aprendizaje automático.
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haga clic en
Ver acciones > Crear conjunto de datos.En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, introduce
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregión y, a continuación, EE. UU. (varias regiones de Estados Unidos).
Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos, usa el comando
bq mk
con la marca --location
. Para ver una lista completa de los parámetros posibles, consulta la referencia del comando bq mk --dataset
.
Crea un conjunto de datos llamado
bqml_tutorial
con la ubicación de los datos definida comoUS
y la descripciónBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
En lugar de usar la marca
--dataset
, el comando usa el acceso directo-d
. Si omite-d
y--dataset
, el comando creará un conjunto de datos de forma predeterminada.Confirma que se ha creado el conjunto de datos:
bq ls
API
Llama al método datasets.insert
con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Crear el modelo
Crea un modelo de regresión lineal con el conjunto de datos de muestra de Analytics para BigQuery.
SQL
Puedes crear un modelo de regresión lineal usando la sentencia CREATE MODEL
y especificando LINEAR_REG
para el tipo de modelo. La creación del modelo incluye el entrenamiento del modelo.
A continuación, se indican algunos aspectos útiles sobre la instrucción CREATE MODEL
:
- La opción
input_label_cols
especifica qué columna de la instrucciónSELECT
se debe usar como columna de etiquetas. En este caso, la columna de etiquetas esbody_mass_g
. En el caso de los modelos de regresión lineal, la columna de etiquetas debe tener valores reales, es decir, los valores de la columna deben ser números reales. La instrucción
SELECT
de esta consulta usa las siguientes columnas de la tablabigquery-public-data.ml_datasets.penguins
para predecir el peso de un pingüino:species
: la especie de pingüino.island
: la isla en la que reside el pingüino.culmen_length_mm
: longitud del culmen del pingüino en milímetros.culmen_depth_mm
: la profundidad del culmen del pingüino en milímetros.flipper_length_mm
: longitud de las aletas del pingüino en milímetros.sex
: el sexo del pingüino.
La cláusula
WHERE
de la instrucciónSELECT
de esta consulta,WHERE body_mass_g IS NOT NULL
, excluye las filas en las que la columnabody_mass_g
esNULL
.
Ejecuta la consulta que crea tu modelo de regresión lineal:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta:
CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS (model_type='linear_reg', input_label_cols=['body_mass_g']) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL;
El modelo
penguins_model
tarda unos 30 segundos en crearse.Para ver el modelo, sigue estos pasos:
En el panel de la izquierda, haz clic en
Explorador:Si no ves el panel de la izquierda, haz clic en
Ampliar panel de la izquierda para abrirlo.En el panel Explorador, expande tu proyecto y haz clic en Conjuntos de datos.
Haga clic en el conjunto de datos
bqml_tutorial
.Haz clic en la pestaña Modelos.
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
El modelo tarda unos 30 segundos en crearse. Para ver el modelo, sigue estos pasos:
En el panel de la izquierda, haz clic en
Explorador:En el panel Explorador, expande tu proyecto y haz clic en Conjuntos de datos.
Haga clic en el conjunto de datos
bqml_tutorial
.Haz clic en la pestaña Modelos.
Obtener estadísticas de formación
Para ver los resultados del entrenamiento del modelo, puedes usar la función ML.TRAINING_INFO
o consultar las estadísticas en la consola Google Cloud . En este tutorial, usarás la Google Cloud consola.
Un algoritmo de aprendizaje automático crea un modelo examinando muchos ejemplos e intentando encontrar un modelo que minimice las pérdidas. Este proceso se denomina minimización del riesgo empírico.
La pérdida es la penalización por una predicción incorrecta. Es un número que indica lo incorrecta que ha sido la predicción del modelo en un ejemplo concreto. Si las predicciones del modelo son perfectas, la pérdida será igual a 0; si no, será superior. El objetivo de entrenar un modelo es encontrar un conjunto de pesos y sesgos que tengan una pérdida baja, de media, en todos los ejemplos.
Consulta las estadísticas de entrenamiento del modelo que se generaron al ejecutar la consulta CREATE MODEL
:
En el panel de la izquierda, haz clic en
Explorador:En el panel Explorador, expande tu proyecto y haz clic en Conjuntos de datos.
Haga clic en el conjunto de datos
bqml_tutorial
.Haz clic en la pestaña Modelos.
Para abrir el panel de información del modelo, haz clic en penguins_model.
Haga clic en la pestaña Entrenamiento y, a continuación, en Tabla. Los resultados deberían ser similares a los siguientes:
La columna Pérdida de datos de entrenamiento representa la métrica de pérdida calculada después de que el modelo se haya entrenado con el conjunto de datos de entrenamiento. Como has realizado una regresión lineal, esta columna muestra el valor del error cuadrático medio. Para este entrenamiento se usa automáticamente una estrategia de optimización de normal_equation, por lo que solo se necesita una iteración para converger al modelo final. Para obtener más información sobre cómo definir la estrategia de optimización del modelo, consulte
optimize_strategy
.
Evaluar el modelo
Después de crear el modelo, evalúa su rendimiento con la función ML.EVALUATE
o la función score
de DataFrames de BigQuery para comparar los valores predichos generados por el modelo con los datos reales.
SQL
Como entrada, la función ML.EVALUATE
toma el modelo entrenado y un conjunto de datos que coincida con el esquema de los datos que has usado para entrenar el modelo. En un entorno de producción, debe evaluar el modelo con datos distintos de los que ha usado para entrenarlo.
Si ejecutas ML.EVALUATE
sin proporcionar datos de entrada, la función recupera las métricas de evaluación calculadas durante el entrenamiento. Estas métricas se calculan
usando el conjunto de datos de evaluación reservado automáticamente:
SELECT
*
FROM
ML.EVALUATE(MODEL bqml_tutorial.penguins_model
);
Ejecuta la consulta ML.EVALUATE
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL));
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Los resultados deberían ser similares a los siguientes:
Como has realizado una regresión lineal, los resultados incluyen las siguientes columnas:
mean_absolute_error
mean_squared_error
mean_squared_log_error
median_absolute_error
r2_score
explained_variance
Una métrica importante en los resultados de la evaluación es la puntuación R2.
La puntuación R2 es una medida estadística que determina si las predicciones de regresión lineal se aproximan a los datos reales. Un valor de 0
indica que el modelo no explica ninguna de las variabilidades de los datos de respuesta en torno a la media. Un valor de 1
indica que el modelo explica toda la variabilidad de los datos de respuesta en torno a la media.
También puede consultar el panel de información del modelo en la Google Cloud consola para ver las métricas de evaluación:
Usar el modelo para predecir resultados
Ahora que has evaluado tu modelo, el siguiente paso es usarlo para predecir un resultado. Puedes ejecutar la función ML.PREDICT
o la función BigQuery DataFrames predict
en el modelo para predecir la masa corporal en gramos de todos los pingüinos que residen en las islas Biscoe.
SQL
Como entrada, la función ML.PREDICT
toma el modelo entrenado y un conjunto de datos que coincide con el esquema de los datos que usaste para entrenar el modelo, excepto la columna de etiquetas.
Ejecuta la consulta ML.PREDICT
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'));
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Los resultados deberían ser similares a los siguientes:
Explicar los resultados de la predicción
SQL
Para saber por qué el modelo genera estos resultados de predicción, puedes usar la función ML.EXPLAIN_PREDICT
.
ML.EXPLAIN_PREDICT
es una versión ampliada de la función ML.PREDICT
.
ML.EXPLAIN_PREDICT
no solo genera resultados de predicción, sino que también genera columnas adicionales para explicar los resultados de predicción. En la práctica, puedes ejecutar
ML.EXPLAIN_PREDICT
en lugar de ML.PREDICT
. Para obtener más información, consulta la información general sobre la IA explicable de BigQuery ML.
Ejecuta la consulta ML.EXPLAIN_PREDICT
:
- En la Google Cloud consola, ve a la página BigQuery.
- En el editor de consultas, ejecuta la siguiente consulta:
SELECT * FROM ML.EXPLAIN_PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'), STRUCT(3 as top_k_features));
Los resultados deberían ser similares a los siguientes:
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
En los modelos de regresión lineal, los valores de Shapley se usan para generar valores de atribución de características para cada característica del modelo. El resultado incluye las tres atribuciones de características principales por fila de la tabla penguins
porque top_k_features
se ha definido como 3
. Estas atribuciones se ordenan por el valor absoluto de la atribución en orden descendente. En todos los ejemplos, la característica sex
es la que más ha contribuido a la predicción general.
Explicar el modelo de forma global
SQL
Para saber qué características son las más importantes para determinar el peso de los pingüinos, puedes usar la función ML.GLOBAL_EXPLAIN
.
Para usar ML.GLOBAL_EXPLAIN
, debes volver a entrenar el modelo con la opción ENABLE_GLOBAL_EXPLAIN
definida como TRUE
.
Vuelve a entrenar el modelo y obtén explicaciones globales:
- En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta para volver a entrenar el modelo:
#standardSQL CREATE OR REPLACE MODEL `bqml_tutorial.penguins_model` OPTIONS ( model_type = 'linear_reg', input_label_cols = ['body_mass_g'], enable_global_explain = TRUE) AS SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE body_mass_g IS NOT NULL;
En el editor de consultas, ejecuta la siguiente consulta para obtener explicaciones globales:
SELECT * FROM ML.GLOBAL_EXPLAIN(MODEL `bqml_tutorial.penguins_model`)
Los resultados deberían ser similares a los siguientes:
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.