Cree una canalización de recomendaciones por lotes con Amazon Personalize sin código PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Cree una canalización de recomendaciones por lotes con Amazon Personalize sin código

Dado que es más probable que el contenido personalizado impulse la participación del cliente, las empresas buscan continuamente proporcionar contenido personalizado según el perfil y el comportamiento de su cliente. Los sistemas de recomendación en particular buscan predecir la preferencia que un usuario final le daría a un artículo. Algunos casos de uso comunes incluyen recomendaciones de productos en tiendas minoristas en línea, personalización de boletines, generación de recomendaciones de listas de reproducción de música o incluso descubrimiento de contenido similar en servicios de medios en línea.

Sin embargo, puede ser un desafío crear un sistema de recomendaciones efectivo debido a las complejidades en el entrenamiento de modelos, la selección de algoritmos y la gestión de plataformas. Amazon Personalize permite a los desarrolladores mejorar la participación del cliente a través de recomendaciones personalizadas de productos y contenido sin necesidad de experiencia en aprendizaje automático (ML). Los desarrolladores pueden comenzar a involucrar a los clientes de inmediato mediante el uso de datos de comportamiento del usuario capturados. Detrás de escena, Amazon Personalize examina estos datos, identifica lo que es significativo, selecciona los algoritmos correctos, entrena y optimiza un modelo de personalización que se adapta a sus datos y proporciona recomendaciones a través de un punto final de API.

Si bien brindar recomendaciones en tiempo real puede ayudar a aumentar el compromiso y la satisfacción, a veces es posible que esto no sea realmente necesario, y realizarlo por lotes de forma programada puede ser simplemente una opción más rentable y manejable.

Esta publicación le muestra cómo usar los servicios de AWS no solo para crear recomendaciones, sino también para poner en funcionamiento una canalización de recomendaciones por lotes. Recorremos la solución de extremo a extremo sin una sola línea de código. Tratamos dos temas en detalle:

Resumen de la solución

En esta solución, usamos el PelículaLente conjunto de datos Este conjunto de datos incluye 86,000 2,113 calificaciones de películas de XNUMX usuarios. Intentamos utilizar estos datos para generar recomendaciones para cada uno de estos usuarios.

La preparación de los datos es muy importante para garantizar que obtengamos los datos del comportamiento del cliente en un formato que esté listo para Amazon Personalize. La arquitectura descrita en esta publicación utiliza AWS Glue, un servicio de integración de datos sin servidor, para realizar la transformación de datos sin procesar en un formato que está listo para que lo consuma Amazon Personalize. La solución utiliza Amazon Personalize para crear recomendaciones por lotes para todos los usuarios mediante una inferencia por lotes. Luego usamos un flujo de trabajo de Step Functions para que el flujo de trabajo automatizado se pueda ejecutar llamando a las API de Amazon Personalize de manera repetible.

El siguiente diagrama demuestra esta solución.Diagrama de arquitectura

Construiremos esta solución con los siguientes pasos:

  1. Cree un trabajo de transformación de datos para transformar nuestros datos sin procesar con AWS Glue.
  2. Cree una solución de Amazon Personalize con el conjunto de datos transformado.
  3. Cree un flujo de trabajo de Step Functions para orquestar la generación de inferencias por lotes.

Requisitos previos

Necesita lo siguiente para este tutorial:

Cree un trabajo de transformación de datos para transformar datos sin procesar con AWS Glue

Con Amazon Personalize, los datos de entrada deben tener un esquema y un formato de archivo específicos. Los datos de las interacciones entre usuarios y elementos deben estar en formato CSV con columnas específicas, mientras que la lista de usuarios para los que desea generar recomendaciones debe estar en formato JSON. En esta sección, usamos AWS Glue Studio para transformar los datos de entrada sin procesar en las estructuras y el formato necesarios para Amazon Personalize.

AWS Glue Studio proporciona una interfaz gráfica diseñada para crear y ejecutar fácilmente trabajos de extracción, transformación y carga (ETL). Puede crear visualmente cargas de trabajo de transformación de datos a través de simples operaciones de arrastrar y soltar.

Primero preparamos nuestros datos fuente en Servicio de almacenamiento simple de Amazon (Amazon S3), luego transformamos los datos sin código.

  1. En la consola de Amazon S3, cree un depósito de S3 con tres carpetas: sin formato, transformado y seleccionado.
  2. Descargue nuestra Conjunto de datos MovieLens y cargue el archivo sin comprimir llamado user_ratingmovies-timestamp.dat a su depósito en la carpeta sin procesar.
  3. En la consola de AWS Glue Studio, elija Empleo en el panel de navegación.
  4. Seleccione Objeto visual con un origen y un destino, A continuación, elija Crear.
  5. Elija el primer nodo llamado Fuente de datos: depósito S3. Aquí es donde especificamos nuestros datos de entrada.
  6. En Propiedades de la fuente de datos seleccione Ubicación S3 y busque su archivo cargado.
  7. Formato de datos, escoger CSV, Y para Delimitador, escoger Tab audio.
    Estudio de pegamento de AWS - S3
  8. Podemos elegir la pestaña Esquema de salida para verificar que el esquema ha inferido las columnas correctamente.
  9. Si el esquema no coincide con sus expectativas, elija Editar para editar el esquema.
    AWS Glue Studio - Campos

A continuación, transformamos estos datos para seguir los requisitos del esquema de Amazon Personalize.

  1. Elija el Transformar – Aplicar mapeo nodo y, en el Transformar pestaña, actualice la clave de destino y los tipos de datos.
    Amazon Personalize, como mínimo, espera la siguiente estructura para el conjunto de datos de interacciones:
    • user_id (cuerda)
    • item_id (cuerda)
    • timestamp (largo, en formato de tiempo de época Unix)
      AWS Glue Studio: asignación de campos

En este ejemplo, excluimos las películas mal calificadas del conjunto de datos.

  1. Para hacerlo, elimine el último nodo llamado depósito S3 y agregue un nodo de filtro en el Transformar .
  2. Elige Añada condición y filtre los datos donde la calificación sea < 3.5.
    AWS Glue Studio - Salida

Ahora volvemos a escribir la salida en Amazon S3.

  1. Ampliar la opción Target menú y elegir Amazon S3.
  2. Ubicación de destino S3, elige la carpeta llamada transformed.
  3. Elige CSV como el formato y el sufijo Ubicación del objetivo interactions/.

A continuación, generamos una lista de usuarios para los que queremos obtener recomendaciones.

  1. Elija el AplicarMapeo nodo de nuevo y, a continuación, expanda el Transformar menú y elegir AplicarMapeo.
  2. Suelta todos los campos excepto user_id y cambie el nombre de ese campo a userId. Amazon Personalize espera que se nombre ese campo ID de usuario.
  3. Ampliar la opción Target menú de nuevo y elige Amazon S3.
  4. Esta vez elige JSON como formato, y luego elija la carpeta S3 transformada y añádala con el sufijo batch_users_input/.

Esto produce un JSON lista de usuarios como entrada para Amazon Personalize. Ahora deberíamos tener un diagrama similar al siguiente.

AWS Glue Studio: flujo de trabajo completo

Ahora estamos listos para ejecutar nuestro trabajo de transformación.

  1. En la consola de IAM, cree un rol llamado "pegamento-servicio-rol" y adjunte las siguientes políticas administradas:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

Para obtener más información sobre cómo crear roles de servicio de IAM, consulte el Creación de un rol para delegar permisos a un servicio de AWS.

  1. Vuelva a su trabajo de AWS Glue Studio y elija el Detalles del trabajo .
  2. Establecer el nombre del trabajo como batch-personalize-input-transform-job.
  3. Elija el rol de IAM recién creado.
  4. Mantenga los valores predeterminados para todo lo demás.
    AWS Glue Studio - Detalles del trabajo
  5. Elige Guardar.
  6. Cuando estés listo, elige Ejecutar y monitorear el trabajo en el Ron .
  7. Cuando el trabajo esté completo, navegue a la consola de Amazon S3 para validar que su archivo de salida se haya creado correctamente.

Ahora hemos dado forma a nuestros datos en el formato y la estructura que requiere Amazon Personalize. El conjunto de datos transformado debe tener los siguientes campos y formato:

  • Conjunto de datos de interacciones – Formato CSV con campos USER_ID, ITEM_ID, TIMESTAMP
  • Conjunto de datos de entrada del usuario – formato JSON con elemento userId

Cree una solución de Amazon Personalize con el conjunto de datos transformado

Con nuestro conjunto de datos de interacciones y los datos de entrada del usuario en el formato correcto, ahora podemos crear nuestra solución Amazon Personalize. En esta sección, creamos nuestro grupo de conjuntos de datos, importamos nuestros datos y luego creamos un trabajo de inferencia por lotes. Un grupo de conjuntos de datos organiza los recursos en contenedores para los componentes de Amazon Personalize.

  1. En la consola de Amazon Personalize, elija Crear grupo de conjunto de datos.
  2. Dominio, seleccione Personalizado.
  3. Elige Crear grupo de conjunto de datos y continuar.
    Amazon Personalize: crear un grupo de conjunto de datos

A continuación, cree el conjunto de datos de interacciones.

  1. Introduzca un nombre de conjunto de datos y seleccione Crear nuevo esquema.
  2. Elige Crear conjunto de datos y continuar.
    Amazon Personalize: cree un conjunto de datos de interacciones

Ahora importamos los datos de interacciones que habíamos creado anteriormente.

  1. Navegue hasta el depósito de S3 en el que creamos nuestro conjunto de datos CSV de interacciones.
  2. En Permisos pestaña, agregue la siguiente política de acceso al depósito para que Amazon Personalize tenga acceso. Actualice la política para incluir el nombre de su depósito.
    {
       "Version":"2012-10-17",
       "Id":"PersonalizeS3BucketAccessPolicy",
       "Statement":[
          {
             "Sid":"PersonalizeS3BucketAccessPolicy",
             "Effect":"Allow",
             "Principal":{
                "Service":"personalize.amazonaws.com"
             },
             "Action":[
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
             ],
             "Resource":[
                "arn:aws:s3:::<your-bucket-name>",
                "arn:aws:s3:::<your-bucket-name> /*"
             ]
          }
       ]
    }

Vuelve a Amazon Personalize y elige Cree su trabajo de importación de conjunto de datos. Nuestro conjunto de datos de interacciones ahora debería importarse a Amazon Personalize. Espere a que el trabajo de importación se complete con un estado de Activo antes de continuar con el próximo paso. Esto debería tomar aproximadamente 8 minutos.

  1. En la consola de Amazon Personalize, elija General en el panel de navegación y seleccione Crear solución.
    Amazon Personalizar - Panel de control
  2. Introduzca un nombre de solución.
  3. Tipo de solución, escoger Recomendación de artículo.
  4. Receta, elegir la aws-user-personalization .
  5. Elige Crear y entrenar la solución.
    Amazon Personalize: crear una solución

La solución ahora se entrena con el conjunto de datos de interacciones que se importó con la receta de personalización del usuario. Supervise el estado de este proceso en Versiones de soluciones. Espere a que se complete antes de continuar. Esto debería tomar aproximadamente 20 minutos.
Amazon Personalizar - Estado

Ahora creamos nuestro trabajo de inferencia por lotes, que genera recomendaciones para cada uno de los usuarios presentes en la entrada JSON.

  1. En el panel de navegación, debajo Recursos personalizados, escoger Trabajos de inferencia por lotes.
  2. Introduzca un nombre de trabajo y, para Solución, elija la solución creada anteriormente.
  3. Elige Crear trabajo de inferencia por lotes.
    Amazon Personalize: cree un trabajo de inferencia por lotes
  4. Configuración de datos de entrada, ingrese la ruta S3 de donde el batch_users_input se encuentra el archivo.

Este es el archivo JSON que contiene userId.

  1. Configuración de datos de salida camino, elija la ruta seleccionada en S3.
  2. Elige Crear trabajo de inferencia por lotes.

Este proceso dura aproximadamente 30 minutos. Cuando finaliza el trabajo, las recomendaciones para cada uno de los usuarios especificados en el archivo de entrada del usuario se guardan en la ubicación de salida de S3.

Hemos generado con éxito un conjunto de recomendaciones para todos nuestros usuarios. Sin embargo, hasta ahora solo hemos implementado la solución usando la consola. Para asegurarnos de que esta inferencia por lotes se ejecute regularmente con el último conjunto de datos, debemos crear un flujo de trabajo de orquestación. En la siguiente sección, le mostramos cómo crear un flujo de trabajo de orquestación utilizando Step Functions.

Cree un flujo de trabajo de Step Functions para orquestar el flujo de trabajo de inferencia por lotes

Para orquestar su canalización, complete los siguientes pasos:

  1. En la consola Step Functions, elija Crear máquina de estado.
  2. Seleccione Diseñe su flujo de trabajo visualmente, A continuación, elija Siguiente.
    AWS Step Functions - Crear flujo de trabajo
  3. Arrastre el CreateDatasetImportJob nodo de la izquierda (puede buscar este nodo en el cuadro de búsqueda) en el lienzo.
  4. Elija el nodo y debería ver los parámetros de la API de configuración a la derecha. Registre el ARN.
  5. Introduzca sus propios valores en el Parámetros API caja de texto.

Esto llama el CrearTrabajo de importación de conjunto de datos API con los valores de parámetro que especifique.

Flujo de trabajo de funciones paso a paso de AWS

  1. Arrastre el CreateSolutionVersion nodo en el lienzo.
  2. Actualice los parámetros de la API con el ARN de la solución que anotó.

Esto crea una nueva versión de la solución con los datos recién importados llamando al CreateSolutionVersionCreateSolutionVersion API.

  1. Arrastre el CreateBatchInferenceJob nodo en el lienzo y, de manera similar, actualice los parámetros de la API con los valores relevantes.

Asegúrese de utilizar el $.SolutionVersionArn sintaxis para recuperar el parámetro ARN de la versión de la solución del paso anterior. Estos parámetros API se pasan al CreateBatchInferenceJobCreateBatchInferenceJob API.

Flujo de trabajo de funciones paso a paso de AWS

Necesitamos crear una lógica de espera en el flujo de trabajo de Step Functions para asegurarnos de que el trabajo de inferencia por lotes de recomendaciones finalice antes de que se complete el flujo de trabajo.

  1. Busque y arrastre un nodo de espera.
  2. En la configuración para Esperar, ingrese 300 segundos.

Este es un valor arbitrario; debe modificar este tiempo de espera de acuerdo con su caso de uso específico.

  1. Elija el CreateBatchInferenceJob nodo de nuevo y navegue hasta el Manejo de errores .
  2. lucha errores, introduzca Personalize.ResourceInUseException.
  3. Estado de reserva, escoger Esperar.

Este paso nos permite verificar periódicamente el estado del trabajo y solo sale del ciclo cuando el trabajo está completo.

  1. RutadeResultados, introduzca $.errorMessage.

Esto significa que cuando se recibe la excepción de "recurso en uso", el trabajo espera x segundos antes de volver a intentarlo con las mismas entradas.

Flujo de trabajo de funciones paso a paso de AWS

  1. Elige Guardary luego elige Iniciar la ejecución.

Hemos orquestado con éxito nuestra canalización de recomendaciones por lotes para Amazon Personalize. Como paso opcional, puede utilizar Puente de eventos de Amazon para programar un activador de este flujo de trabajo de forma regular. Para obtener más detalles, consulte EventBridge (CloudWatch Events) para los cambios de estado de ejecución de Step Functions.

Limpiar

Para evitar incurrir en cargos futuros, elimine los recursos que creó para este tutorial.

Conclusión

En esta publicación, demostramos cómo crear una canalización de recomendaciones por lotes mediante el uso de una combinación de AWS Glue, Amazon Personalize y Step Functions, sin necesidad de una sola línea de código o experiencia en aprendizaje automático. Usamos AWS Glue para preparar nuestros datos en el formato que requiere Amazon Personalize. Luego, usamos Amazon Personalize para importar los datos, crear una solución con una receta de personalización del usuario y crear un trabajo de inferencia por lotes que genera un valor predeterminado de 25 recomendaciones para cada usuario, en función de interacciones anteriores. Luego orquestamos estos pasos usando Step Functions para que podamos ejecutar estos trabajos automáticamente.

Para los pasos a considerar a continuación, la segmentación de usuarios es una de las recetas más nuevas en Amazon Personalize, que quizás desee explorar para crear segmentos de usuarios para cada fila de los datos de entrada. Para obtener más detalles, consulte Obtener recomendaciones por lotes y segmentos de usuarios.


Acerca del autor.

maxine wee

maxine wee es un arquitecto de soluciones de laboratorio de datos de AWS. Maxine trabaja con los clientes en sus casos de uso, diseña soluciones para resolver sus problemas comerciales y los guía a través de la construcción de prototipos escalables. Antes de su viaje con AWS, Maxine ayudó a los clientes a implementar proyectos de BI, almacenamiento de datos y lagos de datos en Australia.

Sello de tiempo:

Mas de Aprendizaje automático de AWS