Recette de personnalisation par l'utilisateur - Amazon Personalize

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Recette de personnalisation par l'utilisateur

Important

Nous vous recommandons d'utiliser la recette User-Personalization-v2. Il peut prendre en compte jusqu'à 5 millions d'éléments grâce à une formation plus rapide et générer des recommandations plus pertinentes avec une latence moindre.

La recette User-Personalization (aws-user-personalization) est optimisée pour tous les scénarios de recommandation personnalisés. Il prédit les éléments avec lesquels un utilisateur est le plus susceptible d'interagir. Vous pouvez utiliser la personnalisation utilisateur pour générer des recommandations de films personnalisées pour une application de streaming ou des recommandations de produits personnalisées pour une application de vente au détail.

Avec User-Personalization, Amazon Personalize génère des recommandations principalement basées sur les données d'interaction entre les utilisateurs et les articles dans un ensemble de données d'interactions entre les articles. Il peut également utiliser n'importe quelle métadonnée d'élément et d'utilisateur dans vos ensembles de données Éléments et Utilisateurs. Pour plus d'informations sur les données qu'il utilise, consultezEnsembles de données obligatoires et facultatifs.

Caractéristiques de la recette

La personnalisation par l'utilisateur utilise les fonctionnalités de recette Amazon Personalize suivantes pour générer des recommandations d'articles :

  • Personnalisation en temps réel — Grâce à la personnalisation en temps réel, Amazon Personalize met à jour et adapte les recommandations d'articles en fonction de l'évolution des intérêts de l'utilisateur. Pour plus d’informations, consultez Personnalisation en temps réel.

  • Exploration — Dans le cadre de l'exploration, les recommandations incluent de nouveaux éléments ou des éléments contenant moins de données d'interactions. Cela améliore la découverte des articles et l'engagement lorsque vous avez un catalogue en évolution rapide, ou lorsque de nouveaux articles, tels que des articles de presse ou des promotions, sont plus pertinents pour les utilisateurs lorsqu'ils sont nouveaux. Pour plus d'informations sur l'exploration, consultezExploration.

  • Mises à jour automatiques : grâce aux mises à jour automatiques, Amazon Personalize met automatiquement à jour le dernier modèle (version de la solution) toutes les deux heures afin de prendre en compte les nouveaux articles et de les recommander. Pour plus d’informations, consultez Mises à jour automatiques.

Ensembles de données obligatoires et facultatifs

Pour utiliser la personnalisation utilisateur, vous devez créer Ensemble de données d'interactions entre objets et importer au moins 1 000 interactions entre articles. Amazon Personalize génère des recommandations principalement basées sur les données d'interaction entre les articles.

Grâce à la personnalisation par l'utilisateur, Amazon Personalize peut utiliser les données relatives aux interactions avec les articles, notamment les suivantes :

  • Données relatives au type d'événement et à la valeur de l'événement : Amazon Personalize utilise les données relatives aux types d'événements, telles que les types d'événements à cliquer ou à regarder, pour identifier les intentions et les intérêts des utilisateurs en fonction de leurs comportements. Vous pouvez également utiliser les données relatives au type et à la valeur de l'événement pour filtrer les enregistrements avant l'entraînement. Pour plus d’informations, consultez Données relatives au type et à la valeur de l'événement.

  • Métadonnées contextuelles — Les métadonnées contextuelles sont des données d'interaction que vous collectez sur l'environnement de l'utilisateur au moment d'un événement, telles que sa localisation ou son type d'appareil. Pour plus d’informations, consultez Métadonnées contextuelles.

  • Données relatives aux impressions : les impressions sont des listes d'articles visibles par un utilisateur lorsqu'il interagissait avec un article en particulier (cliqué, regardé, acheté, etc.). Pour plus d’informations, consultez Données sur les impressions.

Les ensembles de données suivants sont facultatifs et peuvent améliorer les recommandations :

  • Ensemble de données utilisateurs — Amazon Personalize peut utiliser les données de votre jeu de données utilisateurs pour mieux comprendre vos utilisateurs et leurs centres d'intérêt. Vous pouvez également utiliser les données d'un jeu de données Utilisateurs pour filtrer les recommandations. Pour plus d'informations sur les données utilisateur que vous pouvez importer, consultezEnsemble de données des utilisateurs.

  • Ensemble de données d'articles : Amazon Personalize peut utiliser les données de votre jeu de données d'articles pour identifier les connexions et les modèles de comportement. Cela permet à Amazon Personalize de comprendre vos utilisateurs et leurs centres d'intérêt. Vous pouvez également utiliser les données d'un jeu de données Items pour filtrer les recommandations. Pour plus d'informations sur les données d'articles que vous pouvez importer, consultezEnsemble de données d'articles.

Propriétés et hyperparamètres

La recette de personnalisation utilisateur possède les propriétés suivantes :

  • Nomaws-user-personalization

  • Nom de la ressource Amazon (ARN) de la recettearn:aws:personalize:::recipe/aws-user-personalization

  • Algorithme ARNarn:aws:personalize:::algorithm/aws-user-personalization

Pour plus d’informations, consultez Choisir une recette.

Le tableau suivant décrit les hyperparamètres de la recette de personnalisation utilisateur. Un hyperparamètre est un paramètre d'algorithme que vous pouvez régler pour améliorer les performances du modèle. Les hyperparamètres d'algorithme contrôlent les performances du modèle. Les hyperparamètres d’organisation de fonction contrôlent la façon de filtrer les données à utiliser dans la formation. Le processus de sélection de la meilleure valeur pour un hyperparamètre est appelé optimisation des hyperparamètres (HPO). Pour plus d’informations, consultez Hyperparamètres et HPO.

Le tableau fournit les informations suivantes pour chaque hyperparamètre :

  • Plage: [lower bound, upper bound]

  • Type de valeur : integer (entier), Continuous (float) [continu (flottant)], Categorical (Boolean, list, string) [catégorique (booléen, liste, chaîne)]

  • HPO tunable (HPO réglable) : le paramètre peut-il participer à HPO ?

Name (Nom) Description
Hyperparamètres de l'algorithme
hidden_dimension

Nombre de variables masquées utilisées dans le modèle. Les variables masquées recréent l'historique des achats des utilisateurs et les statistiques des articles pour générer des scores de classement. Spécifiez un plus grand nombre de dimensions masquées lorsque votre jeu de données d'interactions entre objets inclut des modèles plus complexes. L'utilisation de dimensions masquées nécessite un ensemble de données plus volumineux et plus de temps pour le traitement. Pour choisir le meilleur rapport qualité-prix, utilisez HPO. Pour utiliser HPO, définissez performHPO sur true lorsque vous appelez les opérations CreateSolution et CreateSolutionVersion.

Valeur par défaut : 149

Plage : [32, 256]

Type de valeur : entier

HPO personnalisable : oui

bptt

Détermine s'il convient d'utiliser la technique de propagation de retour à travers le temps. La propagation du retour au fil du temps est une technique qui met à jour les pondérations dans les algorithmes récurrents basés sur les réseaux neuronaux. Utilisez bptt pour les crédits à long terme afin de connecter les récompenses retardées à des événements précoces. Par exemple, une récompense retardée peut être un achat effectué après plusieurs clics. Un événement précoce peut être un clic initial. Même dans les mêmes types d'événements, comme un clic, il est judicieux de prendre en compte les effets à long terme et d'optimiser le total des récompenses. Pour prendre en compte les effets à long terme, utilisez des valeurs bptt plus élevées. L'utilisation d'une valeur bptt plus importante nécessite des ensembles de données plus volumineux et plus de temps pour le traitement.

Valeur par défaut : 32

Plage : [2, 32]

Type de valeur : entier

HPO personnalisable : oui

recency_mask

Détermine si le modèle doit prendre en compte les dernières tendances de popularité dans le jeu de données d'interactions entre articles. Les dernières tendances de popularité peuvent inclure des modifications soudaines dans les modèles sous-jacents des événements d'interaction. Pour former un modèle qui accorde plus de poids aux événements récents, définissez recency_mask sur true. Pour former un modèle qui pèse de manière égale toutes les interactions passées, définissez recency_mask sur false. Pour obtenir de bonnes recommandations en utilisant un poids égal, vous pouvez avoir besoin d'un ensemble de données de formation plus grand.

Valeur par défaut : True

Plage : True ou False

Type de valeur : booléen

HPO personnalisable : oui

Hyperparamètres de fonctionnalité
min_user_history_length_percentile

Le percentile minimal des longueurs d’historique d'utilisateur à inclure dans la formation du modèle. La longueur de l'historique correspond à la quantité totale de données sur un utilisateur. Utilisez min_user_history_length_percentile pour exclure un pourcentage d'utilisateurs avec des longueurs d'historique courtes. Les utilisateurs avec un court historique affichent souvent des modèles basés sur la popularité des éléments plutôt que sur les besoins ou les souhaits personnels de l'utilisateur. Leur suppression peut former des modèles en mettant davantage l'accent sur les modèles sous-jacents dans vos données. Choisissez une valeur appropriée après avoir examiné les longueurs de l'historique utilisateur, à l'aide d'un histogramme ou d'un outil similaire. Nous vous recommandons de définir une valeur qui conserve la majorité des utilisateurs, mais supprime les cas périphériques.

Par exemple, la définition de min_user_history_length_percentile to 0.05 et max_user_history_length_percentile to 0.95 inclut tous les utilisateurs, sauf ceux dont la longueur de l'historique figure dans les 5 % du bas ou du haut.

Valeur par défaut : 0.0

Plage : [0.0, 1.0]

Type de valeur : flottante

HPO personnalisable : non

max_user_history_length_percentile

Le percentile maximal des longueurs d’historique d'utilisateur à inclure dans la formation du modèle. La longueur de l'historique correspond à la quantité totale de données sur un utilisateur. Utilisez max_user_history_length_percentile pour exclure un pourcentage d'utilisateurs avec de longues longueurs d'historique, car les données de ces utilisateurs ont tendance à contenir du bruit. Par exemple, un robot peut avoir une longue liste d'interactions automatisées. La suppression de ces utilisateurs limite le bruit dans la formation. Choisissez une valeur appropriée après avoir examiné les longueurs de l'historique utilisateur, à l'aide d'un histogramme ou d'un outil similaire. Nous vous recommandons de définir une valeur qui conserve la majorité des utilisateurs, mais supprime les cas périphériques.

Par exemple, la définition de min_user_history_length_percentile to 0.05 et max_user_history_length_percentile to 0.95 inclut tous les utilisateurs, sauf ceux dont la longueur de l'historique figure dans les 5 % du bas ou du haut.

Valeur par défaut : 0.99

Plage : [0.0, 1.0]

Type de valeur : flottante

HPO personnalisable : non

Hyperparamètres de configuration de la campagne d'exploration d'objets
exploration_weight

Détermine la fréquence à laquelle les recommandations incluent des éléments présentant moins de données d'interaction ou de pertinence. Plus la valeur est proche de 1,0, plus l'exploration est intense. À zéro, aucune exploration n'a lieu et les recommandations sont basées sur les données actuelles (pertinence). Pour plus d’informations, consultez CampaignConfig.

Valeur par défaut : 0.3

Plage : [0.0, 1.0]

Type de valeur : flottante

HPO personnalisable : non

exploration_item_age_cut_off

Spécifiez l'âge maximal des objets en jours depuis la dernière interaction entre tous les éléments du jeu de données des interactions entre articles. Cela définit la portée de l'exploration des objets en fonction de leur âge. Amazon Personalize détermine l'âge d'un article en fonction de son horodatage de création ou, si les données d'horodatage de création sont manquantes, des données d'interaction avec l'article. Pour plus d'informations sur la façon dont Amazon Personalize détermine l'âge d'un article, consultezDonnées d'horodatage de création.

Pour augmenter le nombre d'articles pris en compte par Amazon Personalize lors de l'exploration, entrez une valeur supérieure. Le minimum est de 1 jour et la valeur par défaut est de 30 jours. Les recommandations peuvent inclure des articles plus anciens que l'âge limite que vous spécifiez. Cela est dû au fait que ces éléments sont pertinents pour l'utilisateur et que l'exploration ne les a pas identifiés.

Valeur par défaut : 30.0

Plage : valeurs flottantes positives

Type de valeur : flottante

HPO personnalisable : non

Formation avec la recette de personnalisation utilisateur (console)

Pour utiliser la recette de personnalisation utilisateur afin de générer des recommandations dans la console, commencez par entraîner une nouvelle version de solution à l'aide de cette recette. Déployez ensuite une campagne à l'aide de la version de la solution et utilisez-la pour obtenir des recommandations.

Formation à une nouvelle version de solution à l'aide de la recette de personnalisation utilisateur (console)
  1. Ouvrez la console Amazon Personalize à l'adresse https://console.aws.amazon.com/personalize/home et connectez-vous à votre compte.

  2. Créez un groupe de jeux de données personnalisé avec un nouveau schéma et téléchargez votre jeu de données avec les données d'impressions. Vous pouvez éventuellement inclure CREATION_TIMESTAMP et les Métadonnées de texte non structurées données dans votre jeu de données Articles afin qu'Amazon Personalize puisse calculer avec plus de précision l'âge d'un article et identifier les articles froids.

    Pour plus d'informations sur l'importation de données, consultezÉtape 2 : Préparation et importation des données.

  3. Sur la page Groupes de jeux de données, choisissez le nouveau groupe de jeux de données qui contient le ou les ensembles de données contenant des données d'impressions.

  4. Dans le volet de navigation, sélectionnez Solutions et recettes, puis sélectionnez Créer une solution.

  5. Sur la page Créer une solution, pour le nom de la solution, entrez le nom de votre nouvelle solution.

  6. Dans Type de solution, choisissez Recommandation d'article pour obtenir des recommandations d'articles pour vos utilisateurs.

  7. Pour Recipe, choisissez aws-user-personalization. La section Configuration de la solution apparaît et propose plusieurs options de configuration.

  8. Dans Configuration supplémentaire, si votre ensemble de données d'interactions avec les articles comporte les colonnes EVENT_TYPE ou EVENT_TYPE et EVENT_VALUE, utilisez éventuellement les champs Type d'événement et Seuil de valeur d'événement pour choisir les données d'interactions entre articles utilisées par Amazon Personalize lors de la formation du modèle. Pour plus d’informations, consultez Choix des données d'interaction entre les objets utilisées pour l'entraînement.

  9. Configurez éventuellement des hyperparamètres pour votre solution. Pour obtenir la liste des propriétés et des hyperparamètres des recettes de personnalisation utilisateur, consultez. Propriétés et hyperparamètres

  10. Choisissez Create and train solution pour commencer la formation. La page Tableau de bord s'affiche.

    Vous pouvez accéder à la page des détails de la solution pour suivre la progression de la formation dans la section Versions de la solution. Lorsque l'entraînement est terminé, le statut est Actif.

Création d'une campagne et obtention de recommandations (console)

Lorsque le statut de la version de votre solution est Actif, vous êtes prêt à créer votre campagne et à obtenir les recommandations suivantes :

  1. Sur la page de détails de la solution ou sur la page Campagnes, choisissez Créer une nouvelle campagne.

  2. Sur la page Créer une nouvelle campagne, pour les détails de la campagne, fournissez les informations suivantes :

    • Nom de la campagne : entrez le nom de la campagne. Le texte que vous saisissez ici apparaît sur le tableau de bord et la page de détails de la campagne.

    • Solution : Choisissez la solution que vous venez de créer.

    • ID de version de solution : Choisissez l'ID de la version de solution que vous venez de créer.

    • Minimum de transactions provisionnées par seconde : définissez le nombre minimum de transactions provisionnées par seconde pris en charge par Amazon Personalize. Pour plus d'informations, consultez l'CreateCampaignopération.

  3. Pour la configuration de la campagne, fournissez les informations suivantes :

    • Poids d'exploration : configurez la quantité à explorer, les recommandations incluant les éléments présentant moins de données d'interaction ou de pertinence, d'autant plus fréquemment que vous spécifiez le niveau d'exploration. Plus la valeur est proche de 1, plus l'exploration est intense. À zéro, aucune exploration n'a lieu et les recommandations sont basées sur les données actuelles (pertinence).

    • Âge limite de l'objet d'exploration : entrez l'âge maximum de l'objet, en jours depuis la dernière interaction, pour définir l'étendue de l'exploration de l'objet. Pour augmenter le nombre d'articles pris en compte par Amazon Personalize lors de l'exploration, entrez une valeur supérieure.

      Par exemple, si vous entrez 10, seuls les éléments dont les données d'interaction entre les éléments datent des 10 jours écoulés depuis la dernière interaction dans le jeu de données sont pris en compte lors de l'exploration.

      Note

      Les recommandations peuvent inclure des éléments sans données d'interaction entre les éléments en dehors de cette période. Cela est dû au fait que ces éléments correspondent aux intérêts de l'utilisateur et qu'il n'était pas nécessaire de les explorer pour les identifier.

  4. Choisissez Create campaign (Créer une campagne).

  5. Sur la page des détails de la campagne, lorsque le statut de la campagne est Actif, vous pouvez utiliser la campagne pour obtenir des recommandations et enregistrer des impressions. Pour plus d'informations, consultez Étape 5 : Obtenir des recommandations la section « Mise en route ».

    Amazon Personalize met automatiquement à jour la dernière version de votre solution toutes les deux heures pour inclure les nouvelles données. Votre campagne utilise automatiquement la version mise à jour de la solution. Pour plus d’informations, consultez Mises à jour automatiques.

    Pour mettre à jour manuellement la campagne, vous devez d'abord créer et entraîner une nouvelle version de la solution à l'aide de la console ou de l'CreateSolutionVersionopération, avec trainingMode set toupdate. Vous mettez ensuite manuellement à jour la campagne sur la page Campagne de la console ou en utilisant l'UpdateCampaignopération.

    Note

    Amazon Personalize ne met pas automatiquement à jour les versions des solutions que vous avez créées avant le 17 novembre 2020.

Formation avec la recette de personnalisation utilisateur (SDK Python)

Une fois que vous avez créé un groupe de jeux de données et que vous avez chargé vos jeux de données contenant des données d'impressions, vous pouvez élaborer une solution à l'aide de la recette de personnalisation utilisateur. Vous pouvez éventuellement inclure CREATION_TIMESTAMP et les Métadonnées de texte non structurées données dans votre jeu de données Articles afin qu'Amazon Personalize puisse calculer avec plus de précision l'âge d'un article et identifier les articles froids. Pour plus d'informations sur la création de groupes de jeux de données et le téléchargement de données d'entraînement, consultezSchémas.

Pour élaborer une solution à l'aide de la recette de personnalisation utilisateur à l'aide du SDK AWS
  1. Créez une nouvelle solution à l'aide de create_solution cette méthode.

    solution nameRemplacez-le par le nom de votre solution et dataset group arn par le nom de ressource Amazon (ARN) de votre groupe de données.

    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)

    Pour obtenir la liste des propriétés et des hyperparamètres des aws-user-personalization recettes, consultezPropriétés et hyperparamètres.

  2. Créez une nouvelle version de solution avec les données d'entraînement mises à jour et configurez trainingMode pour FULL utiliser l'extrait de code suivant. Remplacez le solution arn par l'ARN de votre solution.

    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. Lorsque Amazon Personalize a fini de créer la version de votre solution, créez votre campagne avec les paramètres suivants :

    • Fournissez un nouveau campaign name et le solution version arn généré à l'étape 2.

    • Modifiez l'hyperparamètre de configuration de l'exploration des explorationWeight objets pour configurer la quantité à explorer. Les éléments présentant moins de données d'interaction ou de pertinence sont recommandés plus fréquemment lorsque la valeur est proche de 1,0. La valeur par défaut est 0,3.

    • Modifiez le paramètre hyperparamètre de configuration de l'exploration des explorationItemAgeCutOff objets pour indiquer la durée maximale, en jours par rapport à la dernière interaction, pendant laquelle les éléments doivent être explorés. Plus la valeur est élevée, plus le nombre d'objets pris en compte lors de l'exploration est important.

    Utilisez l'extrait de code Python suivant pour créer une nouvelle campagne mettant l'accent sur l'exploration, avec une limite d'exploration de 30 jours. La création d'une campagne prend généralement quelques minutes, mais peut prendre plus d'une heure.

    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)

    Grâce à la personnalisation utilisateur, Amazon Personalize met automatiquement à jour la version de votre solution toutes les deux heures pour inclure les nouvelles données. Votre campagne utilise automatiquement la version mise à jour de la solution. Pour plus d’informations, consultez Mises à jour automatiques.

    Pour mettre à jour manuellement la campagne, vous devez d'abord créer et entraîner une nouvelle version de la solution à l'aide de la console ou de l'CreateSolutionVersionopération, avec trainingMode set toupdate. Vous mettez ensuite manuellement à jour la campagne sur la page Campagne de la console ou en utilisant l'UpdateCampaignopération.

    Note

    Amazon Personalize ne met pas automatiquement à jour les versions des solutions que vous avez créées avant le 17 novembre 2020.

Obtenir des recommandations et enregistrer des impressions (SDK pour Python (Boto3))

Lorsque votre campagne est créée, vous pouvez l'utiliser pour obtenir des recommandations pour un utilisateur et enregistrer ses impressions. Pour plus d'informations sur l'obtention de recommandations par lots à l'aide AWS des SDK, consultezCréation d'une tâche d'inférence par lots (AWS SDK).

Pour obtenir des recommandations et enregistrer les impressions
  1. Appelez la méthode get_recommendations. Remplacez campaign arn l'ARN de votre nouvelle campagne par user id l'userID de l'utilisateur.

    import boto3 rec_response = personalize_runtime.get_recommendations(campaignArn = 'campaign arn', userId = 'user id') print(rec_response['recommendationId'])
  2. Créez un nouveau système de suivi des événements pour envoyer PutEvents des demandes. event tracker nameRemplacez-le par le nom de votre outil de suivi d'événements et dataset group arn par l'ARN de votre groupe de données.

    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. Utilisez recommendationId les étapes 1 et 2 pour créer une nouvelle PutEvents demande. event tracking id Cette demande enregistre les nouvelles données d'impression issues de la session de l'utilisateur. Remplacez user id le par l'ID de l'utilisateur.

    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']], }] )

Exemple de carnet Jupyter

Pour un exemple de bloc-notes Jupyter qui montre comment utiliser la recette de personnalisation utilisateur, voir Personnalisation utilisateur avec exploration.