Crea recomendaciones de películas personalizadas


En este instructivo, usaremos el conjunto de datos Movielens para demostrar cómo subir tu catálogo de productos y eventos de usuario a Vertex AI Search para la venta minorista y entrenar un modelo de recomendación de productos personalizado. El conjunto de datos de Movielens contiene un catálogo de películas (productos) y calificaciones de películas de usuarios (eventos de usuario).

Trataremos cada calificación positiva de la película (calificaciones >= 4) como un evento de página vista del producto. Entrenaremos un modelo de recomendación del tipo Otros que podrían gustarte, que hará recomendaciones de películas en función de cualquier usuario o de una película de origen en nuestro conjunto de datos.

Duración estimada:

  • Pasos iniciales para comenzar a entrenar el modelo: aproximadamente 1.5 horas.
  • Esperando a que el modelo se entrene: aproximadamente 2 días.
  • Evaluación de las predicciones del modelo y limpieza: ~30 minutos.

Objetivos

  • Aprende a importar datos de productos y eventos de usuario de BigQuery a Vertex AI Search para la venta minorista.
  • Entrena y evalúa los modelos de recomendación.

Costos

En este instructivo, se usan componentes facturables de Google Cloud, que incluyen lo siguiente:

  • Cloud Storage
  • BigQuery
  • Vertex AI Search para la venta minorista

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

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

Si quieres obtener más información sobre los costos de Vertex AI Search para la venta minorista, consulta la página Precios de Vertex AI Search para la venta minorista.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

Prepara el conjunto de datos

Abre la consola de Google Cloud y selecciona tu proyecto de Google Cloud. Anota el ID del proyecto en la tarjeta Información del proyecto de la página del panel. Necesitarás el ID del proyecto para los siguientes pasos. Luego, haz clic en el botón Activar Cloud Shell en la parte superior de la consola.

Cloud Shell

Se abrirá una sesión de Cloud Shell en un marco nuevo en la parte inferior de la consola de Google Cloud, que mostrará una línea de comandos.

Importa el conjunto de datos

  1. Con Cloud Shell, descarga y descomprime el conjunto de datos de origen:

    wget https://files.grouplens.org/datasets/movielens/ml-latest.zip
    unzip ml-latest.zip
    
  2. Crea un bucket de Cloud Storage y sube los datos en él:

    gsutil mb gs://PROJECT_ID-movielens-data
    gsutil cp ml-latest/movies.csv ml-latest/ratings.csv \
      gs://PROJECT_ID-movielens-data
    
  3. Crea un conjunto de datos de BigQuery:

    bq mk movielens
    
  4. Carga movies.csv en una tabla nueva de BigQuery de películas:

    bq load --skip_leading_rows=1 movielens.movies \
      gs://PROJECT_ID-movielens-data/movies.csv \
      movieId:integer,title,genres
    
  5. Carga ratings.csv en una tabla de BigQuery de calificaciones nueva:

    bq load --skip_leading_rows=1 movielens.ratings \
      gs://PROJECT_ID-movielens-data/ratings.csv \
      userId:integer,movieId:integer,rating:float,time:timestamp
    

Crea vistas de BigQuery

  1. Crea una vista que convierta la tabla de películas en el esquema de catálogo de productos de venta minorista:

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
     SELECT
       CAST(movieId AS string) AS id,
       SUBSTR(title, 0, 128) AS title,
       SPLIT(genres, "|") AS categories
     FROM `PROJECT_ID.movielens.movies`' \
    movielens.products
    

    Ahora, la vista nueva tiene el esquema que espera Vertex AI Search para la venta minorista. Luego, en la barra lateral izquierda, elige BIG DATA -> BigQuery. Luego, en la barra del explorador de la izquierda, expande el nombre de tu proyecto y selecciona movielens -> products para abrir la página de consultas de esta vista.

    Vista de productos

  2. Ahora convirtamos las calificaciones de películas en eventos de usuario. Haremos lo siguiente:

    • Ignorar calificaciones de películas negativas (<4)
    • Tratar cada calificación positiva como un evento de vista de la página del producto (detail-page-view)
    • Volver a escalar el cronograma de Movielens a los últimos 90 días. Lo hacemos por dos motivos:
      • Vertex AI Search para venta minorista requiere que los eventos de usuario no sean anteriores a 2015. Las calificaciones de Movielens se remiten a 1995.
      • Vertex AI Search para venta minorista usa los eventos de usuarios de los últimos 90 días cuando entrega solicitudes de predicción para un usuario. Cada usuario parecerá tener eventos recientes cuando hagamos predicciones para cualquier usuario más adelante.

    Crea una vista de BigQuery. El siguiente comando usa una consulta en SQL que cumple con los requisitos de conversión mencionados anteriormente.

    bq mk --project_id=PROJECT_ID \
     --use_legacy_sql=false \
     --view '
     WITH t AS (
       SELECT
         MIN(UNIX_SECONDS(time)) AS old_start,
         MAX(UNIX_SECONDS(time)) AS old_end,
         UNIX_SECONDS(TIMESTAMP_SUB(
           CURRENT_TIMESTAMP(), INTERVAL 90 DAY)) AS new_start,
         UNIX_SECONDS(CURRENT_TIMESTAMP()) AS new_end
       FROM `PROJECT_ID.movielens.ratings`)
     SELECT
       CAST(userId AS STRING) AS visitorId,
       "detail-page-view" AS eventType,
       FORMAT_TIMESTAMP(
         "%Y-%m-%dT%X%Ez",
         TIMESTAMP_SECONDS(CAST(
           (t.new_start + (UNIX_SECONDS(time) - t.old_start) *
             (t.new_end - t.new_start) / (t.old_end - t.old_start))
         AS int64))) AS eventTime,
       [STRUCT(STRUCT(movieId AS id) AS product)] AS productDetails,
     FROM `PROJECT_ID.movielens.ratings`, t
     WHERE rating >= 4' \
    movielens.user_events
    

Importa un catálogo de productos y eventos de usuario

Ya estamos listos para importar el catálogo de productos y los datos de eventos del usuario a Vertex AI Search para la venta minorista.

  1. Habilitar la API de Vertex AI Search para venta minorista en tu proyecto de Google Cloud

    HABILITA LA API

  2. Haz clic en Comenzar.

  3. Ve a la página Datos> en la consola de Search for Retail.

    Ir a la página Datos

  4. Haga clic en Import.

Importar catálogo de productos

  1. Completa el formulario para importar productos de la vista de BigQuery que creaste antes:

    • Selecciona el tipo de importación: Catálogo de productos.
    • Selecciona el nombre de la rama predeterminado.
    • Selecciona la fuente de datos: BigQuery.
    • Selecciona el esquema de datos: Esquema de productos de venta minorista.
    • Ingresa el nombre de los productos para la vista de BigQuery que creaste anteriormente (PROJECT_ID.movielens.products).

  2. Haz clic en Importar.

  3. Espera hasta que se hayan importado todos los productos, lo que debería tomar entre 5 y 10 minutos.

    Puedes verificar la actividad de importación para el estado de la operación de importación. Cuando se completa la importación, el estado de la operación de importación cambia a Completado.

    Actividad de importación de productos

Importa eventos de usuarios

  1. Importa la vista eventos de usuario de BigQuery:

    • Selecciona el tipo de importación: Eventos de usuario.
    • Selecciona la fuente de datos: BigQuery.
    • Selecciona el esquema de datos: Esquema de eventos de venta minorista del usuario.
    • Ingresa el nombre de la vista user_events de BigQuery que creaste antes.
  2. Haz clic en Importar.

  3. Espera hasta que se haya importado al menos un evento antes de continuar con el siguiente paso, a fin de cumplir con los requisitos de datos para entrenar un modelo nuevo.

    Puedes verificar la actividad de importación para el estado de la operación. El proceso toma alrededor de una hora en completarse.

    Actividad de importación de eventos

Entrena y evalúa modelos de recomendación

Crea un modelo de recomendaciones

  1. Ve a la página Modelos en la consola de Search for Retail.

    Ir a la página Modelos

  2. Haz clic en Crear modelo.

    • Asigna un nombre al modelo.
    • Selecciona Otros elementos que podrían gustarte como el tipo de modelo.
    • Elige Tasa de clics (CTR) como el objetivo comercial.
  3. Haz clic en Crear.

    Crear modelo

    Tu modelo nuevo comienza el entrenamiento.

    Fecha de creación del modelo

Crea una configuración de entrega

  1. Ve a la página Parámetros de configuración de entrega en la consola de Search for Retail.

    Ir a la página Configuración de entrega

  2. Haz clic en Crear configuración de entrega:

    • Selecciona Recomendación.
    • Asígnale un nombre a la configuración de entrega.
    • Selecciona el modelo que creaste.
  3. Haz clic en Crear.

Espera a que el modelo esté “Listo para consultar”

El entrenamiento del modelo toma alrededor de dos días y está listo para la consulta.

Para ver el estado, haz clic en la configuración de entrega creada en la página de parámetros de configuración de entrega.

En el campo Modelo listo para consultar, se indica cuando se completa el proceso.

Obtener vista previa de las recomendaciones

Una vez que el modelo esté listo para realizar consultas, sucede lo siguiente:

  1. Ve a la página Parámetros de configuración de entrega en la consola de Search for Retail.

    Ir a la página Configuración de entrega
  2. Haz clic en el nombre de la configuración de entrega para ir a la página de detalles.
  3. Haz clic en la pestaña Evaluar.
  4. Ingresa un ID de película de origen, como 4993 para “El Señor de los Anillos: La comunidad del anillo (2001)”.

    Ingresar ID

  5. Haz clic en Vista previa de predicción para ver la lista de elementos recomendados a la derecha de la página.

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.

Borra el proyecto

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

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra los recursos individuales

  1. Ve a la página Configuración de entrega y borra la configuración de entrega que creaste.

  2. Ve a la página Modelos y borra el modelo.

  3. Borra el conjunto de datos de BigQuery en Cloud Shell:

    bq rm --recursive --dataset movielens
    
  4. Borra el bucket de Cloud Storage:

    gsutil rm gs://PROJECT_ID-movielens-data/movies.csv
    gsutil rm gs://PROJECT_ID-movielens-data/ratings.csv
    gsutil rb gs://PROJECT_ID-movielens-data/
    

¿Qué sigue?