Receta User-Personalization - Amazon Personalize

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Receta User-Personalization

La receta de personalización del usuario (aws-user-personalization) está optimizada para todos los escenarios de recomendaciones personalizadas. Predice los elementos con los que es más probable que interactúe un usuario. Puedes usar la personalización del usuario para generar recomendaciones de películas personalizadas para una aplicación de streaming o recomendaciones personalizadas de productos para una aplicación de venta minorista.

Con la personalización del usuario, Amazon Personalize genera recomendaciones basadas principalmente en los datos de interacción entre los elementos del usuario en un conjunto de datos de interacciones entre artículos. También puede usar cualquier metadato de elemento y usuario de sus conjuntos de datos de artículos y usuarios. Para obtener más información sobre los datos que utiliza, consulteConjuntos de datos obligatorios y opcionales.

Características de la receta

La personalización del usuario utiliza las siguientes funciones de recetas de Amazon Personalize al generar recomendaciones de artículos:

  • Personalización en tiempo real: con la personalización en tiempo real, Amazon Personalize actualiza y adapta las recomendaciones de artículos en función de la evolución del interés del usuario. Para obtener más información, consulte Personalización en tiempo real.

  • Exploración: con la exploración, las recomendaciones incluyen artículos nuevos o artículos con menos datos de interacciones. Esto mejora la visibilidad de los elementos y su fidelización cuando se trata de un catálogo que cambia rápidamente o cuando los elementos nuevos, como elementos de noticias o promociones, son más relevantes para los usuarios cuando acaban de salir. Para obtener más información acerca de la exploración, consulte Exploration (Exploración).

  • Actualizaciones automáticas: con las actualizaciones automáticas, Amazon Personalize actualiza automáticamente el último modelo (versión de la solución) cada dos horas para tener en cuenta nuevos artículos y recomendarlos. Para obtener más información, consulte Actualizaciones automáticas.

Conjuntos de datos obligatorios y opcionales

Para utilizar la personalización de usuario, debe crear Conjunto de datos de interacciones de elementos e importar un mínimo de 1000 interacciones entre productos. Amazon Personalize genera recomendaciones basadas principalmente en los datos de interacción entre los artículos.

Con la personalización del usuario, Amazon Personalize puede utilizar los datos de interacciones entre los artículos, entre los que se incluyen los siguientes:

  • Datos de tipo de evento y valor del evento: Amazon Personalize utiliza datos de tipo de evento, como los tipos de eventos de clic o visualización, para identificar la intención y el interés de los usuarios a través de cualquier patrón de comportamiento. Además, puede utilizar los datos sobre el tipo y el valor del evento para filtrar los registros antes del entrenamiento. Para obtener más información, consulte Datos de valor de evento y tipo de evento.

  • Metadatos contextuales: los metadatos contextuales son datos de interacciones que se recopilan en el entorno del usuario en el momento de un evento, como su ubicación o el tipo de dispositivo. Para obtener más información, consulte Metadatos contextuales.

  • Datos de impresiones: las impresiones son listas de elementos que estaban visibles para un usuario cuando interactuaba con un artículo concreto (cuando hacía clic, lo veía, lo compraba, etc.). Para obtener más información, consulte Datos de impresiones.

Los siguientes conjuntos de datos son opcionales y pueden mejorar las recomendaciones:

  • Conjunto de datos de usuarios: Amazon Personalize puede usar los datos de su conjunto de datos de usuarios para comprender mejor a sus usuarios y sus intereses. También puede usar los datos de un conjunto de datos de usuarios para filtrar las recomendaciones. Para obtener información sobre los datos de usuario que puede importar, consulte Conjunto de datos de usuarios.

  • Conjunto de datos de artículos: Amazon Personalize puede usar los datos de su conjunto de datos de artículos para identificar conexiones y patrones en su comportamiento. Esto ayuda a Amazon Personalize a entender a los usuarios y sus intereses. También puede usar los datos de un conjunto de datos de artículos para filtrar las recomendaciones. Para obtener información sobre los datos de elementos que puede importar, consulte Conjunto de datos de elementos.

Propiedades e hiperparámetros

La receta User-Personalization incluye las siguientes propiedades:

  • Nombre: aws-user-personalization

  • Nombre de recurso de Amazon (ARN) de la receta: arn:aws:personalize:::recipe/aws-user-personalization

  • ARN del algoritmo: arn:aws:personalize:::algorithm/aws-user-personalization

Para obtener más información, consulte Elección de una receta.

En la siguiente tabla se describen los hiperparámetros de la receta User-Personalization. Un hiperparámetro es un parámetro de algoritmo que se puede ajustar para mejorar el rendimiento del modelo. Los hiperparámetros de algoritmos controlan el rendimiento del modelo. Los hiperparámetros de caracterización controlan cómo se filtran los datos que se van a utilizar en el entrenamiento. El proceso de elección del mejor valor para un hiperparámetro se denomina optimización de hiperparámetros (HPO). Para obtener más información, consulte Hiperparámetros y HPO.

La tabla proporciona la siguiente información para cada hiperparámetro:

  • Rango: [límite inferior, límite superior]

  • Tipo de valor: número entero, continuo (flotante), categórico (booleano, lista, cadena)

  • HPO ajustable: ¿puede el parámetro participar en HPO?

Nombre Descripción
Hiperparámetros de algoritmos
hidden_dimension

El número de variables ocultas utilizadas en el modelo. Las variables ocultas recrean el historial de compras de los usuarios y las estadísticas de los elementos para generar puntuaciones de clasificación. Especifique un número mayor de dimensiones ocultas cuando el conjunto de datos de interacciones de elementos incluya patrones más complicados. El uso de más dimensiones ocultas requiere un conjunto de datos mayor y más tiempo de procesamiento. Para decidir el valor óptimo, utilice HPO. Para utilizar HPO, establezca performHPO en true cuando llame a las operaciones CreateSolution yCreateSolutionVersion.

Valor predeterminado: 149

Rango: [32, 256]

Tipo de valor: entero

HPO ajustable: sí

bptt

Determina si se debe utilizar la propagación hacia atrás a través de la técnica de tiempo. La propagación hacia atrás a través del tiempo es una técnica que actualiza ponderaciones en algoritmos basados en redes neuronales recurrentes. Utilice bptt para créditos a largo plazo para conectar recompensas retrasadas a eventos tempranos. Por ejemplo, una recompensa retrasada puede ser una compra realizada después de varios clics. Un evento temprano puede ser un clic inicial. Incluso dentro de los mismos tipos de eventos, tales como un clic, es buena idea tener en cuenta los efectos a largo plazo y maximizar las recompensas totales. Para tener en cuenta los efectos a largo plazo, utilice valores mayores de bptt. El uso de un valor de bptt mayor requiere conjuntos de datos más grandes y más tiempo de procesamiento.

Valor predeterminado: 32

Rango: [2, 32]

Tipo de valor: entero

HPO ajustable: sí

recency_mask

Determina si el modelo debe tener en cuenta las últimas tendencias de popularidad en el conjunto de datos de interacciones de elementos. Las últimas tendencias de popularidad pueden incluir cambios bruscos en los patrones subyacentes de los eventos de interacción. Para entrenar un modelo que tenga más peso sobre los eventos recientes, establezca recency_mask en true. Para entrenar un modelo que pesa igualmente todas las interacciones anteriores, establezca recency_mask en false. Para obtener buenas recomendaciones con el mismo peso, es posible que necesite un conjunto de datos de entrenamiento mayor.

Valor predeterminado: True

Rango: True o False

Tipo de valor: booleano

HPO ajustable: sí

Hiperparámetros de caracterización
min_user_history_length_percentile

El percentil mínimo de longitudes de historial de usuario para incluir en el entrenamiento de modelos. La longitud del historial es la cantidad total de datos sobre un usuario. Utilice min_user_history_length_percentile para excluir un porcentaje de usuarios con longitudes de historial cortas. Los usuarios con un historial corto suelen mostrar patrones basados en la popularidad de los elementos en lugar de sus necesidades o deseos personales. Eliminarlos puede entrenar modelos que se centren más en los patrones subyacentes de los datos. Elija un valor adecuado después de revisar las longitudes del historial de usuarios, utilizando un histograma o una herramienta similar. Recomendamos establecer un valor que retenga a la mayoría de los usuarios, pero que elimine los casos de borde.

Por ejemplo, al establecer min_user_history_length_percentile to 0.05 y max_user_history_length_percentile to 0.95 se incluyen todos los usuarios, excepto los que tienen longitudes de historial en el 5 % inferior o superior.

Valor predeterminado: 0,0

Rango: [0,0, 1,0]

Tipo de valor: flotante

HPO ajustable: no

max_user_history_length_percentile

El percentil máximo de longitudes de historial de usuario para incluir en el entrenamiento de modelos. La longitud del historial es la cantidad total de datos sobre un usuario. Utilice max_user_history_length_percentile para excluir un porcentaje de usuarios con longitudes de historial largas, ya que los datos de estos usuarios tienden a contener ruido. Por ejemplo, un robot podría tener una larga lista de interacciones automatizadas. La eliminación de estos usuarios limita el ruido en el entrenamiento. Elija un valor adecuado después de revisar las longitudes del historial de usuarios mediante un histograma o una herramienta similar. Recomendamos establecer un valor que retenga la mayoría de los usuarios, pero que elimine los casos de borde.

Por ejemplo, al establecer min_user_history_length_percentile to 0.05 y max_user_history_length_percentile to 0.95 se incluyen todos los usuarios, excepto los que tienen longitudes de historial en el 5 % inferior o superior.

Valor predeterminado: 0,99

Rango: [0,0, 1,0]

Tipo de valor: flotante

HPO ajustable: no

Hiperparámetros de configuración de la campaña de exploración de elementos
exploration_weight

Determina la frecuencia con la que las recomendaciones incluyen elementos con menos datos de interacciones de elementos o relevancia. Cuanto más se acerque el valor a 1,0, mayor será la exploración. En cero, no se realiza ninguna exploración y las recomendaciones se basan en los datos actuales (relevancia). Para más información, consulte CampaignConfig.

Valor predeterminado: 0,3

Rango: [0,0, 1,0]

Tipo de valor: flotante

HPO ajustable: no

exploration_item_age_cut_off

Especifique la antigüedad máxima del elemento en días desde la última interacción en todos los elementos del conjunto de datos de interacciones de elementos. Esto define el alcance de la exploración del elemento en función de su antigüedad. Amazon Personalize determina la antigüedad de un elemento en función de su marca temporal de creación o, si faltan estos datos, de los datos de interacciones de elementos. Para obtener más información sobre cómo Amazon Personalize determina la antigüedad de un elemento, consulte Datos de marca temporal de creación.

Para aumentar el número de elementos que Amazon Personalize considera durante la exploración, indique un valor superior. El mínimo es de 1 día y el valor predeterminado es de 30 días. Las recomendaciones pueden incluir elementos con una antigüedad superior al límite de antigüedad que especifique. Esto se debe a que estos elementos son relevantes para el usuario y la exploración no los identificó.

Valor predeterminado: 30,0

Rango: flotantes positivos

Tipo de valor: flotante

HPO ajustable: no

Entrenamiento con la receta User-Personalization (consola)

Para usar la receta User-Personalization para generar recomendaciones en la consola, primero entrene una nueva versión de la solución con la receta. A continuación, implemente una campaña con la versión de la solución y utilícela para obtener recomendaciones.

Entrenamiento de una versión de la solución con la receta User-Personalization (consola)
  1. Abra la consola de Amazon Personalize en https://console.aws.amazon.com/personalize/home e inicie sesión en su cuenta.

  2. Cree un grupo de conjuntos de datos personalizado con un esquema nuevo y cargue su conjunto de datos con datos de impresiones. Si lo desea, incluya CREATION_TIMESTAMP y datos Metadatos de texto no estructurado en su conjunto de datos de elementos para que Amazon Personalize pueda calcular con mayor precisión la antigüedad de un elemento e identificar los elementos fríos.

    Para obtener más información sobre la importación de datos, consulte Paso 2: Preparación e importación de datos.

  3. En la página Grupos de conjuntos de datos, elija el nuevo grupo de conjuntos de datos que contenga el conjunto de datos o los conjuntos de datos con datos de impresiones.

  4. En el panel de navegación, seleccione Soluciones y recetas y elija Crear solución.

  5. En la página Crear solución, en Nombre de la solución, introduzca el nombre de la nueva solución.

  6. En Tipo de solución, elija Recomendación de elementos para obtener recomendaciones de elementos para sus usuarios.

  7. En Receta, selecciona aws-user-personalization. Aparece la sección Configuración de la solución con varias opciones de configuración.

  8. En Configuración de la solución, si su conjunto de datos de interacciones de elementos tiene la columna EVENT_TYPE o tanto EVENT_TYPE como EVENT_VALUE, si lo desea, utilice los campos Tipo de evento y Umbral del valor del evento para elegir los datos de interacciones de elementos que Amazon Personalize utiliza al entrenar el modelo.

    Para más información, consulte Elección de los datos de interacciones de elementos utilizados para el entrenamiento.

  9. Si lo desea, configure los hiperparámetros para su solución. Para obtener una lista de las propiedades e hiperparámetros de la receta User-Personalization, consulte Propiedades e hiperparámetros.

  10. Elija Crear y entrenar la solución para empezar el entrenamiento. Aparece la página Panel.

    Puede acceder a la página de detalles de la solución para realizar un seguimiento del progreso del entrenamiento en la sección Versiones de la solución. Una vez finalizado el entrenamiento, el estado es Activo.

Creación de una campaña y obtención de recomendaciones (consola)

Cuando el estado de la versión de la solución sea Activo, estará listo para crear su campaña y recibir recomendaciones del modo siguiente:

  1. En la página de detalles de la solución o en la página Campañas, seleccione Crear nueva campaña.

  2. En la página Crear nueva campaña, en los Detalles de la campaña, proporcione la siguiente información:

    • Nombre de la campaña: escriba el nombre de la campaña. El texto que escriba aquí aparecerá en el panel Campaña y en la página de detalles.

    • Solución: elija la solución que acaba de crear.

    • ID de versión de la solución: elija el ID de la versión de la solución que acaba de crear.

    • Transacciones aprovisionadas mínimas por segundo: defina las transacciones aprovisionadas mínimas por segundo que admite Amazon Personalize. Para obtener más información, consulte la operación CreateCampaign.

  3. Para Configuración de recursos, proporcione la siguiente información:

    • Ponderación de la exploración: configure cuánto explorar, donde las recomendaciones incluyen elementos con menos datos de interacciones o relevancia con más frecuencia cuanta más exploración especifique. Cuanto más se acerque el valor a 1, mayor será la exploración. En cero, no se realiza ninguna exploración y las recomendaciones se basan en los datos actuales (relevancia).

    • Límite de antigüedad del elemento de exploración: especifique la antigüedad máxima del elementos, en días desde la última interacción, para definir el alcance de la exploración del elemento. Para aumentar el número de elementos que Amazon Personalize considera durante la exploración, indique un valor superior.

      Por ejemplo, si especifica 10, durante la exploración solo se tendrán en cuenta los elementos con datos de interacciones de elementos de los 10 días transcurridos desde la última interacción del conjunto de datos.

      nota

      Las recomendaciones pueden incluir elementos sin datos de interacciones de elementos de fuera de este período de tiempo. El motivo es que estos elementos son relevantes para los intereses del usuario y no se requirió a la exploración que los identificara.

  4. Elija Crear una campaña.

  5. En la página de detalles de la campaña, cuando el estado de la campaña es Activo, puede utilizarla para obtener recomendaciones y registrar las impresiones. Para obtener más información, consulte Paso 5: Obtener recomendaciones en “Introducción”.

    Amazon Personalize actualiza automáticamente la última versión de la solución cada dos horas para incluir nuevos datos. La campaña utiliza automáticamente la versión actualizada de la solución. Para más información, consulte Actualizaciones automáticas.

    Para actualizar la campaña manualmente, primero debe crear y entrenar una nueva versión de la solución mediante la consola o la operación CreateSolutionVersion, con la configuración trainingMode establecida en update. A continuación, actualice la campaña manualmente en la página Campaña de la consola o mediante la operación UpdateCampaign.

    nota

    Amazon Personalize no actualiza automáticamente las versiones de soluciones que haya creado antes del 17 de noviembre de 2020.

Entrenamiento con la receta User-Personalization (SDK de Python)

Cuando haya creado un grupo de conjuntos de datos y cargado sus conjuntos de datos con datos de impresiones, podrá entrenar una solución con la receta User-Personalization. Si lo desea, incluya CREATION_TIMESTAMP y datos Metadatos de texto no estructurado en su conjunto de datos de elementos para que Amazon Personalize pueda calcular con mayor precisión la antigüedad de un elemento e identificar los elementos fríos. Para obtener más información sobre la creación de grupos de conjuntos de datos y la carga de datos de entrenamiento, consulte Schemas.

Para entrenar una solución con la receta de personalización del usuario mediante el SDK AWS
  1. Cree una nueva solución mediante el método create_solution.

    Sustituya solution name por el nombre de la solución y dataset group arn por el nombre de recurso de Amazon (ARN) del grupo de conjuntos de datos.

    import boto3 personalize = boto3.client('personalize') print('Creating solution') create_solution_response = personalize.create_solution(name = 'solution name', recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', datasetGroupArn = 'dataset group arn', ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)

    Para obtener una lista de las propiedades e hiperparámetros de la aws-user-personalization receta, consulte. Propiedades e hiperparámetros

  2. Cree una nueva versión de la solución con los datos de entrenamiento actualizados y configure trainingMode en FULL para usar el siguiente fragmento de código. Sustituya solution arn por el ARN de la solución.

    import boto3 personalize = boto3.client('personalize') create_solution_version_response = personalize.create_solution_version(solutionArn = 'solution arn', trainingMode='FULL') new_solution_version_arn = create_solution_version_response['solutionVersionArn'] print('solution_version_arn:', new_solution_version_arn)
  3. Cuando Amazon Personalize termine de crear la versión de la solución, cree la campaña con los siguientes parámetros:

    • Proporcione un nuevo campaign name y el solution version arn generado en el paso 2.

    • Modifique el hiperparámetro de configuración de exploración de elementos explorationWeight para configurar cuánto explorar. Los elementos con menos datos de interacciones de elementos o relevancia se recomiendan con más frecuencia cuanto más se acerca el valor a 1,0. El valor predeterminado es 0,3.

    • Modifique el parámetro de hiperparámetro de la configuración de exploración de elementos explorationItemAgeCutOff para proporcionar la duración máxima, en días en relación con la última interacción, durante la cual se deben explorar los elementos. Cuanto mayor sea el valor, más elementos se tendrán en cuenta durante la exploración.

    Use el siguiente fragmento de código de Python para crear una nueva campaña con énfasis en la exploración con un límite de exploración de 30 días. La creación de una campaña suele hacerse en unos minutos, pero puede tardar más de una hora.

    import boto3 personalize = boto3.client('personalize') create_campaign_response = personalize.create_campaign( name = 'campaign name', solutionVersionArn = 'solution version arn', minProvisionedTPS = 1, campaignConfig = {"itemExplorationConfig": {"explorationWeight": "0.3", "explorationItemAgeCutOff": "30"}} ) campaign_arn = create_campaign_response['campaignArn'] print('campaign_arn:', campaign_arn)

    Con User-Personalization, Amazon Personalize actualiza automáticamente la versión de la solución cada dos horas para incluir nuevos datos. La campaña utiliza automáticamente la versión actualizada de la solución. Para más información, consulte Actualizaciones automáticas.

    Para actualizar la campaña manualmente, primero debe crear y entrenar una nueva versión de la solución mediante la consola o la operación CreateSolutionVersion, con la configuración trainingMode establecida en update. A continuación, actualice la campaña manualmente en la página Campaña de la consola o mediante la operación UpdateCampaign.

    nota

    Amazon Personalize no actualiza automáticamente las versiones de soluciones que haya creado antes del 17 de noviembre de 2020.

Obtención de recomendaciones y registro de impresiones (SDK para Python [Boto3])

Una vez creada la campaña, puede usarla para obtener recomendaciones para un usuario y registrar las impresiones. Para obtener información sobre cómo obtener recomendaciones de lotes mediante los AWS SDK, consulte. Crear un trabajo de inferencia por lotes (AWS SDK)

Para obtener recomendaciones y registrar las impresiones
  1. Llame al método get_recommendations. Cambie campaign arn al ARN de la nueva campaña y user id al identificador de usuario del usuario.

    import boto3 rec_response = personalize_runtime.get_recommendations(campaignArn = 'campaign arn', userId = 'user id') print(rec_response['recommendationId'])
  2. Cree un nuevo rastreador de eventos para enviar PutEvents solicitudes. Reemplace event tracker name por el nombre de su rastreador de eventos y dataset group arn por el ARN de su grupo de conjuntos de datos.

    import boto3 personalize = boto3.client('personalize') event_tracker_response = personalize.create_event_tracker( name = 'event tracker name', datasetGroupArn = 'dataset group arn' ) event_tracker_arn = event_tracker_response['eventTrackerArn'] event_tracking_id = event_tracker_response['trackingId'] print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id))
  3. Use recommendationId del paso 1 y event tracking id del paso 2 para crear una nueva solicitud PutEvents. Esta solicitud registra los nuevos datos de impresión de la sesión del usuario. Cambie user id por el identificador del usuario.

    import boto3 personalize_events.put_events( trackingId = 'event tracking id', userId= 'user id', sessionId = '1', eventList = [{ 'sentAt': datetime.now().timestamp(), 'eventType' : 'click', 'itemId' : rec_response['itemList'][0]['itemId'], 'recommendationId': rec_response['recommendationId'], 'impression': [item['itemId'] for item in rec_response['itemList']], }] )

Cuaderno de Jupyter de ejemplo

Para ver una muestra de cuaderno de Jupyter que describe el uso de la receta User-Personalization, consulte Personalización de usuario con la exploración.