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, te permite enfocarte en el análisis de datos para buscar estadísticas valiosas.
BigQuery Machine Learning (BigQuery ML) 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.
El filtrado colaborativo proporciona una forma de generar recomendaciones de productos para usuarios o de segmentar los productos en función de los usuarios. El punto de partida es una tabla con tres columnas: un ID de usuario, un ID de artículo y la calificación que el usuario le dio al producto. Esta tabla puede ser dispersa: los usuarios no tienen que calificar todos los productos. Luego, según las calificaciones, la técnica busca usuarios y productos similares, y determina la calificación que un usuario le daría a un producto que no vio. Entonces, puedes recomendar los productos a otros con las calificaciones previstas más altas, o bien segmentar productos en función de los usuarios con las calificaciones previstas más altas.
Para ilustrar los sistemas de recomendación en acción, usarás el conjunto de datos de MovieLens. Este es un conjunto de datos de opiniones sobre películas que lanzó GroupLens, un laboratorio de investigación del Departamento de Informática e Ingeniería de la University of Minnesota, a través del financiamiento otorgado por la US National Science Foundation.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
Crear un conjunto de datos de BigQuery para almacenar y cargar datos de MovieLens
Explorar el conjunto de datos de MovieLens
Usar un modelo entrenado para hacer recomendaciones en BigQuery
Realizar predicciones de productos tanto para usuarios individuales como para grupos de usuarios
Configura tu entorno
En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
Accede a Qwiklabs desde una ventana de incógnito.
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.
Cuando esté listo, haga clic en Comenzar lab.
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
Haga clic en Abrir Google Console.
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.
Acepta las condiciones y omite la página de recursos de recuperación.
Abra BigQuery en Console
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.
Haga clic en Listo.
Tarea 1. Consigue los datos de MovieLens
En esta tarea, usarás la línea de comandos para crear un conjunto de datos de BigQuery y, así, almacenar los datos de MovieLens. Estos se cargarán de un bucket de Cloud Storage al conjunto de datos.
Inicia el Editor de Cloud Shell
Para crear un conjunto de datos de BigQuery y cargar los datos de MovieLens, se usa Cloud Shell.
En la consola de Google Cloud, haz clic en Activar Cloud Shell ().
Si se te solicita, haz clic en Continuar.
Crea y carga un conjunto de datos de BigQuery
Ejecuta el siguiente comando para crear un conjunto de datos de BigQuery llamado movies:
bq --location=US mk --dataset movies
Ejecuta los siguientes comandos por separado en Cloud Shell:
Debes confirmar que el conjunto de datos consta de más de 138,000 usuarios, casi 27,000 películas y un poco más de 20 millones de calificaciones.
Examina las primeras películas mediante la siguiente consulta:
SELECT
*
FROM
movies.movielens_movies_raw
WHERE
movieId < 5
Puedes ver que la columna de géneros es una cadena con formato. Analiza los géneros en un array y vuelve a escribir los resultados en una tabla llamada movielens_movies:
CREATE OR REPLACE TABLE
movies.movielens_movies AS
SELECT
* REPLACE(SPLIT(genres, "|") AS genres)
FROM
movies.movielens_movies_raw
Puedes realizar consultas adicionales hasta que te hayas familiarizado con el conjunto de datos.
Haz clic en Revisar mi progreso para verificar el objetivo.
Explorar los datos
Tarea 3. Evalúa un modelo entrenado que se creó con el filtrado colaborativo
En esta tarea, verás las métricas de un modelo entrenado que se generó a través de la factorización de matrices.
La factorización de matrices es una técnica de filtrado colaborativo que se basa en dos vectores llamados factores de usuario y factores de elementos. Los factores de usuario son una representación de baja dimensión de un user_id, y los factores de elementos representan de manera similar un item_id.
Para realizar una factorización de matrices de nuestros datos, usarás la sintaxis típica de BigQuery ML, excepto que el model_type es matrix_factorization y deberás identificar qué columnas cumplen qué funciones en el filtrado colaborativo.
Para aplicar la factorización de matrices en los datos de calificación de películas, se debe ejecutar la consulta de BigQuery ML a fin de crear el modelo. Sin embargo, la creación de este tipo de modelo puede llevar hasta 40 minutos y requiere un proyecto de Google Cloud con recursos orientados a reservas, que es diferente de lo que ofrece el entorno de Qwiklabs.
Se creó un modelo en el conjunto de datos de BigQuery cloud-training-demos del proyecto de Cloud Training para usarlo en el resto del lab.
Nota: La siguiente consulta es solo de referencia. NO EJECUTES esta consulta en tu proyecto:
CREATE OR REPLACE MODEL movies.movie_recommender
OPTIONS (model_type='matrix_factorization', user_col='userId', item_col='movieId', rating_col='rating', l2_reg=0.2, num_factors=16) AS
SELECT userId, movieId, rating
FROM movies.movielens_ratings
Nota: Las opcionesnum_factors y l2_reg se seleccionaron después de mucha experimentación para acelerar el entrenamiento del modelo.
Para ver las métricas del modelo entrenado, ejecuta la siguiente consulta:
SELECT * FROM ML.EVALUATE(MODEL `cloud-training-demos.movielens.recommender`)
Tarea 4: Realiza recomendaciones
En esta tarea, usarás el modelo entrenado para proporcionar recomendaciones.
Busquemos las mejores películas de comedia para recomendar al usuario cuyo userId es 903.
Ingresa la siguiente consulta:
SELECT
*
FROM
ML.PREDICT(MODEL `cloud-training-demos.movielens.recommender`,
(
SELECT
movieId,
title,
903 AS userId
FROM
`movies.movielens_movies`,
UNNEST(genres) g
WHERE
g = 'Comedy' ))
ORDER BY
predicted_rating DESC
LIMIT
5
Este resultado incluye películas que el usuario ya vio y calificó antes.
Quitémoslas:
SELECT
*
FROM
ML.PREDICT(MODEL `cloud-training-demos.movielens.recommender`,
(
WITH
seen AS (
SELECT
ARRAY_AGG(movieId) AS movies
FROM
movies.movielens_ratings
WHERE
userId = 903 )
SELECT
movieId,
title,
903 AS userId
FROM
movies.movielens_movies,
UNNEST(genres) g,
seen
WHERE
g = 'Comedy'
AND movieId NOT IN UNNEST(seen.movies) ))
ORDER BY
predicted_rating DESC
LIMIT
5
Haz clic en Revisar mi progreso para verificar el objetivo.
Realizar recomendaciones
Tarea 5: Aplica la segmentación por cliente
En esta tarea, aprenderás a identificar las películas con mejor calificación para un usuario específico. A veces, tienes un producto y debes encontrar clientes con mayores probabilidades de que les guste.
Te gustaría conseguir más opiniones para movieId=96481, que solo tiene una calificación, y deseas enviar cupones a los 100 usuarios que tienen mayores probabilidades de calificarla con el puntaje más alto.
Usa lo siguiente para identificar a esos usuarios:
SELECT
*
FROM
ML.PREDICT(MODEL `cloud-training-demos.movielens.recommender`,
(
WITH
allUsers AS (
SELECT
DISTINCT userId
FROM
movies.movielens_ratings )
SELECT
96481 AS movieId,
(
SELECT
title
FROM
movies.movielens_movies
WHERE
movieId=96481) title,
userId
FROM
allUsers ))
ORDER BY
predicted_rating DESC
LIMIT
100
El resultado nos proporciona 100 usuarios para incluir en la segmentación.
Haz clic en Revisar mi progreso para verificar el objetivo.
Segmentar por cliente
Tarea 6: Realiza predicciones por lotes para todos los usuarios y las películas
En esta tarea, realizarás una consulta para obtener predicciones por lotes para usuarios y películas.
¿Qué tal si quieres realizar predicciones para todas las combinaciones de usuarios y películas? En lugar de tener que tomar usuarios y películas distintos, como en la consulta anterior, se proporciona una función conveniente para realizar predicciones por lotes para todos los movieId y userId que se encontraron durante el entrenamiento.
Ingresa la siguiente consulta para obtener las predicciones por lotes:
SELECT
*
FROM
ML.RECOMMEND(MODEL `cloud-training-demos.movielens.recommender`)
LIMIT
100000
Sin el comando LIMIT, los resultados serían demasiado grandes para devolverlos dada la configuración predeterminada. Pero el resultado te brinda una idea del tipo de predicciones que se pueden realizar con este modelo.
Como se vio en la sección anterior, es posible filtrar películas que el usuario ya vio y calificó antes. La razón por la que las películas ya vistas no se filtran de forma predeterminada es que hay situaciones (por ejemplo, las recomendaciones de restaurantes) en las que se podría esperar perfectamente que necesites recomendar restaurantes que ya le gustaban al usuario.
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.
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
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.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto
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.
En este lab, usarás el conjunto de datos de MovieLens para compilar un modelo de filtrado colaborativo que usarás para hacer predicciones.
Duración:
0 min de configuración
·
Acceso por 60 min
·
60 min para completar