En este instructivo, se explica cómo usar el ajuste de hiperparámetros en BigQuery ML para ajustar un modelo de aprendizaje automático y mejorar su rendimiento.
Para realizar el ajuste de hiperparámetros, debes especificar la
NUM_TRIALS opción
de la CREATE MODEL sentencia, en combinación con otras opciones específicas del modelo. Cuando configuras estas opciones, BigQuery ML entrena varias versiones, o pruebas , del modelo, cada una con parámetros ligeramente diferentes, y muestra la prueba que tiene el mejor rendimiento.
En este instructivo, se usa la tabla de muestra pública
tlc_yellow_trips_2018, que contiene información sobre los viajes en taxi en la ciudad de Nueva York
en 2018.
Objetivos
En este instructivo, se te guiará para completar las siguientes tareas:
- Usar la
CREATE MODELsentencia para crear un modelo de regresión lineal de referencia. - Evaluar el modelo de referencia con la
ML.EVALUATEfunción. - Usar la sentencia
CREATE MODELcon opciones de ajuste de hiperparámetros para entrenar veinte pruebas de un modelo de regresión lineal. - Revisar las pruebas con la
ML.TRIAL_INFOfunción. - Evaluar las pruebas con la función
ML.EVALUATE. - Obtener predicciones sobre los viajes en taxi del modelo óptimo entre las pruebas con
la
ML.PREDICTfunción.
Costos
En este instructivo, se usan los siguientes componentes facturables de Google Cloud, incluyendo:
- BigQuery
- BigQuery ML
Para obtener más información sobre los costos de BigQuery, consulta la página de precios de BigQuery.
Antes de comenzar
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- BigQuery se habilita automáticamente en proyectos nuevos.
Para activar BigQuery en un proyecto existente, dirígete a
Habilita la API de BigQuery.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles.
Permisos necesarios
Para crear el conjunto de datos, necesitas el permiso de IAM
bigquery.datasets.create.Para crear el modelo, necesitas los siguientes permisos:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateData
Para ejecutar inferencias, necesitas los siguientes permisos:
bigquery.models.getDatabigquery.jobs.create
Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta Introducción a IAM.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA.
Console
En la Google Cloud consola de, ve a la página 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, selecciona EE.UU..
Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el
bq mk --dataset comando.
Crea un conjunto de datos llamado
bqml_tutorialcon la ubicación de datos establecida enUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Confirma que se creó el conjunto de datos:
bq ls
API
Llama al datasets.insert
método con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Crea una tabla de datos de entrenamiento
Crea una tabla de datos de entrenamiento basada en un subconjunto de los datos de la tabla tlc_yellow_trips_2018.
Sigue estos pasos para crear la tabla:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE OR REPLACE TABLE `bqml_tutorial.taxi_tip_input` AS SELECT * EXCEPT (tip_amount), tip_amount AS label FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018` WHERE tip_amount IS NOT NULL LIMIT 100000;
Crea un modelo de regresión lineal de referencia
Crea un modelo de regresión lineal sin ajuste de hiperparámetros y entrénalo con los datos de la tabla taxi_tip_input.
Sigue estos pasos para crear el modelo:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE OR REPLACE MODEL `bqml_tutorial.baseline_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG' ) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
La consulta tarda unos 2 minutos en completarse.
Evalúa el modelo de referencia
Evalúa el rendimiento del modelo con la función ML.EVALUATE.
La función ML.EVALUATE evalúa las clasificaciones de contenido previstas que muestra el modelo con las métricas de evaluación calculadas durante el entrenamiento de modelos.
Sigue estos pasos para evaluar el modelo:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.baseline_taxi_tip_model`);
Los resultados son similares a los siguientes:
+---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+ | 2.5853895559690323 | 23760.416358496139 | 0.017392406523370374 | 0.0044248227819481123 | -1934.5450533482465 | -1934.3513857946277 | +---------------------+--------------------+------------------------+-----------------------+---------------------+---------------------+
El valor r2_score del modelo de referencia es negativo, lo que indica un
ajuste deficiente para los datos; cuanto más cerca esté el
valor de R2 score
de 1, mejor será el ajuste del modelo.
Crea un modelo de regresión lineal con ajuste de hiperparámetros
Crea un modelo de regresión lineal con ajuste de hiperparámetros y entrénalo con los datos de la tabla taxi_tip_input.
Usas las siguientes opciones de ajuste de hiperparámetros en la sentencia CREATE MODEL:
- La
NUM_TRIALSopción para establecer la cantidad de pruebas en veinte. - La
MAX_PARALLEL_TRIALSopción para ejecutar dos pruebas en cada trabajo de entrenamiento, para un total de diez trabajos y veinte pruebas. Esto reduce el tiempo de entrenamiento necesario. Sin embargo, las dos pruebas simultáneas no se benefician mutuamente de los resultados de entrenamiento que genera cada una. - La opción
L1_REGpara probar diferentes valores de regularización L1 en las diferentes pruebas. La regularización L1 quita los atributos irrelevantes del modelo, lo que ayuda a evitar el sobreajuste.
Las otras opciones de ajuste de hiperparámetros compatibles con el modelo usan sus valores predeterminados, como se indica a continuación:
L1_REG:0HPARAM_TUNING_ALGORITHM:'VIZIER_DEFAULT'HPARAM_TUNING_OBJECTIVES:['R2_SCORE']
Sigue estos pasos para crear el modelo:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE OR REPLACE MODEL `bqml_tutorial.hp_taxi_tip_model` OPTIONS ( MODEL_TYPE = 'LINEAR_REG', NUM_TRIALS = 20, MAX_PARALLEL_TRIALS = 2, L1_REG = HPARAM_RANGE(0, 5)) AS SELECT * FROM `bqml_tutorial.taxi_tip_input`;
La consulta tarda aproximadamente 20 minutos en completarse.
Obtén información sobre las pruebas de entrenamiento
Obtén información sobre todas las pruebas, incluidos sus valores de hiperparámetros, objetivos y estado, con la función ML.TRIAL_INFO. Esta función también muestra información sobre qué prueba tiene el mejor rendimiento, según esta información.
Sigue estos pasos para obtener información de las pruebas:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY is_optimal DESC;
Los resultados son similares a los siguientes:
+----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | trial_id | hyperparameters | hparam_tuning_evaluation_metrics | training_loss | eval_loss | status | error_message | is_optimal | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+ | 7 | {"l1_reg":"4.999999999999985"} | {"r2_score":"0.653653627638174"} | 4.4677841296238165 | 4.478469742512195 | SUCCEEDED | NULL | true | | 2 | {"l1_reg":"2.402163664510254E-11"} | {"r2_score":"0.6532493667964732"} | 4.457692508421795 | 4.483697081650438 | SUCCEEDED | NULL | false | | 3 | {"l1_reg":"1.2929452948742316E-7"} | {"r2_score":"0.653249366811995"} | 4.45769250849513 | 4.483697081449748 | SUCCEEDED | NULL | false | | 4 | {"l1_reg":"2.5787102060628228E-5"} | {"r2_score":"0.6532493698925899"} | 4.457692523040582 | 4.483697041615808 | SUCCEEDED | NULL | false | | ... | ... | ... | ... | ... | ... | ... | ... | +----------+-------------------------------------+-----------------------------------+--------------------+--------------------+-----------+---------------+------------+El valor de la columna
is_optimalindica que la prueba 7 es el modelo óptimo que muestra el ajuste.
Evalúa las pruebas del modelo ajustado
Evalúa el rendimiento de las pruebas con la función ML.EVALUATE.
La función ML.EVALUATE evalúa las clasificaciones de contenido previstas que muestra el modelo con las métricas de evaluación calculadas durante el entrenamiento para todas las pruebas.
Sigue estos pasos para evaluar las pruebas del modelo:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`) ORDER BY r2_score DESC;
Los resultados son similares a los siguientes:
+----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | trial_id | mean_absolute_error | mean_squared_error | mean_squared_log_error | median_absolute_error | r2_score | explained_variance | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+ | 7 | 1.151814398002232 | 4.109811493266523 | 0.4918733252641176 | 0.5736103414025084 | 0.6652110305659145 | 0.6652144696114834 | | 19 | 1.1518143358927102 | 4.109811921460791 | 0.4918672150119582 | 0.5736106106914161 | 0.6652109956848206 | 0.6652144346901685 | | 8 | 1.152747850702547 | 4.123625876152422 | 0.4897808307399327 | 0.5731702310239184 | 0.6640856984144734 | 0.664088410199906 | | 5 | 1.152895108945439 | 4.125775524878872 | 0.48939088205957937 | 0.5723300569616766 | 0.6639105860807425 | 0.6639132416838652 | | ... | ... | ... | ... | ... | ... | ... | +----------+---------------------+--------------------+------------------------+-----------------------+--------------------+--------------------+
El valor
r2_scoredel modelo óptimo, que es la prueba 7, es0.66521103056591446, lo que muestra una mejora significativa con respecto al modelo de referencia.
Puedes evaluar una prueba específica si especificas el argumento TRIAL_ID en la función ML.EVALUATE.
Para obtener más información acerca de la diferencia entre los ML.TRIAL_INFO
objetivos y las ML.EVALUATE métricas de evaluación, consulta
Funciones de entrega de modelos.
Usa el modelo ajustado para predecir propinas de viajes en taxi
Usa el modelo óptimo que muestra el ajuste para predecir propinas para diferentes viajes en taxi. La función ML.PREDICT usa automáticamente el modelo óptimo, a menos que selecciones una prueba diferente especificando el argumento TRIAL_ID. Las predicciones se muestran en la columna predicted_label.
Sigue estos pasos para obtener predicciones:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.PREDICT( MODEL `bqml_tutorial.hp_taxi_tip_model`, ( SELECT * FROM `bqml_tutorial.taxi_tip_input` LIMIT 5 ));
Los resultados son similares a los siguientes:
+----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | trial_id | predicted_label | vendor_id | pickup_datetime | dropoff_datetime | passenger_count | trip_distance | rate_code | store_and_fwd_flag | payment_type | fare_amount | extra | mta_tax | tolls_amount | imp_surcharge | total_amount | pickup_location_id | dropoff_location_id | data_file_year | data_file_month | label | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+ | 7 | 1.343367839584448 | 2 | 2018-01-15 18:55:15 | 2018-01-15 18:56:18 | 1 | 0 | 1 | N | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 193 | 193 | 2018 | 1 | 0 | | 7 | -1.176072791783461 | 1 | 2018-01-08 10:26:24 | 2018-01-08 10:26:37 | 1 | 0 | 5 | N | 3 | 0.01 | 0 | 0 | 0 | 0.3 | 0.31 | 158 | 158 | 2018 | 1 | 0 | | 7 | 3.839580104168765 | 1 | 2018-01-22 10:58:02 | 2018-01-22 12:01:11 | 1 | 16.1 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 140 | 91 | 2018 | 1 | 0 | | 7 | 4.677393985230036 | 1 | 2018-01-16 10:14:35 | 2018-01-16 11:07:28 | 1 | 18 | 1 | N | 2 | 54.5 | 0 | 0.5 | 0 | 0.3 | 55.3 | 138 | 67 | 2018 | 1 | 0 | | 7 | 7.938988937253062 | 2 | 2018-01-16 07:05:15 | 2018-01-16 08:06:31 | 1 | 17.8 | 1 | N | 1 | 54.5 | 0 | 0.5 | 0 | 0.3 | 66.36 | 132 | 255 | 2018 | 1 | 11.06 | +----------+--------------------+-----------+---------------------+---------------------+-----------------+---------------+-----------+--------------------+--------------+-------------+-------+---------+--------------+---------------+--------------+--------------------+---------------------+----------------+-----------------+-------+
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 Google Cloud consola.
En el panel de navegación, haz clic en el conjunto de datos bqml_tutorial que creaste.
En el lado derecho de la ventana, haz clic en Borrar conjunto de datos. Esta acción borra el conjunto de datos, la tabla y todos los datos.
En el cuadro de diálogo Borrar conjunto de datos , escribe el nombre del conjunto de datos (
bqml_tutorial) para confirmar el comando de borrado y, luego, haz clic en Borrar.
Borra tu proyecto
Para borrar el proyecto, haz lo siguiente:
- En la Google Cloud consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que tú 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.
¿Qué sigue?
- Para obtener más información sobre el aprendizaje automático, consulta el Curso intensivo de aprendizaje automático.
- Para obtener una descripción general de BigQuery ML, consulta Introducción a BigQuery ML.
- Si deseas obtener más información para usar la Google Cloud consola de, consulta Usa la Google Cloud consola de.