arrow_back

Recomendaciones de películas en BigQuery ML 2.5

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

Recomendaciones de películas en BigQuery ML 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, 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.

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

  1. En la consola de Google Cloud, haz clic en Activar Cloud Shell (Ícono de Cloud Shell).
  2. Si se te solicita, haz clic en Continuar.

Crea y carga un conjunto de datos de BigQuery

  1. Ejecuta el siguiente comando para crear un conjunto de datos de BigQuery llamado movies:
bq --location=US mk --dataset movies
  1. Ejecuta los siguientes comandos por separado en Cloud Shell:
bq load --source_format=CSV \ --location=US \ --autodetect movies.movielens_ratings \ gs://dataeng-movielens/ratings.csv bq load --source_format=CSV \ --location=US \ --autodetect movies.movielens_movies_raw \ gs://dataeng-movielens/movies.csv

Haz clic en Revisar mi progreso para verificar el objetivo. Conseguir los datos de MovieLens

Tarea 2: Explora los datos

En esta tarea, explorarás y verificarás el conjunto de datos de MovieLens con el editor de consultas.

  1. En la consulta en SQL de BigQuery, ejecuta lo siguiente:
SELECT COUNT(DISTINCT userId) numUsers, COUNT(DISTINCT movieId) numMovies, COUNT(*) totalRatings FROM movies.movielens_ratings

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.

  1. Examina las primeras películas mediante la siguiente consulta:
SELECT * FROM movies.movielens_movies_raw WHERE movieId < 5

Tabla de resultados en la que se muestran cuatro filas de datos debajo de los encabezados de las columnas: Row, movieID, title y genres

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

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

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

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

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. 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.