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 usuarios a Vertex AI Search para 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 recomendaciones de tipo Otros elementos que podrían gustarte que hará recomendaciones de películas en función de cualquier usuario o una película inicial 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

  • Obtén información para importar datos de productos y eventos de usuarios de BigQuery a Vertex AI Search para 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.

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

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

Prepara el conjunto de datos

Abierta Consola de Google Cloud, 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 ventana de la 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:

    gcloud storage buckets create gs://PROJECT_ID-movielens-data
    gcloud storage 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 consulta 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 la venta minorista requiere que los eventos de usuario no sean anteriores a 2015. Las calificaciones de Movielens se remiten a 1995.
      • Vertex AI Search for Retail usa los últimos 90 días de eventos de usuario cuando entrega la 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 cumpla 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

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

  1. Habilita la API de Vertex AI Search para la 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 en la vista de BigQuery que creaste arriba (PROJECT_ID.movielens.products).

  2. Haga clic en Import.

  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. Haga clic en Import.

  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. Haga 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 Configuraciones de publicación 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 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 Configuraciones de publicación 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 su 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

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

Borra los recursos individuales

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

  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 y su contenido:

    gcloud storage rm gs://PROJECT_ID-movielens-data --recursive
    

¿Qué sigue?