Mejorar el rendimiento del modelo con el ajuste de hiperparámetros


En este instructivo, se muestra cómo usar el ajuste de hiperparámetros en BigQuery ML mediante la especificación de la opción de entrenamiento NUM_TRIALS para habilitar un conjunto de pruebas de entrenamiento de modelos.

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. Con el ajuste de los hiperparámetros, el modelo muestra una mejora del rendimiento de aproximadamente el 40% en el objetivo de ajuste de hiperparámetros R2_SCORE.

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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the BigQuery API.

    Enable the API

Paso uno: Crea tu conjunto de datos de entrenamiento

Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA:

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

    Ir a la página de BigQuery

  2. En el panel Explorador, haz clic en el nombre de tu proyecto.

  3. Haz clic en Ver acciones > Crear conjunto de datos.

    Crea un conjunto de datos.

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

      Página Crear un conjunto de datos

Paso dos: Crea la tabla de entrada de entrenamiento

En este paso, materializará 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 GoogleSQL se usa para crear el modelo con el 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 la consola de Google Cloud, haz clic en el botón Redactar consulta nueva.

  2. Ingresa la consulta de GoogleSQL anterior en el área de texto del Editor de consultas.

  3. Haz 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 la consola de Google Cloud después de ejecutar SQL.

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

Puede ejecutar esta consulta en 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 la consola de Google Cloud.

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. Para obtener más información acerca de la diferencia entre los objetivos ML.TRIAL_INFO y las métricas de evaluación ML.EVALUATE, consulta Funciones de entrega de modelos.

También puede proporcionar datos propios para evaluar una prueba específica. Para obtener más información, consulta Funciones de entrega de modelos.

Revisa las métricas de evaluación en la consola de Google Cloud

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))

Para obtener más detalles sobre cómo usar las funciones de entrega de modelos, consulta 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, 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:

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

    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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Próximos pasos