Primeros pasos con BigQuery ML en Cloud Datalab

En este instructivo, se presenta el uso de BigQuery ML con Cloud Datalab. Para ver una versión más detallada de este instructivo que utilice la IU web de BigQuery, consulta Cómo comenzar a usar BigQuery ML con la IU web.

BigQuery ML permite a los usuarios crear y ejecutar modelos de aprendizaje automático en BigQuery mediante consultas de SQL. El objetivo es democratizar el aprendizaje automático. A fin de lograrlo, se habilita a los profesionales de SQL para que compilen modelos con sus herramientas existentes y se elimina la necesidad de trasladar datos con el fin de aumentar la velocidad de desarrollo.

En este instructivo, se usa el ejemplo Conjunto de datos de muestra de Google Analytics para BigQuery a fin de crear un modelo que prediga si un visitante de un sitio web realizará una transacción. Para obtener más información sobre el esquema del conjunto de datos de Analytics, consulta el Esquema de BigQuery Export en el Centro de ayuda de Google Analytics.

Objetivos

En este instructivo, usarás las siguientes características:

  • BigQuery ML, para crear un modelo de regresión logística binario mediante la declaración CREATE MODEL
  • 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 componentes facturables de Cloud Platform, incluidos los siguientes:

  • BigQuery
  • BigQuery ML
  • Cloud Datalab

Para obtener más información sobre los costos de BigQuery, consulta la página de precios de BigQuery.

Para obtener más información sobre los costos de BigQuery ML, consulta la página de precios de BigQuery ML.

Para obtener más información sobre los costos de Cloud Datalab, consulta la página de precios de Cloud Datalab.

Antes de comenzar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Select or create a GCP project.

    Go to the Project selector page

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. BigQuery se habilita de forma automática en proyectos nuevos. Para activar BigQuery en un proyecto preexistente, ve a Habilita las BigQuery API necesarias.

    Habilita las API

Para ver descripciones de los conceptos presentados aquí, consulta lo siguiente:

Paso uno: configura Cloud Datalab

En este instructivo, debes configurar Cloud Datalab con Cloud Shell. Cloud Datalab proporciona un entorno de notebook basado en Jupyter que usas para trabajar con BigQuery ML y BigQuery.

Antes de configurar Cloud Datalab, debes habilitar la API de Compute Engine y la API de Cloud Source Repositories. Para obtener más información sobre cómo habilitar estas API, consulta Inhabilita y habilita servicios.

Para configurar Cloud Datalab en una VM de Compute Engine, haz lo siguiente:

  1. Ve a GCP Console.

    GCP Console

  2. Haz clic en Activar Cloud Shell (Activate Cloud Shell).

    Activa el ícono de Cloud Shell

  3. En la ventana de Cloud Shell, ingresa el siguiente comando para configurar la herramienta de gcloud y usar us-central1-a como tu zona predeterminada para el SDK de Cloud. Esta zona contendrá tu instancia de Cloud Datalab.

    gcloud config set compute/zone us-central1-a
    
  4. Ingresa el comando siguiente a fin de crear una VM de Compute Engine (llamada mltutorial), que se usa para ejecutar el contenedor de Cloud Datalab. Este comando también crea una conexión SSH con tu VM y asigna la interfaz web remota de Cloud Datalab al puerto local 8081. Si se te solicita, ingresa el número correspondiente a tu zona predeterminada de Compute Engine.

    datalab create mltutorial
    

    Cuando veas el mensaje The connection to Datalab is now open and will remain until this command is killed, estás conectado a la instancia. Es posible que la interfaz de la línea de comandos ya no produzca resultados una vez que se establezca la conexión SSH.

  5. En la ventana de Cloud Shell, haz clic en el ícono Ícono de vista previa web de Vista previa web.

  6. Selecciona Cambiar puerto.

  7. En el diálogo Cambiar puerto de vista previa, ingresa 8081 y, luego, haz clic en Cambiar y obtener vista previa. Esto abre Cloud Datalab en una pestaña nueva.

    gcloud compute ssh --quiet --zone "us-central1-a" --ssh-flag="-N" --ssh-flag="-L" --ssh-flag="localhost:8081:localhost:8080" "${USER}@mltutorial"
    
  8. Haz clic en Notebook para crear un notebook nuevo. El notebook se abre en una pestaña nueva.

  9. En la barra de título, haz clic en Notebook sin título para cambiar el nombre del notebook.

  10. En el diálogo Renombrar notebook, ingresa BigQuery ML tutorial y, luego, haz clic en Ok.

  11. En la primera celda de código, ingresa lo siguiente a fin de actualizar a la última versión de la biblioteca cliente de Python para BigQuery.

    !pip install --upgrade google-cloud-bigquery
    
  12. Haz clic en Ejecutar > Ejecutar desde esta celda. Los resultados de la consulta aparecen debajo del bloque del código. La instalación se completa cuando ves el mensaje siguiente:

    Successfully installed ...

  13. El código produce una respuesta de tamaño considerable. Para ocultar la respuesta, haz clic en el menú de la celda y selecciona Collapse (contraer) a fin de contraer la celda.

    Menú de la celda

  14. Haz clic en Agregar código para crear una celda de código nueva.

  15. Ingresa el siguiente código a fin de importar la biblioteca cliente de Python para BigQuery y, luego, inicializar un cliente. El cliente de BigQuery se usa para enviar y recibir mensajes de la API de BigQuery.

    from google.cloud import bigquery
    client = bigquery.Client(location="US")
    
  16. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda). Este comando no produce respuesta.

Paso dos: crea tu conjunto de datos

A continuación, crea un conjunto de datos de BigQuery para almacenar tu modelo de AA. Para crear tu conjunto de datos, haz lo siguiente:

  1. Haz clic en Add Code (agregar código) para crear una celda de código nueva.

  2. Ingresa el comando siguiente para crear tu conjunto de datos.

    dataset = client.create_dataset('bqml_tutorial')
    
  3. Haz clic en Ejecutar > Ejecutar desde esta celda. Este comando no produce respuesta.

Paso tres: crea tu modelo

A continuación, debes crear un modelo de regresión logística con un conjunto de datos de muestra de Google Analytics para BigQuery. El modelo se usa para predecir si un visitante de un sitio web hará una transacción. La consulta de SQL estándar usa una declaración CREATE MODEL para crear y entrenar el modelo.

Para ejecutar la consulta CREATE MODEL a fin de crear y entrenar tu modelo, haz lo siguiente:

  1. Haz clic en Agregar código para crear una celda de código nueva.

  2. La biblioteca cliente de Python para BigQuery proporciona un comando automático que te permite ejecutar consultas con un código mínimo. Para cargar los comandos automáticos de la biblioteca cliente, ingresa el código siguiente.

    %load_ext google.cloud.bigquery
    
  3. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda). Este comando no produce respuesta.

  4. Haz clic en Add Code (agregar código) para crear una celda de código nueva.

  5. La biblioteca cliente de BigQuery proporciona una celda automática %%bigquery, la cual ejecuta una consulta de SQL y muestra los resultados como un marco de datos de Pandas. Ingresa la consulta siguiente de SQL estándar en la celda. No se requiere usar el prefijo #standardSQL para la biblioteca cliente. SQL estándar es la sintaxis de consulta predeterminada.

    %%bigquery
    CREATE OR REPLACE MODEL `bqml_tutorial.sample_model`
    OPTIONS(model_type='logistic_reg') AS
    SELECT
      IF(totals.transactions IS NULL, 0, 1) AS label,
      IFNULL(device.operatingSystem, "") AS os,
      device.isMobile AS is_mobile,
      IFNULL(geoNetwork.country, "") AS country,
      IFNULL(totals.pageviews, 0) AS pageviews
    FROM
      `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    WHERE
      _TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
    
  6. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda).

  7. La consulta tarda varios minutos en completarse. Una vez completada la primera iteración, tu modelo (sample_model) aparece en el panel de navegación de la IU web de BigQuery. Debido a que la consulta usa una declaración CREATE MODEL para crear una tabla, no ves los resultados de la consulta. El resultado es una string vacía.

Paso cuatro: obtén estadísticas de entrenamiento

Para ver los resultados del entrenamiento del modelo, puedes usar la función ML.TRAINING_INFO o puedes ver las estadísticas en la IU web de BigQuery. Actualmente, esta funcionalidad no está disponible en la IU web clásica de BigQuery. En este instructivo, usas la función ML.TRAINING_INFO.

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 la multa para una mala predicción, un número que indica qué tan mala fue la predicción del modelo en un ejemplo individual. Si la predicción del modelo es perfecta, la pérdida es cero; de lo contrario, la pérdida es mayor. El objetivo de entrenar un modelo es encontrar un conjunto de pesos que tengan, en promedio, una pérdida baja en todos los ejemplos.

Para ver las estadísticas de entrenamiento del modelo que se generaron cuando se ejecutó la consulta CREATE MODEL, haz lo siguiente:

  1. Haz clic en Add Code (agregar código) para crear una celda de código nueva.

  2. Ingresa la consulta siguiente de SQL estándar en la celda.

    %%bigquery
    SELECT
      *
    FROM
      ML.TRAINING_INFO(MODEL `bqml_tutorial.sample_model`)
    
  3. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda).

  4. Cuando se completa la consulta, los resultados aparecen debajo de ella. Los resultados deberían verse de la siguiente manera:

    Resultado de ML.TRAINING_INFO

    La columna loss (pérdida) representa la métrica de pérdida calculada después de la iteración en el conjunto de datos de entrenamiento. Como se realizó una regresión logística, esta columna es la pérdida logística. La columna eval_loss (pérdida de datos de evaluación) es la misma métrica de pérdida calculada en el conjunto de datos de exclusión (datos que no se incluyen en el entrenamiento para validar el modelo).

    Para obtener más detalles sobre la función ML.TRAINING_INFO, consulta la Referencia de sintaxis de BigQuery ML.

Paso cinco: evalúa tu modelo

Después de crear tu modelo, debes evaluar el rendimiento del clasificador con la función ML.EVALUATE. También puedes usar la función ML.ROC_CURVE para las métricas específicas de regresión logística.

Un clasificador es uno de un conjunto de valores de destino enumerados para una etiqueta. Por ejemplo, en este instructivo, usas un modelo de clasificación binaria que detecta transacciones. Las dos clases son los valores en la columna label: 0 (sin transacciones) y no 1 (transacción realizada).

Para ejecutar la consulta ML.EVALUATE que evalúa el modelo, haz lo siguiente:

  1. Haz clic en Add Code (agregar código) para crear una celda de código nueva.

  2. Ingresa la consulta siguiente de SQL estándar en la celda.

    %%bigquery
    SELECT
      *
    FROM ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IF(totals.transactions IS NULL, 0, 1) AS label,
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(geoNetwork.country, "") AS country,
        IFNULL(totals.pageviews, 0) AS pageviews
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
    
  3. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda).

  4. Cuando se completa la consulta, los resultados aparecen debajo de ella. Los resultados deberían verse de la siguiente manera:

    Salida de ML.EVALUATE

    Debido a que realizaste una regresión logística, los resultados incluyen las columnas siguientes:

Paso seis: usa tu modelo para predecir resultados

Ahora que ya evaluaste tu modelo, el paso siguiente es usarlo para predecir resultados. Usa tu modelo para predecir la cantidad de transacciones realizadas por los visitantes de un sitio web de cada país. Y úsalo para predecir compras por usuario.

Para ejecutar la consulta que usa el modelo a fin de predecir la cantidad de transacciones, haz lo siguiente:

  1. Haz clic en Add Code (agregar código) para crear una celda de código nueva.

  2. Ingresa la consulta siguiente de SQL estándar en la celda.

    %%bigquery
    SELECT
      country,
      SUM(predicted_label) as total_predicted_purchases
    FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(totals.pageviews, 0) AS pageviews,
        IFNULL(geoNetwork.country, "") AS country
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
      GROUP BY country
      ORDER BY total_predicted_purchases DESC
      LIMIT 10
    
  3. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda).

  4. Cuando se completa la consulta, los resultados aparecen debajo de ella. Los resultados deberían verse de la siguiente manera. Debido a que el entrenamiento del modelo no es determinista, tus resultados podrían ser diferentes.

    Resultado uno de ML.PREDICT

En el ejemplo siguiente, tratas de predecir la cantidad de transacciones que realizará cada visitante de un sitio web. Esta consulta es idéntica a la consulta anterior con la excepción de la cláusula GROUP BY. Aquí, la cláusula GROUP BY GROUP BY fullVisitorId se usa para agrupar los resultados por ID de visitante.

Para ejecutar la consulta que predice las compras por usuario, haz lo siguiente:

  1. Haz clic en Add Code (agregar código) para crear una celda de código nueva.

  2. Ingresa la consulta siguiente de SQL estándar en la celda.

    %%bigquery
    SELECT
      fullVisitorId,
      SUM(predicted_label) as total_predicted_purchases
    FROM ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
      SELECT
        IFNULL(device.operatingSystem, "") AS os,
        device.isMobile AS is_mobile,
        IFNULL(totals.pageviews, 0) AS pageviews,
        IFNULL(geoNetwork.country, "") AS country,
        fullVisitorId
      FROM
        `bigquery-public-data.google_analytics_sample.ga_sessions_*`
      WHERE
        _TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
      GROUP BY fullVisitorId
      ORDER BY total_predicted_purchases DESC
      LIMIT 10
    
  3. Haz clic en Run > Run from this cell (Ejecutar > Ejecutar desde esta celda).

  4. Cuando se completa la consulta, los resultados aparecen debajo de ella. Los resultados deberían verse de la siguiente manera:

    Resultado dos de ML.PREDICT

Limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

  • Puedes borrar el proyecto que creaste.
  • O puedes mantener el proyecto y borrar la VM de Cloud Datalab.

Borra tu VM de Cloud Datalab

Si borras tu proyecto, se quita la VM de Cloud Datalab. Si no deseas borrar el proyecto de Cloud Platform, puedes borrar la VM de Cloud Datalab.

Para borrar la VM de Cloud Datalab, haz lo siguiente:

  1. Abre la página de instancias de VM de Compute Engine.

    Ir a la página Instancias de VM

  2. Marca la instancia mltutorial y luego haz clic en Delete (borrar).

  3. Cuando se te solicite, haz clic en Delete (borrar).

Borra tu proyecto

Para borrar el proyecto, haz lo siguiente:

  1. In the GCP Console, go to the Projects page.

    Go to the Projects page

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

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de BigQuery ML