获得个性化排名 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

获得个性化排名

个性化排名是为特定用户重新排名的推荐项目的列表。要获得个性化排名,请调用GetPersonalizedRankingAPI 操作或从控制台中的市场活动中获取推荐。

注意

必须已使用 PERSONALIZED_RANKING 类型的配方创建支持市场活动的解决方案。有关更多信息,请参阅 第 1 步:选择配方

个性化排名评分的工作原理

GetRecommendations 操作返回的分数相似, GetPersonalizedRanking 分数总和为 1,但由于所考虑项目的列表比您的完整项目数据集小得多,因此推荐分数往往更高。

在数学上,GetPersonalizedRanking 的评分函数与 GetRecommendations 相同,但它只考虑输入项目。这意味着分数接近 1 的可能性更高,因为将分数进行划分的其他选择更少:

获取个性化排名(控制台)

要从 Amazon 个性化控制台获取用户的个性化排名,请选择您正在使用的广告活动,然后提供他们的用户 ID,指定您希望为该用户排名的项目列表,可选择筛选器,并根据需要提供任何上下文数据。

获得用户个性化排名

  1. 从打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home并登录您的账户。

  2. 选择包含正在使用的市场活动的数据集组。

  3. 在导航窗格中,选择 Campaigns (活动)

  4. 在存储库的活动页面上,选择目标广告活动。

  5. UNDER测试活动结果中,输入User ID (用户 ID)对于要获得其建议的用户。

  6. 适用于Item Item Id中,输入要为用户排名的项目列表。

  7. (可选)选择筛选器。有关更多信息,请参阅 筛选建议

  8. 如果您的广告活动使用上下文元数据(有关要求,请参阅使用上下文元数据提高建议相关性)可以选择提供上下文数据。

    对于每个上下文,对于密钥中,输入元数据字段,然后对于中,输入上下文数据。

  9. 选择获取个性化商品排名。此时将显示一个表格,其中包含按用户预测兴趣顺序排列的项目。

获得个性化排名 (Amazon CLI)

使用以下get-personalized-ranking命令可获得个性化排名Amazon CLI。指定广告活动的亚马逊资源名称 (ARN)、用户的用户 ID,并为要为用户排名的商品提供商品 ID 列表(每个商品以空格分隔)。要排名的项目必须位于用于训练解决方案版本的数据中。此时将显示已排名的建议的列表。Amazon Personalize 会考虑用户最感兴趣的列表中的第一个项目。

aws personalize-runtime get-personalized-ranking \ --campaign-arn Campaign ARN \ --user-id 12 \ --input-list 3 4 10 8 12 7

获得个性化排名 (Amazon开发工具包)

以下代码演示如何使用Amazon SDK for Python (Boto3)或者Amazon SDK for Java 2.x。

SDK for Python (Boto3)

使用以下get_personalized_ranking方法使用适用于 Python 的开发工具包 (Boto3) 获取个性化排名。更改的值userIdinputList设置为用户 ID 及项目 ID 列表。项目 ID 必须位于用于训练解决方案版本的数据中。这将显示已排名的推荐的列表。Amazon Personalize 会考虑用户最感兴趣的列表中的第一个项目。

import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_personalized_ranking( campaignArn = "Campaign arn", userId = "UserID", inputList = ['ItemID1','ItemID2'] ) print("Personalized Ranking") for item in response['personalizedRanking']: print (item['itemId'])
SDK for Java 2.x

使用以下getRankedRecs方法使用 SDK for Java 2.x 获取个性化排名。传递以下参数:Amazon Personalize 运行时客户端、广告活动的亚马逊资源名称 (ARN)、用户的用户 ID 以及要为用户排名的商品 ID 列表。项目 ID 必须位于用于训练解决方案的数据中。该方法返回从最相关到最不相关的推荐项目列表。

public static List<PredictedItem> getRankedRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId, ArrayList<String> items) { try { GetPersonalizedRankingRequest rankingRecommendationsRequest = GetPersonalizedRankingRequest.builder() .campaignArn(campaignArn) .userId(userId) .inputList(items) .build(); GetPersonalizedRankingResponse recommendationsResponse = personalizeRuntimeClient.getPersonalizedRanking(rankingRecommendationsRequest); List<PredictedItem> rankedItems = recommendationsResponse.personalizedRanking(); int rank = 1; for (PredictedItem item : rankedItems) { System.out.println("Item ranked at position " + rank + " details"); System.out.println("Item Id is : " + item.itemId()); System.out.println("Item score is : " + item.score()); System.out.println("---------------------------------------------"); rank++; } return rankedItems; } catch (PersonalizeRuntimeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null; }

通过上下文元数据获得个性化排名(AmazonPython 开发工具包)

使用以下代码,根据上下文元数据获取个性化排名。适用于context,为每个键值对提供元数据字段作为键,并提供上下文数据作为值。在下面的示例代码中,关键是DEVICE,值为mobile phone。替换这些值和Campaign ARNUser ID与您自己的值。同时更改inputList添加到用于训练解决方案的数据中的项目 ID 列表。Amazon Personalize 会考虑用户最感兴趣的列表中的第一个项目。

import boto3 personalizeRt = boto3.client('personalize-runtime') response = personalizeRt.get_personalized_ranking( campaignArn = "Campaign ARN", userId = "User ID", inputList = ['ItemID1', 'ItemID2'], context = { 'DEVICE': 'mobile phone' } ) print("Personalized Ranking") for item in response['personalizedRanking']: print(item['itemId'])

个性化排名示例笔记本

有关演示如何使用个性化排名配方的 Jupyter 笔记本示例,请参阅Personalize 排名示例