Cargando…
No se encontraron resultados.

Aplica tus habilidades en la consola de Google Cloud

Smart Analytics, Machine Learning, and AI on Google Cloud - Español

Obtén acceso a más de 700 labs y cursos

Predice la duración de un viaje en bicicleta con un modelo de regresión en BQML 2.5

Lab 1 hora universal_currency_alt 5 créditos show_chart Avanzado
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

Descripción general

BigQuery es la base de datos analítica de bajo costo, no-ops y completamente administrada de Google. Con BigQuery, puedes consultar muchos terabytes de datos sin tener que administrar infraestructuras y sin necesitar un administrador de base de datos. BigQuery usa SQL y puede aprovechar el modelo de pago por uso. Además, permite que te enfoques en el análisis de datos para buscar estadísticas valiosas.

BigQuery Machine Learning es una función de BigQuery con la que los analistas de datos pueden crear, entrenar, evaluar y predecir con modelos de aprendizaje automático y programación mínima.

En este lab, usarás el conjunto de datos de bicicletas de Londres para crear un modelo de regresión en BigQuery ML para predecir la duración de un viaje. Supongamos que tienes un negocio de alquiler de bicicletas con dos tipos de bicicletas en stock: una resistente y para viajes diarios, y otra de carrera, rápida pero frágil. Si es probable que el alquiler de bicicletas sea de larga duración, debemos contar con bicicletas de carrera. En cambio, si va a ser de corta duración, debemos tener en stock bicicletas para viajes diarios. Por lo tanto, para crear un sistema con un stock adecuado de bicicletas, debemos predecir la duración de los alquileres.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Consultar y explorar el conjunto de datos de bicicletas de Londres para la ingeniería de atributos
  • Crear un modelo de regresión lineal en BigQuery ML
  • Evaluar el rendimiento de tu modelo de aprendizaje automático
  • Extraer los pesos de tu modelo

Requisitos

  • Un proyecto de Google Cloud Platform
  • Un navegador, como Google Chrome o Mozilla Firefox

Configura el entorno

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Abra BigQuery en Console

  1. En Google Cloud Console, seleccione el menú de navegación > BigQuery.

Se abrirá el cuadro de mensaje Te damos la bienvenida a BigQuery en Cloud Console, que contiene un vínculo a la guía de inicio rápido y enumera las actualizaciones de la IU.

  1. Haga clic en Listo.

Tarea 1. Explora los datos de bicicletas para la ingeniería de atributos

El primer paso para solucionar un problema de AA es formularlo (es decir, identificar los atributos de nuestro modelo y la etiqueta). Dado que el objetivo de nuestro primer modelo es predecir la duración de un alquiler según nuestro conjunto de datos históricos de alquileres de bicicletas, la etiqueta es la duración del alquiler.

Si creemos que la duración variará en función de la estación en la que se alquile la bicicleta, el día de la semana y la hora del día, estos pueden ser nuestros atributos. Antes de continuar y crear un modelo con estos atributos, es recomendable verificar que estos factores realmente influyan en la etiqueta.

Proponer atributos para un modelo de aprendizaje automático se denomina ingeniería de atributos. A menudo, la ingeniería de atributos es la parte más importante de crear modelos de AA precisos y puede tener un impacto mucho mayor que ajustar hiperparámetros o decidir qué algoritmo usar. Una buena ingeniería de atributos requiere un conocimiento profundo de los datos y el dominio. A menudo, es un proceso de prueba de hipótesis: tienes una idea para un atributo, compruebas si funciona (tiene información mutua con la etiqueta) y, luego, lo agregas al modelo. Si no funciona, debes intentarlo nuevamente.

Impacto de la estación

Para comprobar si la duración de un alquiler varía según la estación, podemos ver el resultado de la siguiente consulta en Looker Studio.

  1. En el EDITOR de consultas, pega la siguiente consulta:
SELECT start_station_name, AVG(duration) AS duration FROM `bigquery-public-data`.london_bicycles.cycle_hire GROUP BY start_station_name
  1. Haz clic en EJECUTAR.
  2. Haz clic en ABRIR EN > Looker Studio en la consola de Cloud de BigQuery.
  3. Cuando se te solicite, selecciona el botón EMPEZAR.
  4. Haz clic en el Gráfico que se encuentra en el lienzo.
  5. En la pestaña CONFIGURACIÓN del menú lateral derecho, establece la configuración de la siguiente manera:
  • Dimensión: start_station_name
  • Métrica: Duración
  • Ordenar por: Duración en orden Descendente
  • Interacción con el gráfico: Habilita Filtrado cruzado y Cambiar orden.

  1. En la pestaña ESTILO del menú lateral derecho, establece la configuración de la siguiente manera:
  • Gráfico de barras: Vertical

  • Barras: 100

  • Ejes: Mostrar ejes

Tu trazado debe parecerse a lo siguiente:

No hay dudas de que varias estaciones están asociadas con alquileres de larga duración (más de 3,000 segundos), pero la mayoría de las estaciones tiene duraciones de un rango relativamente acotado. Si todas las estaciones en Londres tuviesen duraciones de un rango acotado, la estación en la que el alquiler se iniciara no sería un buen atributo. Sin embargo, en este problema, como se ve en el gráfico start_station_name, sí es importante.

Nota: No podemos usar end_station_name como un atributo, ya que, en el momento en el que se alquila la bicicleta, no sabemos dónde se devolverá.

Dado que estamos creando un modelo de aprendizaje automático para predecir eventos en el futuro, debemos tomar la precaución de no usar columnas que se desconozcan en el momento en que se realice la predicción. Este criterio de tiempo/causalidad impone limitaciones respecto de qué atributos podemos usar.

Impacto del día de la semana y la hora del día

Para los siguientes candidatos de atributos, el proceso es similar. Podemos comprobar si dayofweek (o, de manera similar, hourofday) es importante.

  1. En la ventana del Editor de consultas, pega la siguiente consulta:
SELECT EXTRACT(dayofweek FROM start_date) AS dayofweek, AVG(duration) AS duration FROM `bigquery-public-data`.london_bicycles.cycle_hire GROUP BY dayofweek
  1. Haz clic en ABRIR EN > Looker Studio en la consola de Cloud de BigQuery.
Nota: Si ves un mensaje de error del sistema, debes realizar algunos cambios para visualizar los datos en Looker Studio descritos en los pasos del 3 al 11.
  1. Haz clic en la tabla que contiene los datos duration y dayofweek.

  2. En Configuración > Métrica, coloca el cursor sobre dayofweek y haz clic en el ícono de lápiz para editar.

  3. En el menú desplegable Display format, haz clic en Número de semana y, luego, elige Formato de fecha personalizado.

  4. Cambia la fecha personalizada por “Día” w y, luego, haz clic en Aplicar. En el gráfico, ahora se mostrarán Día 1 a Día 7 en el campo dayofweek.

  5. Haz clic en el gráfico en que se muestra el error del sistema.

  6. En Configuración > Dimensión, haz clic en Duración y cambia a dayofweek.

  7. En Configuración > Dimensión, coloca el cursor sobre dayofweek y haz clic en el ícono de lápiz para editar.

  8. En el menú desplegable Display format, selecciona Formato de fecha personalizado y cambia la fecha personalizada por “Día” w. Luego, haz clic en Aplicar.

  9. En Configuración > Métrica, haz clic en dayofweek y cambia a duration.

Para el día de la semana, la visualización debe parecerse a lo siguiente:

Para la hora del día, la visualización debe parecerse a lo siguiente:

Nota: Al igual que en los pasos anteriores, es posible que debas modificar las propiedades en Looker Studio para obtener el resultado deseado.

Está claro que la duración varía en función del día de la semana y de la hora del día. Al parecer, las duraciones son mayores los fines de semana (días 1 y 7) que los días de entre semana. De manera similar, las duraciones son mayores temprano a la mañana y a media tarde. Por lo tanto, dayofweek y hourofday son buenos atributos.

Impacto de la cantidad de bicicletas

Otro potencial atributo es la cantidad de bicicletas que hay en la estación. Podríamos formular la hipótesis de que las personas se quedan con las bicicletas durante más tiempo si hay menos en alquiler en la estación.

  1. En la ventana del Editor de consultas, pega la siguiente consulta:
SELECT bikes_count, AVG(duration) AS duration FROM `bigquery-public-data`.london_bicycles.cycle_hire JOIN `bigquery-public-data`.london_bicycles.cycle_stations ON cycle_hire.start_station_name = cycle_stations.name GROUP BY bikes_count
  1. Visualiza tus datos en Looker Studio.

Notamos que la relación es ruidosa y no tiene una tendencia visible (compárala con la hora del día, por ejemplo). Esto indica que la cantidad de bicicletas no es un buen atributo.

Tarea 2. Crea un conjunto de datos de entrenamiento

Según la exploración del conjunto de datos de bicicletas y la relación de varias columnas con la columna de la etiqueta, podemos preparar el conjunto de datos de entrenamiento. Para hacerlo, extraemos los atributos seleccionados y la etiqueta:

SELECT duration, start_station_name, CAST(EXTRACT(dayofweek FROM start_date) AS STRING) AS dayofweek, CAST(EXTRACT(hour FROM start_date) AS STRING) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire

Las columnas de atributos deben ser numéricas (INT64, FLOAT64, etc.) o categóricas (STRING). Si el atributo es numérico, pero debe tratarse como categórico, debemos transmitirlo como string. Esto explica por qué transmitimos las columnas dayofweek y hourofday, que son números enteros (en los rangos 1 a 7 y 0 a 23, respectivamente), en cadenas.

Si la preparación de datos implica uniones o transformaciones costosas en términos de procesamiento, puede ser una buena idea guardar los datos de entrenamiento preparados como una tabla para no repetir este trabajo durante la experimentación. Si las transformaciones son triviales, pero la consulta en sí misma es muy larga, podría resultar conveniente guardarla como una vista para evitar la repetición.

En este caso, la consulta es sencilla y corta; por lo tanto, para mayor claridad, no la guardaremos.

  1. Crea un conjunto de datos en BigQuery llamado bike_model para almacenar tu modelo. Establece el Tipo de ubicación como Multirregión y selecciona la región UE (múltiples regiones de la Unión Europea), ya que los datos con los que estamos entrenando se encuentran en la UE. Haz clic en Crear conjunto de datos.

Para entrenar el modelo de AA y guardarlo en el conjunto de datos bike_model, debemos llamar a CREATE MODEL, que funciona de manera similar a CREATE TABLE. Dado que la etiqueta que estamos intentando predecir es numérica, este es un problema de regresión, por lo que la opción más adecuada es elegir linear_reg como el tipo de modelo en OPTIONS.

  1. Ingresa la siguiente consulta en el Editor de consultas:
CREATE OR REPLACE MODEL bike_model.model OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, CAST(EXTRACT(dayofweek FROM start_date) AS STRING) AS dayofweek, CAST(EXTRACT(hour FROM start_date) AS STRING) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL

Ten en cuenta que el entrenamiento de este modelo tarda entre 2 y 3 minutos.

  1. Para ver algunas métricas relacionadas con el entrenamiento de modelos, ingresa la siguiente consulta en la ventana del editor de BigQuery:
SELECT * FROM ML.EVALUATE(MODEL `bike_model.model`)

El error absoluto promedio es 1,025 segundos, es decir, aproximadamente 17 minutos. Esto significa que debemos esperar poder predecir la duración de los alquileres de bicicletas con un error promedio de aproximadamente 17 minutos.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un conjunto de datos de entrenamiento

Tarea 3. Mejora el modelo con la ingeniería de atributos

Combina días de la semana

Podríamos haber elegido otras maneras para representar los atributos que tenemos. Por ejemplo, recuerda que, cuando exploramos la relación entre dayofweek y duration de los alquileres, descubrimos que las duraciones eran mayores los fines de semana que los días de entre semana. Por lo tanto, en lugar de tratar el valor sin procesar de dayofweek como un atributo, podemos emplear esta estadística fusionando varios valores de dayofweek en la categoría de día de semana.

  1. Crea un modelo de AA de BigQuery con los días de semana combinados a través de la siguiente consulta:
CREATE OR REPLACE MODEL bike_model.model_weekday OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, IF (EXTRACT(dayofweek FROM start_date) BETWEEN 2 AND 6, 'weekday', 'weekend') AS dayofweek, CAST(EXTRACT(hour FROM start_date) AS STRING) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL
  1. Para ver las métricas de este modelo, ingresa la siguiente consulta en la ventana del editor de BigQuery:
SELECT * FROM ML.EVALUATE(MODEL `bike_model.model_weekday`)

Este modelo tiene como resultado un error absoluto promedio de 966 segundos, que es inferior a los 1,025 segundos del modelo original, lo que significa que mejoró.

Crea intervalos de la hora del día

En función de la relación entre hourofday y duration, podemos experimentar con la creación de buckets de variables en 4 discretizaciones: (-inf,5), [5,10), [10,17) y [17,inf).

  1. Para crear un modelo de AA de BigQuery con la hora del día en buckets y atributos de días de semana combinados, usa la siguiente consulta:
CREATE OR REPLACE MODEL bike_model.model_bucketized OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, IF (EXTRACT(dayofweek FROM start_date) BETWEEN 2 AND 6, 'weekday', 'weekend') AS dayofweek, ML.BUCKETIZE(EXTRACT(hour FROM start_date), [5, 10, 17]) AS hourofday FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL
  1. Para ver las métricas de este modelo, ingresa la siguiente consulta en la ventana del editor de BigQuery:
SELECT * FROM ML.EVALUATE(MODEL `bike_model.model_bucketized`)

Este modelo tiene como resultado un error absoluto promedio de 904 segundos, que es inferior a los 966 segundos del modelo de día de entre semana a fin de semana. Es una mejora adicional.

Haz clic en Revisar mi progreso para verificar el objetivo. Mejorar el modelo con la ingeniería de atributos

Tarea 4. Realiza predicciones

Nuestro mejor modelo contiene varias transformaciones de datos. ¿No sería bueno que BigQuery pudiera recordar los conjuntos de transformaciones que hicimos en el entrenamiento y los aplicara automáticamente en el momento de la predicción? Puedes hacerlo, gracias a la cláusula TRANSFORM.

En este caso, el modelo resultante necesita únicamente start_station_name y start_date para predecir duration. Las transformaciones se guardan y se llevan a cabo en los datos sin procesar proporcionados para crear atributos de entrada para el modelo. La principal ventaja de colocar todas las funciones de procesamiento previo dentro de la cláusula TRANSFORM es que no es necesario que los clientes del modelo sepan qué tipo de procesamiento previo se realizó.

  1. Para crear un modelo de AA de BigQuery con la cláusula TRANSFORM que incorpore la hora del día en buckets y atributos de días de la semana combinados, usa la siguiente consulta:
CREATE OR REPLACE MODEL bike_model.model_bucketized TRANSFORM(* EXCEPT(start_date), IF (EXTRACT(dayofweek FROM start_date) BETWEEN 2 AND 6, 'weekday', 'weekend') AS dayofweek, ML.BUCKETIZE(EXTRACT(HOUR FROM start_date), [5, 10, 17]) AS hourofday ) OPTIONS (input_label_cols=['duration'], model_type='linear_reg') AS SELECT duration, start_station_name, start_date FROM `bigquery-public-data`.london_bicycles.cycle_hire WHERE `duration` IS NOT NULL
  1. Con la cláusula TRANSFORM en su lugar, ingresa esta consulta para predecir la duración del alquiler en Park Lane ahora mismo (tu resultado variará):
SELECT * FROM ML.PREDICT(MODEL bike_model.model_bucketized, ( SELECT 'Park Lane , Hyde Park' AS start_station_name, CURRENT_TIMESTAMP() AS start_date) )

  1. Para realizar predicciones en lote en una muestra de 100 filas en el conjunto de entrenamiento, usa la siguiente consulta:
SELECT * FROM ML.PREDICT(MODEL bike_model.model_bucketized, ( SELECT start_station_name, start_date FROM `bigquery-public-data`.london_bicycles.cycle_hire LIMIT 100) )

Haz clic en Revisar mi progreso para verificar el objetivo. Realizar predicciones

Tarea 5. Examina los pesos del modelo

Un modelo de regresión lineal predice el resultado como una suma ponderada de sus entradas. A menudo, los pesos del modelo deben utilizarse en un entorno de producción.

  • Examina (o exporta) los pesos de tu modelo con la siguiente consulta:

    SELECT * FROM ML.WEIGHTS(MODEL bike_model.model_bucketized)

    Ten en cuenta que los atributos numéricos tienen un único peso, mientras que los atributos categóricos tienen un peso para cada valor posible. Por ejemplo, el atributo dayofweek tiene los siguientes pesos:

    Esto significa que, si el día es un día de semana, la contribución de este atributo a la predicción de duración general es 1,709 segundos (los pesos que proporcionan el rendimiento óptimo no son únicos, por lo que podrías obtener un valor diferente).

    Haz clic en Revisar mi progreso para verificar el objetivo. Examinar los pesos del modelo

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

Copyright 2020 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Anterior Siguiente

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
Vista previa