Optimisation d'une solution pour un objectif supplémentaire - 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.

Optimisation d'une solution pour un objectif supplémentaire

Important

Par défaut, toutes les nouvelles solutions utilisent l'entraînement automatique. Avec la formation automatique, vous encourez des frais de formation pendant que votre solution est active. Pour éviter des coûts inutiles, lorsque vous avez terminé, vous pouvez mettre à jour la solution pour désactiver l'entraînement automatique. Pour plus d'informations sur les coûts de formation, consultez la tarification d'Amazon Personalize.

Si vous utilisez la recette de personnalisation utilisateur ou la recette de classement personnalisé, vous pouvez optimiser une solution Amazon Personalize en fonction d'un objectif en plus d'une pertinence maximale, comme la maximisation des revenus.

Avec les recettes de recommandation d'articles, l'objectif principal d'Amazon Personalize est de prévoir les articles les plus pertinents pour vos utilisateurs sur la base de données historiques et en temps réel sur les interactions entre articles. Il s'agit des éléments avec lesquels vos utilisateurs sont les plus susceptibles d'interagir (par exemple, les éléments sur lesquels ils seront le plus susceptibles de cliquer). Si vous avez un objectif supplémentaire, tel que la maximisation des minutes de streaming ou l'augmentation des revenus, vous pouvez créer une solution qui génère des recommandations basées à la fois sur la pertinence et sur votre objectif.

Pour optimiser une solution pour un objectif supplémentaire, créez une nouvelle solution à l'aide de la recette de personnalisation utilisateur ou de la recette de classement personnalisé et choisissez la colonne de métadonnées numériques de votre jeu de données d'articles qui est liée à votre objectif. Lors de la génération de recommandations, Amazon Personalize accorde plus d'importance aux éléments présentant des valeurs plus élevées pour cette colonne de données. Par exemple, vous pouvez choisir une LENGTH colonne VIDEO _ pour maximiser les minutes de diffusion ou une PRICE colonne pour maximiser les revenus.

Vous pouvez utiliser la console Amazon Personalize, AWS Command Line Interface (AWS CLI), ou AWS SDKs. Pour plus d'informations sur l'utilisation de la console Amazon Personalize, consultezCréation d'une solution (console).

Directives et exigences

Les exigences objectives sont les suivantes :

  • Vous ne pouvez choisir qu'une seule colonne pour votre objectif.

  • La colonne doit avoir un type numérique dans votre schéma.

  • La colonne ne peut pas avoir de null type dans votre schéma.

Pour plus d'informations sur les schémas et les types de données, consultezCréation de JSON fichiers de schéma pour les schémas Amazon Personalize.

Équilibrer l'objectif, l'accent et la pertinence

Il peut y avoir un compromis lorsque vous recommandez des articles en fonction de votre objectif plutôt que de leur pertinence. Par exemple, si vous souhaitez augmenter vos revenus par le biais de recommandations, les recommandations portant uniquement sur des articles coûteux peuvent rendre les articles moins pertinents pour vos utilisateurs et réduire l'engagement et le taux de conversion des utilisateurs.

Pour configurer l'équilibre entre la pertinence et votre objectif, choisissez l'un des niveaux de sensibilité d'objectif suivants lorsque vous créez la solution :

  • Désactivé : Amazon Personalize utilise principalement les données relatives aux interactions avec les articles pour prévoir les articles les plus pertinents pour votre utilisateur.

  • Faible : Amazon Personalize met moins l'accent sur votre objectif. La pertinence des données relatives aux interactions entre les articles est plus importante.

  • Médium : Amazon Personalize met autant l'accent sur votre objectif que sur votre pertinence par le biais des données relatives aux interactions avec les articles.

  • Élevé : Amazon Personalize met davantage l'accent sur votre objectif. La pertinence des données relatives aux interactions entre les articles est moins importante.

Mesurer les performances d'optimisation

Lorsque vous créez une version de solution (entraînez un modèle) pour une solution avec un objectif d'optimisation, Amazon Personalize génère une average_rewards_at_k métrique. Le score de average_rewards_at_k indique dans quelle mesure la version de la solution permet d'atteindre votre objectif. Pour calculer cette statistique, Amazon Personalize calcule les récompenses pour chaque utilisateur comme suit :

rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations

La valeur finale average_rewards_at_k est la moyenne de toutes les valeurs rewards_per_user normalisées pour être une valeur décimale inférieure ou égale à 1 et supérieure à 0. Plus la valeur est proche de 1, plus vous pouvez vous attendre à des gains en moyenne par utilisateur grâce aux recommandations.

Par exemple, si votre objectif est de maximiser les revenus générés par les clics, Amazon Personalize calcule le score de chaque utilisateur en divisant le chiffre d'affaires total généré par les articles sur lesquels l'utilisateur a cliqué parmi ses 25 recommandations les plus chères par les revenus provenant de tous les articles recommandés sur lesquels l'utilisateur a cliqué. Amazon Personalize renvoie ensuite une moyenne normalisée de tous les scores des utilisateurs. Plus la valeur average_rewards_at_k est proche de 1, plus vous pouvez vous attendre à générer en moyenne des revenus par utilisateur grâce aux recommandations.

Pour plus d'informations sur la génération de métriques, consultezÉvaluation d'une version de la solution Amazon Personalize à l'aide de métriques.

Optimisation d'une solution (AWS CLI)

Vous ne pouvez optimiser un objectif qu'à l'aide de la recette de personnalisation par l'utilisateur ou de classement personnalisé. Pour optimiser une solution pour un objectif supplémentaire à l'aide du AWS CLI, créez une nouvelle solution et spécifiez les détails de votre objectif à l'aide de la optimizationObjective clé de l'solutionConfigobjet. optimizationObjectivecomporte les champs suivants :

  • itemAttribute: Spécifiez le nom de la colonne de métadonnées numériques du jeu de données Items associée à votre objectif.

  • objectiveSensitivity: Spécifiez le niveau d'importance que la solution met sur votre objectif lors de la génération de recommandations. Le niveau de sensibilité des objectifs configure la manière dont Amazon Personalize équilibre les recommandations d'articles en fonction de votre objectif par rapport à leur pertinence grâce aux données d'interaction entre les articles. Ils objectiveSensitivity peuvent être OFFLOW, MEDIUM ouHIGH. Pour de plus amples informations, veuillez consulter Équilibrer l'objectif, l'accent et la pertinence.

Voici un exemple de create-solution AWS CLI commande. Remplacez les recipe arn valeurs solution namedataset group arn, et par les vôtres.

PouroptimizationObjective, remplacez-le COLUMN_NAME par le nom de colonne de métadonnées numériques du jeu de données Items associé à votre objectif. PourobjectiveSensitivity, spécifiez OFFLOW,MEDIUM, ouHIGH.

aws personalize create-solution \ --name solution name \ --dataset-group-arn dataset group arn \ --recipe-arn recipe arn \ --solution-config "{\"optimizationObjective\":{\"itemAttribute\":\"COLUMN_NAME\",\"objectiveSensitivity\":\"MEDIUM\"}}"

Lorsque votre solution est prête, créez une nouvelle version de solution (pour un exemple de commande, voirCréation d'une solution (AWS CLI)). Une fois que vous avez créé une version de solution, vous pouvez visualiser les performances d'optimisation à l'aide des métriques de version de solution. Consultez Mesurer les performances d'optimisation.

Optimisation d'une solution (AWS SDKs)

Vous ne pouvez optimiser un objectif qu'à l'aide de la recette de personnalisation par l'utilisateur ou de classement personnalisé.

Pour optimiser une solution pour un objectif supplémentaire à l'aide du AWS SDKs, créez une nouvelle solution et spécifiez les détails de votre objectif à l'aide de la optimizationObjective clé de l'solutionConfigobjet correspondant à la solution. optimizationObjectivecomporte les champs suivants :

  • itemAttribute: Spécifiez le nom de la colonne de métadonnées numériques du jeu de données Items du groupe de données qui se rapporte à votre objectif.

  • objectiveSensitivity: Spécifiez le niveau d'importance que la solution met sur votre objectif lors de la génération de recommandations. Le niveau de sensibilité des objectifs configure la manière dont Amazon Personalize équilibre les recommandations d'articles en fonction de votre objectif par rapport à leur pertinence grâce aux données d'interaction entre les articles. Ils objectiveSensitivity peuvent être OFFLOW, MEDIUM ouHIGH. Pour de plus amples informations, veuillez consulter Équilibrer l'objectif, l'accent et la pertinence.

Utilisez le code suivant pour créer une solution avec un objectif supplémentaire avec le AWS SDK for Python (Boto3) ou le AWS SDK for Java 2.x.

Lorsque votre solution est prête, créez une nouvelle version de la solution (par exemple, voir le codeCréation d'une version de solution (AWS SDKs)). Une fois que vous avez créé une version de solution, vous pouvez visualiser les performances d'optimisation à l'aide des métriques de version de solution. Consultez Mesurer les performances d'optimisation.

SDK for Python (Boto3)

Pour créer une solution optimisée pour un objectif supplémentaire, appliquez la create_solution méthode suivante. Remplacez les recipe arn valeurs solution namedataset group arn, et par les vôtres.

PouroptimizationObjective, remplacez-le COLUMN_NAME par le nom de colonne de métadonnées numériques du jeu de données Items associé à votre objectif. PourobjectiveSensitivity, spécifiez OFFLOW,MEDIUM, ouHIGH.

import boto3 personalize = boto3.client('personalize') create_solution_response = personalize.create_solution( name= 'solution name', recipeArn = 'recipe arn', datasetGroupArn = 'dataset group arn', solutionConfig = { "optimizationObjective": { "itemAttribute": "COLUMN_NAME", "objectiveSensitivity": "MEDIUM" } } ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
SDK for Java 2.x

Pour créer une solution optimisée pour un objectif supplémentaire, utilisez la createPersonalizeSolution méthode suivante et transmettez les paramètres suivants : un client du service Amazon Personalize, le nom de la ressource Amazon du groupe de données (ARN), le nom de la solution, la recetteARN, l'attribut de l'article et le niveau de sensibilité de l'objectif.

public static String createPersonalizeSolution(PersonalizeClient personalizeClient, String datasetGroupArn, String solutionName, String recipeArn, String itemAttribute, String objectiveSensitivity) { try { OptimizationObjective optimizationObjective = OptimizationObjective.builder() .itemAttribute(itemAttribute) .objectiveSensitivity(objectiveSensitivity) .build(); SolutionConfig solutionConfig = SolutionConfig.builder() .optimizationObjective(optimizationObjective) .build(); CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder() .name(solutionName) .datasetGroupArn(datasetGroupArn) .recipeArn(recipeArn) .solutionConfig(solutionConfig) .build(); CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest); return solutionResponse.solutionArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return "";
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateSolutionCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create the personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION"}); // set the solution parameters. export const createSolutionParam = { datasetGroupArn: 'DATASET_GROUP_ARN', /* required */ recipeArn: 'RECIPE_ARN', /* required */ name: 'NAME', /* required */ solutionConfig: { optimizationObjective: { itemAttribute: "COLUMN_NAME", /* specify the numerical column from the Items dataset related to your objective */ objectiveSensitivity: "MEDIUM" /* specify OFF, LOW, MEDIUM, or HIGH */ } } }; export const run = async () => { try { const response = await personalizeClient.send(new CreateSolutionCommand(createSolutionParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Exemple de carnet Jupyter

Pour un exemple de bloc-notes Jupyter qui montre comment créer une solution optimisée pour des métadonnées d'article supplémentaires basées sur un objectif, consultez le dossier objective_optimization du référentiel d'échantillons Amazon Personalize GitHub