Usar el ajuste de hiperparámetros de BigQuery ML para mejorar el rendimiento del modelo

En este instructivo, se presenta BigQuery ML a los analistas de datos. BigQuery ML permite a los usuarios crear y ejecutar modelos de aprendizaje automático en BigQuery mediante consultas de SQL. En este instructivo, se explica cómo ajustar hiperparámetros especificando la opción de entrenamiento num_trials.

En este instructivo, usarás la tabla de muestra tlc_yellow_trips_2018 para crear un modelo que prediga propina de un viaje en taxi. Verás una mejora de rendimiento de aproximadamente el 40% (r2_score) con el ajuste de hiperparámetros.

Objetivos

En este instructivo usarás:

  • BigQuery ML para crear un modelo de regresión lineal usando la sentencia CREATE MODEL con el num_trials configurado como 20
  • La función ML.TRIAL_INFO para verificar la descripción general de las 20 pruebas
  • La función ML.EVALUATE para evaluar el modelo de AA
  • La función ML.PREDICT para hacer predicciones con el modelo de AA

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

  • 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

  1. Accede a tu cuenta de Google Cloud. 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.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  4. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  6. BigQuery se habilita de forma automática en proyectos nuevos. Para activar BigQuery en un proyecto existente, ve a

    Habilita la API de BigQuery.

    Habilita la API

Paso uno: Crea tu conjunto de datos de entrenamiento

El primer paso es crear un conjunto de datos de BigQuery donde se almacenarán tus datos de entrenamiento y el modelo de AA. Para crear el conjunto de datos, haz lo siguiente:

  1. En Google Cloud Console, ve a la página de BigQuery.

    Ir a la página de BigQuery

  2. En el panel de navegación, en la sección Recursos, haz clic en el nombre de tu proyecto.

  3. En el panel de detalles a la derecha, haz clic en Crear conjunto de datos (Create dataset).

    Crea un conjunto de datos.

  4. En la página Crear conjunto de datos, sigue estos pasos:

    • En ID del conjunto de datos, ingresa bqml_tutorial.
    • En Ubicación de los datos, elige Estados Unidos (EE.UU.). Actualmente, los conjuntos de datos públicos se almacenan en la ubicación multirregional US. Para que sea más simple, debes colocar tu conjunto de datos en la misma ubicación.

      Crea la página de conjunto de datos.

  5. Utilice los valores predeterminados para el resto de la configuración y haga clic en Crear conjunto de datos.

Paso dos: Crea la tabla de entrada de entrenamiento

En este paso, materializarás la tabla de entrada de entrenamiento con 100,000 filas.

  1. Visualiza el esquema de la tabla de origen tlc_yellow_trips_2018.

    Esquema de la tabla.

  2. Crea la tabla de datos de entrada de entrenamiento.

CREATE 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

Paso tres: crea tu modelo

A continuación, crea un modelo de regresión lineal con ajuste de hiperparámetros usando la tabla de muestra tlc_yellow_trips_2018 en BigQuery. La siguiente consulta de SQL estándar se usa para crear el modelo con ajuste de hiperparámetros.

CREATE MODEL `bqml_tutorial.hp_taxi_tip_model`
OPTIONS
  (model_type='linear_reg',
   num_trials=20,
   max_parallel_trials=2) AS
SELECT
  *
FROM
  `bqml_tutorial.taxi_tip_input`

Detalles de la consulta

El modelo LINEAR_REG tiene dos hiperparámetros ajustables: l1_reg y l2_reg. La consulta anterior utiliza el espacio de búsqueda predeterminado. También puedes especificar el espacio de búsqueda de manera explícita:

OPTIONS
  (...
    l1_reg=hparam_range(0, 20),
    l2_reg=hparam_candidates([0, 0.1, 1, 10]))

Además, estas otras opciones de entrenamiento de ajuste de hiperparámetros también usan sus valores predeterminados:

  • hparam_tuning_algorithm: "VIZIER_DEFAULT"

  • hparam_tuning_objectives: ["r2_score"]

max_parallel_trials se establece en 2 para acelerar el proceso de ajuste. Con 2 pruebas en ejecución en cualquier momento dado, el ajuste completo debería completarse con alrededor de 10 trabajos de entrenamiento en serie en lugar de 20. Sin embargo, ten en cuenta que las dos pruebas simultáneas no pueden beneficiarse mutuamente de los resultados de entrenamiento que genera cada una.

Ejecuta la consulta CREATE MODEL

A fin de ejecutar la consulta CREATE MODEL para crear y entrenar tu modelo, sigue estos pasos:

  1. En Cloud Console, haz clic en el botón Redactar consulta nueva.

  2. Ingresa la consulta de SQL estándar que se muestra arriba en el área de texto del Editor de consultas.

  3. Haga clic en Ejecutar.

    La consulta toma unos 17 minutos en completarse. Puedes realizar un seguimiento del progreso del ajuste en los detalles de ejecución en Etapas:

    Progreso del ajuste.

Paso cuatro: Obtén información sobre las pruebas

Para ver una descripción general de todas las pruebas, incluidos sus hiperparámetros, objetivos, estado y prueba óptima, puedes usar la función ML.TRIAL_INFO y ver el resultado en Cloud Console después de ejecutar SQL.

SELECT *
FROM
  ML.TRIAL_INFO(MODEL `bqml_tutorial.hp_taxi_tip_model`)

Puedes ejecutar esta consulta de SQL en cuanto se complete una prueba. Si se detiene el ajuste en la mitad, todas las pruebas que ya se hayan completado permanecerán disponibles para su uso.

Paso cinco: Evalúa el modelo

Después de crear el modelo, puedes obtener las métricas de evaluación de todas las pruebas usando la función ML.EVALUATE o mediante Google Cloud Console.

Ejecuta ML.EVALUATE

SELECT *
FROM
  ML.EVALUATE(MODEL `bqml_tutorial.hp_taxi_tip_model`)

Este SQL recupera las métricas de evaluación de todas las pruebas calculadas a partir de los datos de PRUEBA. Consulta la sección División de datos para ver la diferencia entre los objetivos de ML.TRIAL_INFO y las métricas de evaluación de ML.EVALUATE.

También puedes proporcionar tus propios datos para evaluar una prueba específica. Consulta ML.EVALUATE para obtener más información.

Verifica las métricas de evaluación en Google Cloud Console

También puedes seleccionar la pestaña EVALUATION para verificar las métricas de evaluación.

Ajuste de la evaluación.

Paso seis: Usa el modelo para predecir la propina de un viaje en taxi

Ahora que ya evaluaste el modelo, el siguiente paso es usarlo para predecir la propina de un viaje en taxi.

Esta es la consulta usada para predecir la sugerencia:

SELECT
  *
FROM
  ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`,
    (
    SELECT
      *
    FROM
      `bqml_tutorial.taxi_tip_input`
    LIMIT 10))

Detalles de la consulta

La declaración SELECT superior recupera todas las columnas, incluida la columna predicted_label. Esta columna se genera mediante la función ML.PREDICT. Cuando usas la función ML.PREDICT, el nombre de la columna de resultado del modelo es predicted_label_column_name.

De forma predeterminada, la predicción se realiza en función de la prueba óptima. Puedes seleccionar otra prueba si especificas el parámetro trial_id.

SELECT
  *
FROM
  ML.PREDICT(MODEL `bqml_tutorial.hp_taxi_tip_model`,
    (
    SELECT
      *
    FROM
      `bqml_tutorial.taxi_tip_input`
    LIMIT
      10),
    STRUCT(3 AS trial_id))

Consulta ML.PREDICT para obtener más información sobre cómo usar las funciones de entrega de modelos.

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, puede mantener el proyecto y borrar el conjunto de datos.

Borre el 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:

  1. Si es necesario, abre la página de BigQuery en Cloud Console.

    Ir a la página de BigQuery

  2. En el panel de navegación, haz clic en el conjunto de datos bqml_tutorial que creaste.

  3. 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.

  4. 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:

  1. En la consola de Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Próximos pasos