Prepara tus datos para Amazon Personalize con Amazon SageMaker Data Wrangler

Prepara tu información de manera sencilla para Amazon Personalize con Amazon SageMaker Data Wrangler

Un motor de recomendación es tan bueno como los datos utilizados para prepararlo. Transformar los datos en bruto en un formato adecuado para un modelo es clave para obtener mejores recomendaciones personalizadas para los usuarios finales.

En esta publicación, explicaremos cómo preparar e importar el conjunto de datos de MovieLens, un conjunto de datos preparado por la investigación GroupLens en la Universidad de Minnesota, que consiste en una variedad de clasificaciones de películas realizadas por los usuarios, en Amazon Personalize utilizando Amazon SageMaker Data Wrangler. [1]

Descripción general de la solución

Amazon Personalize es un servicio administrado cuya propuesta de valor principal es su capacidad para aprender las preferencias del usuario a partir de su comportamiento pasado y ajustar rápidamente esas preferencias aprendidas para tener en cuenta los cambios en el comportamiento del usuario en tiempo casi real. Para poder desarrollar esta comprensión de los usuarios, Amazon Personalize necesita entrenar con el comportamiento histórico del usuario para detectar patrones que sean generalizables hacia el futuro. Específicamente, el tipo principal de datos del que aprende Amazon Personalize es lo que llamamos un conjunto de datos de interacciones, que es un conjunto de datos tabular que consta como mínimo de tres columnas críticas: userID, itemID y timestamp, que representan una interacción positiva entre un usuario y un elemento en un momento específico. Los usuarios de Amazon Personalize deben cargar datos que contengan las interacciones de sus propios clientes para que el modelo pueda aprender estas tendencias de comportamiento. Aunque los algoritmos internos de Amazon Personalize se han elegido en función de la experiencia de Amazon en el espacio del aprendizaje automático, un modelo personalizado no viene precargado con ningún tipo de datos y entrena modelos caso por caso de cada cliente.

El conjunto de datos de MovieLens explorado en esta guía no está en este formato, por lo que, para prepararlo para Amazon Personalize, utilizamos SageMaker Data Wrangler, una herramienta de agregación y preparación de datos específica para el aprendizaje automático. Tiene más de 300 transformaciones de datos preconfiguradas, así como la capacidad de incluir código personalizado para crear transformaciones personalizadas en PySpark, SQL y una variedad de bibliotecas de procesamiento de datos, como pandas.

Requisitos previos

En primer lugar, necesitamos tener configurado un dominio de Amazon SageMaker Studio. Para obtener detalles sobre cómo configurarlo, consulte Onboard to Amazon SageMaker Domain using Quick setup.

También necesitamos configurar los permisos correctos utilizando AWS Identity and Access Management (IAM) para los roles de servicio de Amazon Personalize y Amazon SageMaker para que puedan acceder a las funcionalidades necesarias.

Puede crear un nuevo grupo de conjuntos de datos de Amazon Personalize para utilizar en esta guía o utilizar uno existente.

Finalmente, necesitamos descargar y descomprimir el conjunto de datos de MovieLens y colocarlo en un bucket de Amazon Simple Storage Service (Amazon S3).

Iniciar SageMaker Data Wrangler desde Amazon Personalize

Para comenzar con la integración de SageMaker Data Wrangler con Amazon Personalize, complete los siguientes pasos:

  1. En la consola de Amazon Personalize, vaya a la página Descripción general de su grupo de conjuntos de datos.
  2. Elija Importar datos de interacción, Importar datos de usuario o Importar datos de elemento, según el tipo de conjunto de datos (para esta publicación, elegimos Importar datos de interacción).

  1. Para el método de importación, selecciona Importar datos usando Data Wrangler.
  2. Elige Siguiente.

  1. Especifica el dominio de SageMaker, el perfil de usuario y el rol de servicio IAM que creaste anteriormente como parte de los requisitos previos.
  2. Elige Siguiente.

  1. Continúa con los pasos para lanzar una instancia de SageMaker Data Wrangler.

La configuración del entorno por primera vez puede tardar hasta 5 minutos.

Importar los datos sin procesar en SageMaker Data Wrangler

Cuando se utiliza SageMaker Data Wrangler para preparar e importar datos, se utiliza un flujo de datos. Un flujo de datos define una serie de transformaciones y análisis en los datos para prepararlos y crear un modelo de aprendizaje automático. Cada vez que agregamos un paso a nuestro flujo, SageMaker Data Wrangler toma una acción en nuestros datos, como unirlos con otro conjunto de datos o eliminar algunas filas y columnas.

Para comenzar, importemos los datos sin procesar.

  1. En la página de flujo de datos, elige Importar datos.

Con SageMaker Data Wrangler, podemos importar datos de más de 50 fuentes de datos admitidas.

  1. Para Fuentes de datos, elige Amazon S3.

  1. Elige el conjunto de datos que cargaste en tu bucket de S3.

SageMaker Data Wrangler muestra automáticamente una vista previa de los datos.

  1. Mantén la configuración predeterminada y selecciona Importar.

Después de importar los datos, SageMaker Data Wrangler valida automáticamente los conjuntos de datos y detecta los tipos de datos de todas las columnas según el muestreo realizado.

  1. Elige Flujo de datos en la parte superior de la página Tipos de datos para ver el flujo de datos principal antes de pasar al siguiente paso.

Una de las principales ventajas de SageMaker Data Wrangler es la capacidad de ejecutar vistas previas de las transformaciones en un pequeño subconjunto de datos antes de comprometerse a aplicar las transformaciones en el conjunto de datos completo. Para ejecutar la misma transformación en varios archivos particionados en Amazon S3, puedes utilizar parámetros.

Transformar los datos

Para transformar los datos en SageMaker Data Wrangler, agrega un paso de transformación a tu flujo de datos. SageMaker Data Wrangler incluye más de 300 transformaciones que puedes utilizar para preparar tus datos, incluida la transformación de columnas para Amazon Personalize. Puedes usar las transformaciones generales de SageMaker Data Wrangler para solucionar problemas como valores atípicos, problemas de tipo y valores faltantes, o aplicar pasos de preprocesamiento de datos.

Para usar Amazon Personalize, los datos que proporcionaste en el conjunto de datos de interacciones deben coincidir con tu esquema de conjunto de datos. Para nuestro motor de recomendación de películas, el esquema de conjunto de datos de interacciones propuesto incluye:

  • user_id (cadena)
  • item_id (cadena)
  • event_type (cadena)
  • timestamp (en formato de tiempo Unix epoch)

Para obtener más información sobre los conjuntos de datos y esquemas de Amazon Personalize, consulta Conjuntos de datos y esquemas.

El archivo ratings.csv como se muestra en el último paso de la sección anterior incluye películas calificadas del 1 al 5. Queremos construir un motor de recomendación de películas basado en eso. Para hacerlo, debemos completar los siguientes pasos:

  1. Modificar los tipos de datos de las columnas.
  2. Crear dos tipos de eventos: Click y Watch.
  3. Asignar todas las películas calificadas con 2 o más como Click y las películas calificadas con 4 o más como tanto Click como Watch.
  4. Eliminar la columna ratings.
  5. Mapear las columnas al esquema de conjunto de datos de interacciones de Amazon Personalize.
  6. Validar que nuestro timestamp esté en formato de tiempo Unix epoch.

Ten en cuenta que el Paso 3 no es necesario para crear un modelo de personalización. Si queremos usar uno de los recomendadores de dominio de video bajo demanda de Amazon Personalize simplificados, como Top Picks for You, se necesitarían los tipos de eventos Click y Watch. Sin embargo, si no los tenemos, podemos no incluir un campo de tipo de evento (o agregar nuestros propios tipos de eventos, como las calificaciones brutas de los usuarios) y usar una receta personalizada como User Personalization. Independientemente del tipo de motor de recomendación que usemos, debemos asegurarnos de que nuestro conjunto de datos solo contenga representaciones de intención positiva del usuario. Entonces, cualquiera que sea el enfoque que elijas, debes eliminar todas las calificaciones de una estrella (y posiblemente también las calificaciones de dos estrellas).

Ahora, usemos SageMaker Data Wrangler para realizar los pasos anteriores.

  1. En la página Flujo de datos, elige la primera transformación, llamada Tipos de datos.

  1. Actualiza el tipo de cada columna.
  2. Elige Vista previa para reflejar los cambios, luego elige Actualizar.

  1. Para agregar un paso en el flujo de datos, elige el signo de suma junto al paso en el que deseas realizar la transformación, luego elige Agregar transformación.

  1. Para filtrar el evento Click de las calificaciones de películas, agregamos un paso de datos de filtrado para filtrar las películas calificadas con 2 o más.

  1. Agregue otro paso de transformación personalizada para agregar una nueva columna, eventType, con Click como valor asignado.
  2. Elija Previsualización para revisar su transformación y asegurarse de que los resultados sean los deseados, luego elija Agregar.
  3. En este caso, escribimos un código PySpark para agregar una columna llamada eventType cuyo valor será uniformemente Click para todas nuestras películas de dos a cinco estrellas:
from pyspark.sql.functions import litdf = df.withColumn("eventType", lit("Click"))

  1. Para los eventos de Watch, repita los pasos anteriores para las películas con calificación de 4 o más y asigne el valor Watch agregando los pasos al paso de Tipos de datos. Nuestro código PySpark para estos pasos es el siguiente:
from pyspark.sql.functions import litdf = df.withColumn("eventType", lit("Watch"))

Hasta este punto, el flujo de datos debería verse como en la siguiente captura de pantalla.

Concatenar conjuntos de datos

Dado que tenemos dos conjuntos de datos para eventos de watch y click, veamos cómo concatenarlos en un solo conjunto de interacciones.

  1. En la página de Flujo de datos, elija el signo más junto a Crear evento de Watch y elija Concatenar.

  1. Elija el otro paso final (Crear evento de Click), y esto debería mapear automáticamente (converger) ambos conjuntos en una vista previa de concatenación.

  1. Elija Configurar para ver una vista previa de los conjuntos de datos concatenados.
  2. Agregue un nombre al paso.
  3. Elija Agregar para agregar el paso.

Ahora, el flujo de datos se ve como en la siguiente captura de pantalla.

  1. Ahora, agreguemos un paso de Gestionar columnas para eliminar la columna de calificación original.

Amazon Personalize tiene nombres de columna predeterminados para usuarios, artículos y marcas de tiempo. Estos nombres de columna predeterminados son user_id, item_id y timestamp.

  1. Agreguemos un paso de Transformación para la etapa de Amazon Personalize para reemplazar los encabezados de columna existentes con los encabezados predeterminados.
  2. En nuestro caso, también usamos el campo event_type, así que mapeémoslo también.

Con este paso, la actividad de transformación de datos está completa y el conjunto de datos de interacciones está listo para el siguiente paso.

A continuación, validemos nuestras marcas de tiempo.

  1. Podemos hacer esto agregando un paso de transformación personalizado. Para este artículo, elegimos Python (Función Definida por el Usuario).
  2. Elige la columna de marca de tiempo como entrada y, como salida, crea una nueva columna llamada readable_timestamp.
  3. Elige Python como modo de transformación e inserta el siguiente código para la función Python:
def custom_func(valor: int) → str:
    return datetime.utcfromtimestamp(valor).strftime('%Y-%m-%d %H:%M:%S')
  1. Elige Vista previa para revisar los cambios.

En este caso, vemos fechas en los años 2000, porque MovieLens comenzó a recopilar datos en 1996, esto coincide con lo esperado. Si no elegimos Agregar, esta transformación no se agregará a nuestro flujo de datos.

  1. Como esto fue simplemente una verificación de integridad, puedes volver al flujo de datos eligiendo Flujo de datos en la esquina superior izquierda.

Finalmente, agregamos un paso de análisis para crear un informe resumido sobre el conjunto de datos. Este paso realiza un análisis para evaluar la idoneidad del conjunto de datos para Amazon Personalize.

  1. Elige el signo más junto al último paso del flujo de datos y elige Agregar análisis.
  2. Para Tipo de análisis, elige Informe de Calidad y Perspectivas de Datos para Amazon Personalize.
  3. Para Tipo de conjunto de datos, elige Interacciones.
  4. Elige Crear.

El conjunto de datos de MovieLens está bastante limpio, por lo que el análisis no muestra problemas. Si se identificaron algunos problemas, puedes iterar en el conjunto de datos y volver a ejecutar el análisis hasta que puedas solucionarlos.

Ten en cuenta que el análisis se ejecuta automáticamente en una muestra de 50,000 filas.

Importar el conjunto de datos a Amazon Personalize

En este punto, nuestros datos sin procesar han sido transformados y estamos listos para importar el conjunto de datos de interacciones transformado a Amazon Personalize. SageMaker Data Wrangler te brinda la capacidad de exportar tus datos a una ubicación dentro de un bucket de S3. Puedes especificar la ubicación utilizando uno de los siguientes métodos:

  • Nodo de destino – Donde SageMaker Data Wrangler almacena los datos después de procesarlos.
  • Exportar a – Exporta los datos resultantes de una transformación a Amazon S3.
  • Exportar datos – Para conjuntos de datos pequeños, puedes exportar rápidamente los datos que has transformado.

Con el método del Nodo de destino, para exportar tus datos, debes crear nodos de destino y un trabajo de SageMaker Data Wrangler. Al crear un trabajo de SageMaker Data Wrangler, se inicia un trabajo de procesamiento de SageMaker para exportar tu flujo. Puedes elegir los nodos de destino que deseas exportar después de haberlos creado.

  1. Selecciona el signo más junto al nodo que representa las transformaciones que deseas exportar.

  1. Selecciona Exportar a y luego selecciona Amazon S3 (a través de Jupyter Notebook).

Ten en cuenta que también podríamos haber elegido exportar los datos a Amazon Personalize a través de un cuaderno Jupyter disponible en SageMaker Data Wrangler.

  1. Para Nombre del conjunto de datos, ingresa un nombre que se utilizará como nombre de carpeta en el bucket de S3 proporcionado como destino.
  2. Puedes especificar el tipo de archivo, el delimitador de campos y el método de compresión.
  3. De manera opcional, puedes especificar el número de particiones y la columna por la cual particionar.
  4. Selecciona Agregar destino.

El flujo de datos debe verse como en la siguiente captura de pantalla.

  1. Crea un trabajo para procesar el flujo de datos y almacenar los datos en el destino (bucket de S3) que configuraste en el paso anterior.
  2. Ingresa un nombre para el trabajo y luego selecciona Configurar trabajo.

SageMaker Data Wrangler ofrece la capacidad de configurar el tipo de instancia, el número de instancias y la configuración del trabajo, así como la capacidad de crear un horario para procesar el trabajo. Para obtener orientación sobre cómo elegir el número de instancias, consulta Crear y usar un flujo de Data Wrangler.

Para monitorear el estado del trabajo, ve a la página Tablero en la consola de SageMaker. La sección Procesamiento muestra la cantidad de trabajos completados y creados. Puedes profundizar para obtener más detalles sobre el trabajo completado.

Cuando el trabajo esté completo, se creará un nuevo archivo con los datos transformados en el destino especificado.

  1. Vuelva al panel de control de Amazon Personalize y vaya al grupo de conjuntos de datos para importar otro conjunto de datos.
  2. Elija Importar datos de interacción.

  1. Seleccione Importar datos directamente en los conjuntos de datos de Amazon Personalize para importar el conjunto de datos transformado directamente desde Amazon S3, luego elija Siguiente.

  1. Defina el esquema. Para esta publicación, nuestro conjunto de datos consiste en los campos user_id (cadena), item_id (cadena), event_type (cadena) y timestamp (long).

En este punto, puede crear un recomendador de dominio de videos a pedido o una solución personalizada. Para hacerlo, siga los pasos en Preparación e importación de datos

Conclusión

En esta publicación, describimos cómo utilizar SageMaker Data Wrangler para preparar un conjunto de datos de muestra para Amazon Personalize. SageMaker Data Wrangler ofrece más de 300 transformaciones. Estas transformaciones y la capacidad de agregar transformaciones personalizadas de usuario pueden ayudar a agilizar el proceso de creación de un conjunto de datos de calidad para ofrecer contenido hiperpersonalizado a los usuarios finales.

Aunque solo exploramos cómo preparar un conjunto de datos de interacciones en esta publicación, también puede usar SageMaker Data Wrangler para preparar conjuntos de datos de usuarios e ítems. Para obtener más información sobre los tipos de datos que se pueden usar con Amazon Personalize, consulte Conjuntos de datos y esquemas.

Si eres nuevo en Amazon Personalize o SageMaker Data Wrangler, consulta Comienza con Amazon Personalize o Comienza con SageMaker Data Wrangler, respectivamente. Si tienes alguna pregunta relacionada con esta publicación, por favor añádela en la sección de comentarios.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Cómo este investigador ganador del Premio Turing se convirtió en un legendario asesor académico

El científico teórico de la computación Manuel Blum ha guiado a generaciones de estudiantes de posgrado hacia carrera...

Inteligencia Artificial

AI 'Avance' Red neuronal tiene capacidad similar a la humana para generalizar el lenguaje

Una inteligencia artificial basada en redes neuronales supera a ChatGPT en la capacidad de incorporar rápidamente nue...

Inteligencia Artificial

Del Texto más allá de las Palabras

Hola lectores, hoy en día vivimos en la era de los Modelos de Lenguaje Grandes (LLMs), los cuales potencian software ...

Inteligencia Artificial

Aprendizaje profundo para objetos profundos ZoeDepth es un modelo de IA para la estimación de profundidad en múltiples dominios

¿Alguna vez te has encontrado con ilusiones en las que un niño en la imagen parece más alto y más grande que un adult...

Inteligencia Artificial

5 Increíbles y Gratuitos LLMs Playgrounds que Necesitas Probar en 2023

Explora las 5 plataformas amigables para el usuario que brindan acceso gratuito a modelos de lenguaje grandes, lo que...