選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

在即時建議中提升項目 - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在即時建議中提升項目

透過所有網域使用案例和一些自訂配方,您可以在取得即時建議時指定提升。

提升定義適用於建議項目可設定子集的其他業務規則。例如,您可能有一個串流應用程式,並想要提升自己的節目和電影,但也建議相關的標題。您可以使用提升來指定建議項目的特定百分比必須來自內部類別。根據您的配方和任何請求篩選條件,剩餘的建議項目將繼續是相關建議。

若要套用提升,請在建議請求中指定下列項目:

  • 套用提升篩選條件的建議項目百分比。

  • 指定提升條件的篩選條件。如需詳細資訊,請參閱提升篩選條件

在建議回應中,已提升項目會相對於其他建議項目隨機放置,但會相對於其他提升項目依排序排列。根據您的配方,不屬於提升一部分的建議項目會依與使用者、熱門程度或類似性的相關性排序。如果沒有足夠的項目符合提升條件,結果將包含盡可能多的提升項目。

您可以使用 Amazon Personalize 主控台 AWS Command Line Interface (AWS CLI) 或 AWS SDKs將提升套用至建議。

支援促銷的使用案例和配方

所有使用案例都支援促銷。下列自訂配方支援促銷:

提升篩選條件

當您將提升套用至建議請求時,您可以選擇指定提升條件的篩選條件。您可以使用現有的篩選條件或建立新的篩選條件。您可以像在 Amazon Personalize 中建立和管理其他篩選條件一樣,為促銷建立和管理篩選條件。如需建立和管理篩選條件的相關資訊,請參閱 篩選結果

提升篩選條件與您在提升範圍外選擇的篩選條件 (請求篩選條件) 之間的唯一差異,在於 Amazon Personalize 如何套用它們。提升篩選條件僅適用於提升的項目,而請求篩選條件僅適用於其餘建議的項目。如果您指定請求篩選條件和提升篩選條件,且想要將兩個篩選條件套用到提升的項目,則提升篩選條件的表達式必須包含兩個表達式。合併兩個表達式的方式取決於您使用的資料集。如需篩選條件表達式、其規則以及如何建立它們的詳細資訊,請參閱篩選條件表達式

篩選條件表達式範例

下列表達式僅包含來自「內部」類別的項目。如果您想要在建議中提升自己的內容,則可以使用此表達式。

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")

如需更完整的篩選條件範例清單,請參閱篩選條件表達式範例

提升新項目

如果您使用 User-Personalization-v2配方,Amazon Personalize 會向使用者建議最相關的項目,並更頻繁地建議使用具有互動資料的現有項目。為了確保建議包含一些新項目,您可以套用提升來建議請求,其中包含根據建立時間戳記的項目。

如果您尚未使用提升,您的篩選條件表達式可以提升在特定日期之後建立的項目:

INCLUDE ItemID WHERE Items.CREATION_TIMESTAMP > $DATE

如果您已使用提升,您可以建立同時鏈結提升和新項目條件陳述式的表達式:

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

提升項目 (主控台)

若要使用 Amazon Personalize 主控台提升建議中的特定項目,請建立篩選條件,然後在建議請求中提供提升詳細資訊。如需其他欄位的資訊,請參閱 取得項目建議 (主控台)

在建議中提升項目
  1. https://console.aws.amazon.com/personalize/home:// 開啟 Amazon Personalize 主控台並登入您的帳戶。

  2. 選擇包含您正在使用之行銷活動或建議程式的資料集群組。

  3. 如果您尚未建立篩選條件,請建立指定提升條件的篩選條件。您建立促銷篩選條件的方式與建立請求篩選條件的方式相同。如需建立和管理篩選條件的資訊,請參閱 篩選結果

  4. 在導覽窗格中,選擇建議者行銷活動

  5. 選擇目標行銷活動或推薦者。

  6. 對於行銷活動,在測試行銷活動結果下,根據您使用的配方輸入您的建議請求詳細資訊。針對建議者,選擇測試建議者,然後輸入您的建議請求詳細資訊。

  7. 選擇性地選擇請求的篩選條件。此篩選條件僅適用於非提升的項目。如需建立和管理篩選條件的資訊,請參閱 篩選結果

  8. 如果您使用內容中繼資料,請提供每個內容的資料。針對每個內容,針對金鑰輸入中繼資料欄位。針對,輸入內容資料。如需詳細資訊,請參閱提高與內容中繼資料的建議相關性

  9. 針對提升,請指定下列項目:

    • 提升項目百分比:輸入要套用提升的建議項目百分比。

    • 篩選條件:選擇指定提升條件的篩選條件。此篩選條件適用於提升的項目,而不是您在步驟 7 中指定的任何請求篩選條件。

    • 篩選條件參數:如果您的提升使用具有預留位置參數的篩選條件,請針對每個參數輸入值以設定篩選條件。若要對一個參數使用多個值,請以逗號分隔每個值。

  10. 選擇 Get recommendations (取得建議)。顯示包含使用者前 25 個建議項目的資料表。提升項目欄指出項目是否因為您的提升而包含。已提升的項目會相對於其他建議項目隨機放置,但會相對於其他提升的項目依排序排列。根據您的使用案例或配方,不屬於提升一部分的建議項目會依與使用者、熱門程度或類似性的相關性排序。如果沒有足夠的項目符合提升條件,結果將包含盡可能多的提升項目。

提升項目 (AWS CLI)

下列程式碼說明如何使用 AWS CLI 和自訂行銷活動提升建議中的項目。若要使用建議程式提升項目,請將 campaign-arn 參數取代為 ,recommender-arn並指定建議程式的 Amazon Resource Name (ARN)。針對提升欄位,指定下列項目:

  • name:為提升提供名稱。建議回應使用 名稱來識別提升的項目。

  • percent-promoted-items:要套用提升的建議項目百分比。在此範例中,50% 的項目會提升。

  • filterArn:指定定義提升條件之篩選條件的 Amazon Resource Name (ARN)。如需詳細資訊,請參閱提升篩選條件

  • 參數名稱和值:如果您的篩選條件表達式有任何參數,請提供參數名稱 (區分大小寫) 和值。例如,如果您的篩選條件表達式有 $GENRE 參數,請提供 GENRE 做為索引鍵,並提供類型或類型,例如 Comedy,做為值。使用逗號分隔多個值。當您使用 時 AWS CLI,對於每個值,您必須使用 / 字元來逸出引號和/字元。下列程式碼範例示範如何格式化值。

此程式碼說明如何同時使用請求篩選條件和提升篩選條件。提升篩選條件僅適用於提升的項目,而請求篩選條件僅適用於其餘建議的項目。如需詳細資訊,請參閱提升篩選條件

如需其他欄位的資訊,請參閱 取得項目建議AWS SDKs)使用內容中繼資料取得個人化排名

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 }, ..... ]

提升項目AWS SDKs)

下列程式碼說明如何使用適用於 Python 的 SDK (Boto3) 和適用於 Java 的 SDK 2.x 和自訂行銷活動,提升建議中的項目。若要使用建議程式提升項目,請將 campaignArn 參數取代為 ,recommenderArn並為建議程式指定 Amazon Resource Name (ARN)。針對提升欄位,指定下列項目:

  • name:指定提升的名稱。建議回應包含識別提升項目的名稱。

  • percentPromotedItems:要套用提升的建議項目百分比。

  • promotionFilterARN:定義提升條件之篩選條件的 Amazon Resource Name (ARN)。如需詳細資訊,請參閱提升篩選條件

  • 任何參數名稱和值:如果您的篩選條件表達式有任何參數,請為篩選條件表達式中的每個參數提供參數名稱 (區分大小寫) 和值。例如,如果您的篩選條件表達式有 $GENRE 參數,請提供 "GENRE"做為索引鍵,而類型或類型,例如 "\"Comedy"\" 做為值。使用逗號分隔多個值。例如:"\"comedy\",\"drama\",\"horror"\"

下列程式碼說明如何同時使用請求篩選條件和提升篩選條件。提升篩選條件僅適用於提升的項目,而請求篩選條件僅適用於其餘建議的項目。如需詳細資訊,請參閱提升篩選條件

如需其他欄位的資訊,請參閱 取得項目建議AWS SDKs)使用內容中繼資料取得個人化排名

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<>(); promotionList.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();
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'])

此時會顯示建議項目清單。已提升項目會隨機放置到相對於其他建議項目的位置,但會依照相對於其他提升項目的排序。根據您的配方,不屬於提升一部分的建議項目會依與使用者、熱門程度或類似性的相關性排序。如果沒有足夠的項目符合提升條件,結果將包含盡可能多的提升項目。

{ "itemList": [ { "itemId1": "123", "score": .0117211, "promotionName": "promotionName" }, { "itemId2": "456", "score": .0077976 }, { "itemId3": "789", "score": .0067171 }, ..... ]
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。