Crear recomendaciones de películas personalizadas

En este tutorial, usaremos el conjunto de datos Movielens para mostrar cómo subir tu catálogo de productos y tus eventos de usuario a Vertex AI Search for commerce, así como para entrenar un modelo de recomendación de productos personalizado. El conjunto de datos Movielens contiene un catálogo de películas (productos) y las valoraciones de películas de los usuarios (eventos de usuario).

Trataremos cada valoración positiva de una película (valoración >= 4) como un evento de vista de página de producto. Entrenaremos un modelo de recomendación del tipo Otros que te pueden gustar que hará recomendaciones de películas basadas en cualquier usuario o película inicial de nuestro conjunto de datos.

Tiempo estimado:

  • Pasos iniciales para empezar a entrenar el modelo: 1,5 horas aproximadamente.
  • Esperar a que se entrene el modelo: unos 2 días.
  • Evaluar las predicciones del modelo y limpiar: unos 30 minutos.

Preparar el conjunto de datos

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

Cloud Shell

Se abrirá una sesión de Cloud Shell dentro de un nuevo marco en la parte inferior de la consola de Google Cloud y se mostrará en ella un mensaje de la línea de comandos.

Importar 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 segmento de Cloud Storage y sube los datos a é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 nueva tabla de películas de BigQuery:

    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 nueva tabla de valoraciones de BigQuery:

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

Crear vistas de BigQuery

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

    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 nueva vista tiene el esquema que espera Vertex AI Search para el sector del comercio. A continuación, en la barra lateral de la izquierda, elige BIG DATA -> BigQuery. A continuación, en la barra del explorador de la izquierda, despliega el nombre de tu proyecto y selecciona movielens -> products para abrir la página de consulta de esta vista.

    Vista Productos

  2. Ahora, convierte las valoraciones de películas en eventos de usuario. Haremos lo siguiente:

    • Ignorar las valoraciones negativas de películas (<4)
    • Tratar cada valoración positiva como un evento de vista de página de producto (detail-page-view)
    • Reajusta la escala de la cronología de Movielens a los últimos 90 días. Lo hacemos por dos motivos:
      • Vertex AI Search para el sector del comercio requiere que los eventos de usuario no sean anteriores al 2015. Las valoraciones de MovieLens se remontan a 1995.
      • Vertex AI Search para el comercio usa los eventos de usuario de los últimos 90 días al publicar solicitudes de predicción para un usuario. Todos los usuarios parecerán tener eventos recientes cuando hagamos predicciones para cualquier usuario más adelante.

    Crea una vista de BigQuery. El siguiente comando usa una consulta de SQL que cumple los requisitos de conversión indicados 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
    

Importar el catálogo de productos y los eventos de usuario

Ahora podemos importar el catálogo de productos y los datos de eventos de usuario a Vertex AI Search for commerce.

  1. Habilita la API Vertex AI Search para el sector del comercio en tu Google Cloud proyecto.

    HABILITAR LA API

  2. Haz clic en Empezar.

  3. Ve a la página Datos de la consola de búsqueda de comercio.

    Ir a la página Datos

  4. Haz clic en Importar.

Importar catálogo de productos

  1. Rellene el formulario para importar productos de la vista de BigQuery que ha creado anteriormente:

    • Seleccione el tipo de importación Catálogo de productos.
    • Selecciona el nombre de la rama predeterminada.
    • Selecciona la fuente de datos: BigQuery.
    • Seleccione el esquema de datos Esquema de producto minorista.
    • Introduce el nombre de la vista de BigQuery de los productos que has creado anteriormente (PROJECT_ID.movielens.products).

  2. Haz clic en Importar.

  3. Espera a que se importen todos los productos (debería tardar entre 5 y 10 minutos).

    Puedes consultar la actividad de importación para ver el estado de la operación de importación. Cuando la importación se haya completado, el estado de la operación cambiará a Completada.

    Actividad de importación de productos

Importar eventos de usuario

  1. Importe la vista de BigQuery user_events:

    • Seleccione el tipo de importación Eventos de usuario.
    • Selecciona la fuente de datos: BigQuery.
    • Seleccione el esquema de datos Esquema de eventos de usuario de Retail.
    • Introduce el nombre de la vista de BigQuery user_events que has creado anteriormente.
  2. Haz clic en Importar.

  3. Espere a que se hayan importado al menos un millón de eventos antes de continuar con el siguiente paso para cumplir los requisitos de datos para entrenar un nuevo modelo.

    Puedes consultar la actividad de importación para ver el estado de la operación. El proceso tarda aproximadamente una hora en completarse.

    Actividad de importación de eventos

Entrenar y evaluar modelos de recomendación

Sigue estas instrucciones para entrenar y evaluar modelos de recomendación.

Crear un modelo de recomendación

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

    Ir a la página Modelos

  2. Haga clic en Crear modelo:

    • Asigna un nombre al modelo.
    • Selecciona Otros que te podrían interesar como tipo de modelo.
    • Elige Porcentaje de clics (CTR) como objetivo de negocio.
  3. Haz clic en Crear.

    Crear modelo

    Tu nuevo modelo empieza a entrenarse.

    Fecha de creación del modelo

Crear una configuración de publicación

  1. Ve a la página Serving Configs (Configuraciones de servicio) de la consola de Search for Commerce.

    Ve a la página Configuraciones de servicio.

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

    • Selecciona Recomendación.
    • Asigna un nombre a la configuración de servicio.
    • Seleccione el modelo que ha creado.
  3. Haz clic en Crear.

Espera a que el modelo esté listo para recibir consultas

El modelo tarda unos dos días en entrenarse y estar listo para recibir consultas.

Para ver el estado, haga clic en la configuración de publicación creada en la página Configuraciones de publicación.

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

Previsualizar recomendaciones

Cuando el modelo esté listo para recibir consultas, sigue estos pasos:

  1. Ve a la página Serving Configs (Configuraciones de servicio) de la consola de Search for Commerce.

    Ve a la página Configuraciones de servicio.
  2. Haga clic en el nombre de la configuración de servicio para ir a su página de detalles.
  3. Haz clic en la pestaña *Evaluar.
  4. Introduce un ID de película de origen, como 4993 para "El Señor de los Anillos: la comunidad del anillo (2001)".

    Introduzca el ID

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