レコメンデーション内のアイテムのプロモーション (カスタムデータセットグループ) - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

レコメンデーション内のアイテムのプロモーション (カスタムデータセットグループ)

USER_PERSONALIZATION、、人気のアイテムRELATED_ITEMSまたはレシピを使用すると、おすすめ商品を受け取ったときにプロモーションを指定できます。プロモーションは、推奨項目の設定可能なサブセットに適用される追加のビジネスルールを定義します。たとえば、ストリーミングアプリを使用していて、自分の番組や映画を宣伝したいだけでなく、関連するタイトルも推奨したい場合があります。プロモーションを利用して、推奨商品の一定割合が社内のカテゴリーからのものでなければならないことを指定できます。残りのおすすめアイテムは引き続き、レシピやリクエストフィルターに基づいた関連性の高いおすすめになります。

プロモーションを適用するには、レコメンデーションリクエストで以下を指定します。

  • プロモーションを適用するおすすめ商品の割合。

  • プロモーション基準を指定するフィルター。詳細については、「プロモーションフィルター」を参照してください。

レコメンデーションのレスポンスでは、プロモートされたアイテムは他のレコメンデーションアイテムと比べてランダムに配置されますが、他のプロモートアイテムと比べるとソートされた順序になります。レシピに応じて、プロモーションに含まれていないおすすめ商品は、ユーザーとの関連性、人気度、類似度でソートされます。プロモーション基準を満たすアイテムが十分でない場合、結果にはできるだけ多くのプロモーションアイテムが含まれます。

Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、またはAWS SDK を使用してレコメンデーションにプロモーションを適用できます。

プロモーションフィルター

レコメンデーションリクエストにプロモーションを適用するときは、プロモーション基準を指定するフィルターを選択します。既存のフィルターを使用するか、新しいフィルターを作成できます。プロモーション用のフィルターは、Amazon Personalize の他のフィルターと同様に作成して管理します。フィルターの作成および管理の詳細については、「」を参照してください結果のフィルタ処理

プロモーションフィルターとプロモーション外で選択したフィルター (リクエストフィルター) の唯一の違いは、Amazon Personalize がそれらをどのように適用するかです。プロモーションフィルターはプロモーションされたアイテムにのみ適用され、リクエストフィルターは残りの推奨アイテムにのみ適用されます。リクエストフィルターとプロモーションフィルターを指定し、両方のフィルターをプロモートアイテムに適用する場合、プロモーションフィルターの式に両方の表現を含める必要があります。2 つの式を組み合わせる方法は、使用するデータセットによって異なります。フィルター式およびそのルール、「」を参照してください。また、「」を参照してくださいフィルタ式

フィルター式の例

次の式は、「企業」カテゴリのアイテムのみを含みます。自分のコンテンツをレコメンデーションで宣伝したい場合は、この表現を使うとよいでしょう。

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

次の式は、指定したタイムスタンプより前に作成されたアイテムのみを含みます。この表現を使って、最近作成した商品を宣伝することもできます。

INCLUDE ItemID WHERE Items.CREATION_TIMESTAMP < $DATE

次の式は、プロモーションアイテムにリクエストフィルターを適用する方法を示しています。プロモーションアイテムとして入手可能な衣料品のみが含まれます。このシナリオでは、Items.AVAILABLE IN ("True")リクエストフィルターの式にもが使用されるため、すべてのレコメンデーションは入手可能なアイテムを対象としています。

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

フィルターの例の詳細なリストについては、「」を参照してくださいフィルター式の例

アイテムのプロモーション (コンソール)

Amazon Personalize コンソールでレコメンデーションの特定のアイテムのプロモーションを行うには、フィルターを作成して、レコメンデーションのリクエストでプロモーションの詳細を指定します。他のフィールドについては、「」を参照してくださいレコメンデーションの取得 (コンソール)

おすすめ商品を宣伝するため
  1. https://console.aws.amazon.com/personalize/home で Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. 使用しているキャンペーンを含むデータセットグループを選択します。

  3. プロモーション基準を指定するフィルターを作成します (まだ作成していない場合)。プロモーション用のフィルターは、リクエストフィルターを作成するのと同じ方法で作成します。フィルタの作成と管理については、を参照してください結果のフィルタ処理

  4. ナビゲーションペインで、[キャンペーン] を選択します。

  5. [Campaigns] (キャンペーン) ページで、ターゲットキャンペーンを選択します。

  6. [Test campaign results] (キャンペーンの結果をテスト) で、使用したレシピに基づいたレコメンデーションのリクエストの詳細を入力します。USER PERSONALIZATION レシピについては、レコメンデーションを取得するユーザーの [User ID] (ユーザー ID) を入力します。RELATED_ITEMS レシピについては、Amazon Personalize で類似アイテムを判別するために使用するアイテムの[Item ID] (アイテム ID) を入力します。

  7. オプションで、リクエストのフィルターを選択します。このフィルターは、プロモーションされていない商品にのみ適用されます。フィルタの作成と管理については、を参照してください結果のフィルタ処理

  8. キャンペーンでコンテキストメタデータを使用している場合は、コンテキストデータを入力します。コンテキストごとに、キーにメタデータフィールドを入力しますValue にはコンテキストデータを入力します。詳細については、「コンテキストメタデータを使用したレコメンデーションの関連性の向上」を参照してください。

  9. プロモーションには以下を指定してください

    • プロモーション対象アイテムの割合:プロモーションを適用する推奨アイテムの割合を入力します。

    • フィルター:プロモーション基準を指定するフィルターを選択します。このフィルターは、手順 7 で指定したリクエストフィルターの代わりにプロモートされたアイテムに適用されます。

    • フィルターパラメータ:プレースホルダーパラメータとともにフィルターを使用している場合は、各パラメータに値を入力して、フィルター基準を設定します。1 つのパラメータに複数の値を使用するには、各値をコンマで区切ります。

  10. [Get recommendations] (レコメンデーションの取得) を選択します。ユーザーの上位 25 個の推奨アイテムを含むテーブルが表示されます。プロモーション対象商品列には、その商品がプロモーションの対象となったかどうかが表示されます。プロモートアイテムは、他のおすすめアイテムと比較してランダムに配置されますが、他のプロモートアイテムと比べてソートされた順序になります。レシピに応じて、プロモーションに含まれていないおすすめ商品は、ユーザーとの関連性、人気度、類似度でソートされます。プロモーション基準を満たすアイテムが十分でない場合、結果にはできるだけ多くのプロモーションアイテムが含まれます。

プロモーションアイテム (AWS CLI)

次のコードは、「」を参照してください。レコメンデーション内のアイテムのプロモーションを行う方法を示していますAWS CLI。プロモーションフィールドには、以下を指定します。

  • 名前:プロモーションに名前を付けます。レコメンデーションレスポンスでは、名前を使用してプロモートアイテムが識別されます。

  • percent-promoted-items: プロモーションを適用するおすすめ商品の割合。この例では、商品の 50% が昇格アイテムになります。

  • filterARN: プロモーション基準を定義するフィルターの Amazon リソースネーム (ARN) を指定します。詳細については、「プロモーションフィルター」を参照してください。

  • パラメータの名前と値:フィルター式にパラメータがある場合は、パラメータ名 (大文字と小文字が区別されます) と値を指定します。例えば、$GENREフィルター式にパラメータがある場合は、キーとして GENRE を指定し、値として 1 つまたは複数のジャンル (Comedy など) を指定します。複数の値はコンマで区切ります。を使用する場合、各値についてAWS CLI、//引用符と文字の両方をエスケープする文字を使用する必要があります。次のコードサンプルは、値をフォーマットする方法を示しています。

以下のコードは、リクエストフィルターとプロモーションフィルターの両方を使用する方法を示しています。プロモーションフィルターはプロモーションされたアイテムにのみ適用され、リクエストフィルターは残りの推奨アイテムにのみ適用されます。詳細については、「プロモーションフィルター」を参照してください。

その他のフィールドについては、「」レコメンデーションの取得 (AWS SDK) と「」を参照してくださいコンテキストメタデータを使用した、パーソナライズされたランキングの取得 (AWS Python SDK)

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\\\"\"} }]"

推奨アイテムのリストが表示されます。プロモートアイテムは、他のおすすめアイテムと比較してランダムに配置されますが、他のプロモートアイテムと比べてソートされた順序になります。レシピに応じて、プロモーションに含まれていないおすすめ商品は、ユーザーとの関連性、人気度、類似度でソートされます。プロモーション基準を満たすアイテムが十分でない場合、結果にはできるだけ多くのプロモーションアイテムが含まれます。

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

プロモーションアイテム (AWSSDK)

次のコードは、SDK for (Boto3) と SDK for Java 2.x を使用してレコメンデーション内のアイテムのプロモーションを行う方法を示しています。プロモーションフィールドには、以下を指定します。

  • 名前:プロモーションの名前を指定します。レコメンデーションレスポンスには、プロモートアイテムを識別するための名前が含まれます。

  • percentPromotedItems: プロモーションを適用するおすすめ商品の割合。

  • プロモーションフィルターARN: プロモーション基準を定義するフィルターの Amazon リソースネーム (ARN)。詳細については、「プロモーションフィルター」を参照してください。

  • 任意のパラメータの名前と値:フィルター式にパラメータがある場合は、フィルター式の各パラメータについて、パラメータ名 (大文字と小文字が区別されます) と値を指定します。例えば、$GENREフィルター式にパラメータがある場合は、キーを指定し、"GENRE"値として 1 つまたは複数のジャンル (「\" Comedy "\」など) を指定します。複数の値はコンマで区切ります。例えば、"\"comedy\",\"drama\",\"horror"\"

以下のコードは、リクエストフィルターとプロモーションフィルターの両方を使用する方法を示しています。プロモーションフィルターはプロモーションされたアイテムにのみ適用され、リクエストフィルターは残りの推奨アイテムにのみ適用されます。詳細については、「プロモーションフィルター」を参照してください。

その他のフィールドについては、「」レコメンデーションの取得 (AWS SDK) と「」を参照してくださいコンテキストメタデータを使用した、パーソナライズされたランキングの取得 (AWS Python SDK)

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); } }

推奨アイテムのリストが表示されます。プロモートアイテムは、他のおすすめアイテムと比較してランダムに配置されますが、他のプロモートアイテムと比べてソートされた順序になります。レシピに応じて、プロモーションに含まれていないおすすめ商品は、ユーザーとの関連性、人気度、類似度でソートされます。プロモーション基準を満たすアイテムが十分でない場合、結果にはできるだけ多くのプロモーションアイテムが含まれます。

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