En este instructivo, usarás un modelo de regresión lineal en BigQuery ML para predecir el peso de un pingüino a partir de la información demográfica del pingüino. 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 atributos de entrada.
En este instructivo, se usa el conjunto de datos bigquery-public-data.ml_datasets.penguins
.
Objetivos
En este instructivo, realizarás las siguientes tareas:
- Crear un modelo de regresión lineal.
- Evalúa el modelo.
- Haz predicciones mediante el modelo.
Costos
En este instructivo, se usan componentes facturables de Google Cloud, incluidos los siguientes:
- BigQuery
- BigQuery ML
Para obtener más información sobre los costos de BigQuery, consulta la página Precios de BigQuery.
Para obtener más información sobre los costos de BigQuery ML, consulta los precios de BigQuery ML.
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the BigQuery API.
Permisos necesarios
Para crear el modelo con BigQuery ML, necesitas los siguientes permisos de IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.models.getData
en el modelobigquery.jobs.create
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA:
En la consola de Google Cloud, ve a la página de BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz 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, ingresa
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).
Los conjuntos de datos públicos se almacenan en la multirregión
US
. Para que sea más simple, almacena tu conjunto de datos en la misma ubicación.Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
Crea el modelo
Crea un modelo de regresión lineal con la sentencia CREATE MODEL
y especificando LINEAR_REG
para el tipo de modelo. La creación del modelo incluye el entrenamiento del modelo.
La siguiente información es útil para saber sobre la declaración CREATE MODEL
:
- La opción
input_label_cols
especifica qué columna de la declaraciónSELECT
se usará como columna de la etiqueta. Aquí, la columna de la etiqueta esbody_mass_g
. Para los modelos de regresión lineal, la columna de la etiqueta debe tener un valor real, es decir, sus valores deben ser números reales. La declaració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 del pingüino.island
: la isla en la que reside el pingüino.culmen_length_mm
: la 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
: la longitud de las aletas del pingüino en milímetros.sex
: el sexo del pingüino.
La cláusula
WHERE
en la declaració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 consola de Google Cloud, ve a la página de BigQuery.
En el Editor de consultas, ejecute 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;
La creación del modelo
penguins_model
toma alrededor de 30 segundos. Para ver el modelo, ve al panel Explorador, expande el conjunto de datosbqml_tutorial
y, luego, expande la carpeta Modelos.
Obtén estadísticas de entrenamiento
Para ver los resultados del entrenamiento de modelos, puedes usar la función ML.TRAINING_INFO
o puedes ver las estadísticas en la consola de Google Cloud. En este instructivo, usarás la consola de Google Cloud.
Un algoritmo de aprendizaje automático examina muchos ejemplos y trata de encontrar un modelo que minimice la pérdida. Este proceso se llama minimización del riesgo empírico.
La pérdida es una penalidad por una predicción incorrecta. Es un número que indica qué tan mala fue la predicción del modelo en un solo ejemplo. Si la predicción del modelo es perfecta, la pérdida es cero; de lo contrario, es mayor. El objetivo de entrenar a un modelo es encontrar un conjunto de pesos y ordenadas al origen que tengan, en promedio, una pérdida baja en todos los ejemplos.
Be las estadísticas de entrenamiento de modelos que se generaron cuando ejecutaste la consulta CREATE MODEL
:
En el panel Explorador, expande el conjunto de datos
bqml_tutorial
y, luego, la carpeta Modelos. Haz clic en penguins_model para abrir el panel de información del modelo.Haz clic en la pestaña Entrenamiento y, luego, en Tabla. Los resultados debería ser similares al siguiente:
La columna Training Data Loss (Pérdida de datos de entrenamiento) representa la métrica de pérdida calculada después de que se entrena el modelo en el conjunto de datos de entrenamiento. Como se realizó una regresión lineal, esta columna muestra el valor del error cuadrático medio. Se utiliza automáticamente una estrategia de optimización “normal_equation” para este entrenamiento, por lo que solo se requiere una iteración con el fin de converger en el modelo final. Para obtener más información sobre cómo configurar la estrategia de optimización del modelo, consulta
optimize_strategy
.
Evalúa el modelo
Después de crear el modelo, evalúa su rendimiento mediante la función ML.EVALUATE
.
La función ML.EVALUATE
evalúa los valores previstos que generó el modelo con los datos reales.
Como entrada, la función ML.EVALUATE
toma el modelo entrenado y un conjunto de datos que coincide con el esquema de los datos que usaste para entrenar el modelo. En un entorno de producción, debes evaluar el modelo con datos diferentes a los que usaste 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 mediante el conjunto de datos de evaluación reservado de forma automática:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.penguins_model`);
Ejecuta la consulta ML.EVALUATE
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el Editor de consultas, ejecute 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));
Los resultados debería ser similar al siguiente:
Debido a que realizaste 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 0
indica que el modelo no explica nada de la variabilidad de los datos de respuesta alrededor de la media. Un valor 1
indica que el modelo explica toda la variabilidad de los datos de respuesta alrededor de la media.
También puedes ver el panel de información del modelo en la consola de Google Cloud para ver las métricas de evaluación:
Usa el modelo para predecir resultados
Ahora que ya evaluaste tu modelo, el siguiente paso es usarlo para predecir un resultado. Puedes ejecutar la función ML.PREDICT
en el modelo para predecir la masa corporal en gramos de todos los pingüinos que viven en las islas Biscoe.
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, sin incluir la columna de la etiqueta.
Ejecuta la consulta ML.PREDICT
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el Editor de consultas, ejecute la siguiente consulta:
SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.penguins_model`, ( SELECT * FROM `bigquery-public-data.ml_datasets.penguins` WHERE island = 'Biscoe'));
Los resultados debería ser similar al siguiente:
Explica los resultados de la predicción
Para comprender 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 extendida de la función ML.PREDICT
.
ML.EXPLAIN_PREDICT
no solo genera resultados de predicción, sino también columnas adicionales para explicar los resultados de la predicción. En la práctica, puedes ejecutar ML.EXPLAIN_PREDICT
en lugar de ML.PREDICT
. Para obtener más información, consulta la descripción general de Explainable AI para BigQuery ML.
Ejecuta la consulta ML.EXPLAIN_PREDICT
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el Editor de consultas, ejecute 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ía ser similar al siguiente:
En el caso de los modelos de regresión lineal, los valores de Shapley se usan a fin de generar valores de atribución de atributos para cada atributo del modelo. ML.EXPLAIN_PREDICT
genera las tres atribuciones de atributos principales por fila de la tabla penguins
porque top_k_features
se configuró como 3
en la consulta. Estas atribuciones se ordenan por el valor absoluto de la atribución en orden descendente. En todos los ejemplos, la característica sex
contribuyó más a la predicción general.
Explica el modelo de forma global
Para saber qué características son generalmente las más importantes a fin de determinar el peso del pingüino, 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
configurada como TRUE
.
Vuelve a entrenar y obtén explicaciones globales para el modelo:
En la consola de Google Cloud, ve a la página de 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ía ser similar al siguiente:
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
- Puedes borrar el proyecto que creaste.
- De lo contrario, puedes mantener el proyecto y borrar el conjunto de datos.
Borra tu conjunto de datos
Borrar tu proyecto quita todos sus conjuntos de datos y tablas. Si prefieres volver a usar el proyecto, puedes borrar el conjunto de datos que creaste en este instructivo:
Si es necesario, abre la página de BigQuery en la consola de Google Cloud.
En el panel de navegación, haz clic en el conjunto de datos bqml_tutorial que creaste.
Haz clic en Borrar conjunto de datos en el lado derecho de la ventana. Esta acción borra el conjunto de datos, la tabla y todos los datos.
En el cuadro de diálogo Borrar conjunto de datos, ingresa el nombre del conjunto de datos (
bqml_tutorial
) y, luego, haz clic en Borrar para confirmar el comando de borrado.
Borra tu proyecto
Para borrar el proyecto, haz lo siguiente:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Próximos pasos
- Para obtener una descripción general de BigQuery ML, consulta Introducción a BigQuery ML.
- Para obtener información sobre cómo crear modelos, consulta la página de sintaxis de
CREATE MODEL
.