Promouvoir des articles dans les recommandations - 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.

Promouvoir des articles dans les recommandations

Avec tous les cas d'utilisation de domaines et certaines recettes personnalisées, vous pouvez définir une promotion lorsque vous recevez des recommandations en temps réel.

Une promotion définit des règles commerciales supplémentaires qui s'appliquent à un sous-ensemble configurable d'articles recommandés. Par exemple, vous avez peut-être une application de streaming et souhaitez promouvoir vos propres émissions et films, mais également recommander des titres pertinents. Vous pouvez utiliser une promotion pour spécifier qu'un certain pourcentage d'articles recommandés doivent provenir de la catégorie en interne. Les autres articles recommandés continueraient d'être des recommandations pertinentes en fonction de votre recette et de tout filtre de demande.

Pour appliquer une promotion, vous devez spécifier les éléments suivants dans votre demande de recommandation :

  • Pourcentage d'articles recommandés auxquels appliquer le filtre de promotion.

  • Filtre qui définit les critères de promotion. Pour plus d’informations, consultez Filtres de promotion.

Dans la réponse à la recommandation, les articles promus sont positionnés de manière aléatoire par rapport aux autres articles recommandés, mais dans un ordre trié par rapport aux autres articles promus. En fonction de votre recette, les articles recommandés qui ne font pas partie d'une promotion sont triés en fonction de leur pertinence pour l'utilisateur, de leur popularité ou de leur similitude. S'il n'y a pas assez d'articles répondant aux critères de promotion, le résultat contiendra autant d'articles sponsorisés que possible.

Vous pouvez appliquer une promotion aux recommandations à l'aide de la console Amazon Personalize AWS Command Line Interface (AWS CLI) ou AWS des SDK.

Cas d'utilisation et recettes qui soutiennent les promotions

Tous les cas d'utilisation prennent en charge les promotions. Les recettes personnalisées suivantes soutiennent les promotions :

Filtres de promotion

Lorsque vous appliquez une promotion à une demande de recommandation, vous choisissez un filtre qui précise les critères de promotion. Vous pouvez utiliser un filtre existant ou en créer un nouveau. Vous créez et gérez des filtres pour les promotions comme vous le feriez avec d'autres filtres dans Amazon Personalize. Pour plus d'informations sur la création et la gestion des filtres, consultezFiltrage des résultats.

La seule différence entre un filtre de promotion et un filtre que vous choisissez en dehors de la promotion (le filtre de demande) réside dans la manière dont Amazon Personalize les applique. Un filtre de promotion s'applique uniquement aux articles promus, tandis qu'un filtre de demande s'applique uniquement aux articles recommandés restants. Si vous spécifiez un filtre de demande et un filtre de promotion et que vous souhaitez appliquer les deux filtres aux articles promus, l'expression de votre filtre de promotion doit inclure les deux expressions. La façon dont vous combinez deux expressions dépend des ensembles de données que vous utilisez. Pour plus d'informations sur les expressions de filtre, leurs règles et la façon de les créer, consultezExpressions de filtrage.

Exemples d'expressions de filtre

L'expression suivante inclut uniquement les éléments de la catégorie « interne ». Vous pouvez utiliser cette expression si vous souhaitez promouvoir votre propre contenu dans vos recommandations.

INCLUDE ItemID WHERE Items.OWNER IN ("in-house")

L'expression suivante inclut uniquement les éléments créés plus récemment que l'horodatage que vous spécifiez. Vous pouvez utiliser cette expression pour promouvoir de nouveaux éléments dans les recommandations.

INCLUDE ItemID WHERE Items.CREATION_TIMESTAMP > $DATE

L'expression suivante montre comment appliquer un filtre de demande aux articles promus. Il inclut uniquement les vêtements disponibles en tant qu'articles promotionnels. Dans ce scénario, le Items.AVAILABLE IN ("True") serait également utilisé dans l'expression du filtre de demande, de sorte que toutes les recommandations concernent les éléments disponibles.

INCLUDE ItemID WHERE Items.CATEGORY IN ("clothing") AND Items.AVAILABLE IN ("True")

Pour une liste plus complète des exemples de filtres, voirExemples d'expressions de filtre.

Promouvoir de nouveaux articles

Si vous utilisez leRecette de personnalisation par l'utilisateur V2, Amazon Personalize recommande les articles les plus pertinents aux utilisateurs et recommande plus fréquemment les articles existants contenant des données d'interactions. Pour vous assurer que les recommandations incluent de nouveaux articles, vous pouvez appliquer une promotion aux demandes de recommandation qui inclut des articles en fonction de l'horodatage de création.

Si vous n'utilisez pas encore de promotion, votre expression de filtre peut promouvoir les articles créés après une certaine date :

INCLUDE ItemID WHERE Items.CREATION_TIMESTAMP > $DATE

Si vous utilisez déjà une promotion, vous créez une expression qui contient à la fois les déclarations relatives à la promotion et à l'état du nouvel article :

INCLUDE ItemID WHERE Items.CATEGORY IN ("clothing") OR Items.CREATION_TIMESTAMP > $DATE

Promouvoir des articles (console)

Pour promouvoir certains articles dans les recommandations à l'aide de la console Amazon Personalize, créez un filtre, puis fournissez les détails de la promotion dans la demande de recommandation. Pour plus d'informations sur les autres champs, voirObtenir des recommandations d'articles (console).

Pour promouvoir des articles dans les recommandations
  1. Ouvrez la console Amazon Personalize à l'adresse https://console.aws.amazon.com/personalize/home et connectez-vous à votre compte.

  2. Choisissez le groupe de jeux de données qui contient la campagne ou le recommandateur que vous utilisez.

  3. Si ce n'est pas déjà fait, créez un filtre qui précise les critères de promotion. Vous créez des filtres pour les promotions de la même manière que vous créez des filtres de demande. Pour plus d'informations sur la création et la gestion des filtres, consultezFiltrage des résultats.

  4. Dans le volet de navigation, choisissez Recommenders ou Campaigns.

  5. Choisissez la campagne cible ou le recommandateur.

  6. Pour les campagnes, sous Tester les résultats des campagnes, saisissez les détails de votre demande de recommandation en fonction de la recette que vous avez utilisée. Pour les recommandateurs, choisissez Test recommender et entrez les détails de votre demande de recommandation.

  7. Choisissez éventuellement un filtre pour la demande. Ce filtre s'applique uniquement aux articles non sponsorisés. Pour plus d'informations sur la création et la gestion des filtres, consultezFiltrage des résultats.

  8. Si vous utilisez des métadonnées contextuelles, fournissez des données pour chaque contexte. Pour chaque contexte, saisissez le champ de métadonnées pour la clé. Pour la valeur, entrez les données contextuelles. Pour plus d’informations, consultez Améliorer la pertinence des recommandations grâce aux métadonnées contextuelles.

  9. Pour la promotion, spécifiez les éléments suivants :

    • Pourcentage d'articles promus : entrez le pourcentage d'articles recommandés auxquels appliquer la promotion.

    • Filtre : Choisissez un filtre qui spécifie les critères de promotion. Ce filtre s'applique aux éléments promus au lieu de tout filtre de demande que vous auriez spécifié à l'étape 7.

    • Paramètre de filtre : si votre promotion utilise un filtre avec des paramètres d'espace réservé, entrez la valeur pour chaque paramètre afin de définir les critères du filtre. Pour utiliser plusieurs valeurs pour un paramètre, séparez chaque valeur par une virgule.

  10. Choisissez Get recommendations (Obtenir des recommandations). Un tableau contenant les 25 principaux éléments recommandés par l'utilisateur s'affiche. La colonne Article sponsorisé indique si l'article a été inclus en raison de votre promotion. Les articles sponsorisés sont positionnés de manière aléatoire par rapport aux autres articles recommandés, mais dans un ordre trié par rapport aux autres articles promus. En fonction de votre cas d'utilisation ou de votre recette, les articles recommandés qui ne font pas partie d'une promotion sont triés en fonction de leur pertinence pour l'utilisateur, de leur popularité ou de leur similitude. S'il n'y a pas assez d'articles répondant aux critères de promotion, le résultat contiendra autant d'articles sponsorisés que possible.

Articles de promotion (AWS CLI)

Le code suivant montre comment promouvoir des articles dans les recommandations à l'aide de la campagne AWS CLI et d'une campagne personnalisée. Pour promouvoir des articles à l'aide d'un recommandeur, remplacez le campaign-arn paramètre par un recommender-arn et spécifiez l'Amazon Resource Name (ARN) pour le recommandateur. Pour les champs de promotion, spécifiez les éléments suivants :

  • nom : Donnez un nom à la promotion. La réponse à la recommandation utilise le nom pour identifier les articles promus.

  • percent-promoted-items: pourcentage d'articles recommandés auxquels appliquer la promotion. Dans cet exemple, 50 % des articles seront des articles promus.

  • FilterArn : Spécifiez le nom de ressource Amazon (ARN) du filtre qui définit les critères de promotion. Pour plus d’informations, consultez Filtres de promotion.

  • noms et valeurs des paramètres : si votre expression de filtre comporte des paramètres, indiquez les noms des paramètres (en distinguant majuscules et minuscules) et les valeurs. Par exemple, si votre expression de filtre comporte un $GENRE paramètre, indiquez GENRE comme clé et un ou plusieurs genres, tels que Comédie, comme valeur. Séparez les valeurs multiples par une virgule. Lorsque vous utilisez le AWS CLI, pour chaque valeur, vous devez utiliser le / caractère pour éviter à la fois les guillemets et le / caractère. L'exemple de code suivant montre comment formater les valeurs.

Le code indique comment utiliser à la fois un filtre de demande et un filtre de promotion. Un filtre de promotion s'applique uniquement aux articles promus, tandis qu'un filtre de demande s'applique uniquement aux articles recommandés restants. Pour plus d’informations, consultez Filtres de promotion.

Pour plus d'informations sur les champs supplémentaires, reportez-vous Obtenir des recommandations d'articles (AWS SDK) aux sections etObtenir un classement personnalisé à l'aide de métadonnées contextuelles.

aws personalize-runtime get-recommendations \ --campaign-arn CampaignArn \ --user-id 1 \ --num-results 10 \ --filter-arn RequestFilterArn \ --filter-values '{ "RequestFilterParameterName": "\"value\"", "RequestFilterParameterName": "\"value1\",\"value2\",\"value3\"" }' \ --promotions "[{ \"name\": \"promotionName\", \"percentPromotedItems\": 50, \"filterArn\": \"PromotionFilterARN\", \"filterValues\": {\"PromotionParameterName\":\"\\\"value1, value2\\\"\"} }]"

La liste des éléments recommandés s'affiche. Les articles sponsorisés sont positionnés de manière aléatoire par rapport aux autres articles recommandés, mais dans un ordre trié par rapport aux autres articles promus. En fonction de votre recette, les articles recommandés qui ne font pas partie d'une promotion sont triés en fonction de leur pertinence pour l'utilisateur, de leur popularité ou de leur similitude. S'il n'y a pas assez d'articles répondant aux critères de promotion, le résultat contiendra autant d'articles sponsorisés que possible.

{ "itemList": [ { "itemId1": "123", "score": .0117211, "promotionName": "promotionName" }, { "itemId2": "456", "score": .0077976 }, { "itemId3": "789", "score": .0067171 }, ..... ]

Articles de promotion (AWS SDK)

Le code suivant montre comment promouvoir des éléments dans les recommandations à l'aide du SDK pour Python (Boto3) et du SDK pour Java 2.x et d'une campagne personnalisée. Pour promouvoir des articles à l'aide d'un recommandeur, remplacez le campaignArn paramètre par recommenderArn et spécifiez l'Amazon Resource Name (ARN) pour le recommandateur. Pour les champs de promotion, spécifiez les éléments suivants :

  • nom : Spécifiez le nom de la promotion. La réponse à la recommandation inclut le nom permettant d'identifier les articles promus.

  • percentPromotedItems: pourcentage d'articles recommandés auxquels appliquer la promotion.

  • PromotionFilterArn : nom de ressource Amazon (ARN) du filtre qui définit les critères de promotion. Pour plus d’informations, consultez Filtres de promotion.

  • Tous les noms et valeurs de paramètres : si votre expression de filtre comporte des paramètres, pour chaque paramètre de votre expression de filtre, indiquez le nom du paramètre (en distinguant majuscules et minuscules) et les valeurs. Par exemple, si votre expression de filtre comporte un $GENRE paramètre, "GENRE" indiquez-le comme clé et un ou plusieurs genres, tels que « \" Comédie "\ », comme valeur. Séparez les valeurs multiples par une virgule. Par exemple, "\"comedy\",\"drama\",\"horror"\".

Le code suivant montre comment utiliser à la fois un filtre de demande et un filtre de promotion. Un filtre de promotion s'applique uniquement aux articles promus, tandis qu'un filtre de demande s'applique uniquement aux articles recommandés restants. Pour plus d’informations, consultez Filtres de promotion.

Pour plus d'informations sur les champs supplémentaires, reportez-vous Obtenir des recommandations d'articles (AWS SDK) aux sections etObtenir un classement personnalisé à l'aide de métadonnées contextuelles.

SDK for Python (Boto3)
import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_recommendations( campaignArn = "CampaignARN", userId = '1', numResults = 10, filterArn = 'RequestFilterARN', filterValues = { "RequestFilterParameterName": "\"value1\"", "RequestFilterParameterName": "\"value1\",\"value2\",\"value3\"" .... }, promotions = [{ "name" : "promotionName", "percentPromotedItems" : 50, "filterArn": "promotionFilterARN", "filterValues": { "PromotionParameterName": "\"Value1\",\"Value2\"" ... } }] ) print("Recommended items") for item in response['itemList']: print (item['itemId']) if ("promotionName" in item): print(item['promotionName'])
SDK for Java 2.x
public static void getRecommendationsWithPromotedItems(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId, String requestFilterArn, String requestParameterName, String requestParameterValue1, String requestParameterValue2, String promotionName, int percentPromotedItems, String promotionFilterArn, String promotionParameterName, String promotionParameterValue1, String promotionParameterValue2) { try { Map<String, String> promotionFilterValues = new HashMap<>(); promotionFilterValues.put(promotionParameterName, String.format("\"%1$s\",\"%2$s\"", promotionParameterValue1, promotionParameterValue2)); Promotion newPromotion = Promotion.builder() .name(promotionName) .percentPromotedItems(percentPromotedItems) .filterArn(promotionFilterArn) .filterValues(promotionFilterValues) .build(); List<Promotion> promotionList = new List<>(); promotionsList.add(newPromotion); Map<String, String> requestfilterValues = new HashMap<>(); requestfilterValues.put(requestParameterName, String.format("\"%1$s\",\"%2$s\"", requestParameterValue1, requestParameterValue2)); GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .filterArn(requestFilterArn) .fitlerValues(requestFilterValues) .promotions(promotionList) .build(); GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient.getRecommendations(recommendationsRequest); List<PredictedItem> items = recommendationsResponse.itemList(); for (PredictedItem item: items) { System.out.println("Item Id is : "+item.itemId()); System.out.println("Item score is : "+item.score()); System.out.println("Promotion name is : "+item.promotionName()); } } catch (PersonalizeRuntimeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { GetRecommendationsCommand, PersonalizeRuntimeClient } from "@aws-sdk/client-personalize-runtime"; // create personalizeRuntimeClient. const personalizeRuntimeClient = new PersonalizeRuntimeClient({ region: "REGION", }); // set recommendation request param export const getRecommendationsParam = { campaignArn: "CAMPAIGN_ARN", /* required */ userId: "USER_ID", /* required */ numResults: 25, /* optional */ filterArn: "FILTER_ARN", /* provide if you are applying a custom filter */ filterValues: { "PARAM_NAME": "\"PARAM_VALUE\"" /* provide if your filter has a placeholder parameter */ }, promotions: [ { name: "PROMOTION_NAME", /* specify the name of the promotion. The recommendation response includes the name to identify promoted items. */ percentPromotedItems: 50, /* the percentage of recommended items to apply the promotion to. */ filterArn: "PROMOTION_FILTER_ARN", /* the Amazon Resource Name (ARN) of the filter that defines the promotion criteria. */ filterValues: { "PARAM_NAME": "\"PARAM_VALUE\"" /* provide if your promotion filter has a placeholder parameter */ }, }, ], }; export const run = async () => { try { const response = await personalizeRuntimeClient.send(new GetRecommendationsCommand(getRecommendationsParam)); console.log("Success!", "\nItems are: "); response.itemList.forEach(element => console.log(element.itemId)) return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

La liste des éléments recommandés s'affiche. Les articles sponsorisés sont positionnés de manière aléatoire par rapport aux autres articles recommandés, mais dans un ordre trié par rapport aux autres articles promus. En fonction de votre recette, les articles recommandés qui ne font pas partie d'une promotion sont triés en fonction de leur pertinence pour l'utilisateur, de leur popularité ou de leur similitude. S'il n'y a pas assez d'articles répondant aux critères de promotion, le résultat contiendra autant d'articles sponsorisés que possible.

{ "itemList": [ { "itemId1": "123", "score": .0117211, "promotionName": "promotionName" }, { "itemId2": "456", "score": .0077976 }, { "itemId3": "789", "score": .0067171 }, ..... ]