本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
User-Personalization 食谱
重要
我们建议使用用户个性化-v2 配方。通过更快的训练,它可以考虑多达 500 万个项目,并以更低的延迟生成更相关的建议。
用户个性化 (aws-user-personalization) 配方针对所有个性化推荐场景进行了优化。它可以预测用户最有可能与之互动的物品。您可以使用用户个性化为流媒体应用程序生成个性化电影推荐,或为零售应用程序生成个性化产品推荐。
通过用户个性化,Amazon Personalize 主要根据商品互动数据集中的用户商品互动数据生成推荐。它还可以使用您的 “项目” 和 “用户” 数据集中的任何项目和用户元数据。有关其使用的数据的更多信息,请参阅必需和可选数据集。
主题
配方特征
用户个性化在生成商品推荐时使用以下 Amazon Personalize 配方功能:
必需和可选数据集
要使用用户个性化,您必须创建项目交互数据集并导入至少 1000 个项目交互。Amazon Personalize 主要根据商品互动数据生成推荐。
通过用户个性化设置,Amazon Personalize 可以使用包含以下内容的商品互动数据:
-
事件类型和事件值数据 — Amazon Personalize 使用事件类型数据(例如点击或观看事件类型),通过用户行为中的任何模式来识别用户的意图和兴趣。此外,您还可以在训练前使用事件类型和事件值数据筛选记录。有关更多信息,请参阅 事件类型和事件值数据。
-
情境元数据-情境元数据是您在事件发生时在用户环境中收集的互动数据,例如他们的位置或设备类型。有关更多信息,请参阅 上下文元数据。
-
展示次数数据 — 展示量是用户在与特定商品互动(点击、观看、购买等)时可见的项目列表。有关更多信息,请参阅 展示数据。
以下数据集是可选的,可以改进建议:
属性和超参数
User-Personalization 食谱具有以下属性:
-
名称 –
aws-user-personalization
-
食谱 Amazon 资源名称 (ARN) —
arn:aws:personalize:::recipe/aws-user-personalization
-
算法 ARN —
arn:aws:personalize:::algorithm/aws-user-personalization
有关更多信息,请参阅 选择食谱。
下表描述了 User-Personalization 食谱的超参数。超参数 是一个算法参数,您可以调整该参数以提高模型性能。算法超参数控制模型的执行方式。特征化超参数控制如何筛选训练中使用的数据。为超参数选择最佳值的过程称为超参数优化 () HPO。有关更多信息,请参阅 超参数和 HPO。
该表为每个超参数提供以下信息:
-
范围:[上界, 下界]
-
值类型:Integer、Continuous(浮点数)、Categorical(布尔值、列表、字符串)
-
HPO可调节:参数可以参与吗?HPO
名称 | 描述 |
---|---|
算法超参数 | |
hidden_dimension |
模型中使用的隐藏变量的数量。隐藏变量 重新创建用户的购买历史记录和物品统计数据来生成排名分数。当物品交互数据集包含更复杂的模式时,请指定更多数量的隐藏维度。使用更多隐藏维度需要更大的数据集和更多的处理时间。要确定最佳值,请使用HPO。要使用HPO,请 默认值:149 范围:[32, 256] 值类型:整数 HPO可调的:是 |
bptt |
确定是否使用基于时间的反向传播技术。反向传播 是一种在基于递归神经网络的算法中更新权重的技术。将 默认值:32 范围:[2, 32] 值类型:整数 HPO可调的:是 |
recency_mask |
确定模型是否应考虑物品交互数据集中的最新流行趋势。最新流行趋势可能包括交互事件的基本模式的突然变化。要训练一个使最近事件具有更高权重的模型,请将 默认值: 范围: 值类型:布尔值 HPO可调的:是 |
特征化超参数 | |
min_user_history_length_percentile |
要包含在模型训练中的用户历史记录长度的最小百分位数。历史记录长度 是有关用户的数据总量。使用 例如,设置 默认值:0.0 范围:[0.0, 1.0] 值类型:浮点数 HPO可调的:否 |
max_user_history_length_percentile |
要包含在模型训练中的用户历史记录长度的最大百分位数。历史记录长度 是有关用户的数据总量。使用 例如,设置 默认值:0.99 范围:[0.0, 1.0] 值类型:浮点数 HPO可调的:否 |
物品浏览市场活动配置超参数 | |
exploration_weight |
确定建议包含物品交互数据较少或相关性较低的物品的频率。值越接近 1.0,浏览次数就越多。如果值为零,则表示没有浏览,建议基于当前数据(相关性)。有关更多信息,请参阅CampaignConfig。 默认值:0.3 范围:[0.0, 1.0] 值类型:浮点数 HPO可调的:否 |
exploration_item_age_cut_off |
指定自物品交互数据集中所有物品最近一次交互以来的最大物品使用期限(以天为单位)。这会根据物品使用期限定义物品浏览的范围。Amazon Personalize 根据物品的创建时间戳或物品交互数据(如果缺少创建时间戳数据)来确定物品使用期限。有关 Amazon Personalize 如何确定物品使用期限的更多信息,请参阅创建时间戳数据。 要增加 Amazon Personalize 在浏览期间考虑的物品数量,请输入更大的值。最小值为 1 天,默认值为 30 天。建议可能包括比您指定的物品使用期限截止时间更早的物品。这是因为这些物品与用户相关,而浏览并未识别出它们。 默认值:30.0 范围:正浮点数 值类型:浮点数 HPO可调的:否 |
使用 User-Personalization 食谱进行训练(控制台)
要使用 User-Personalization 食谱在控制台中生成建议,请先使用食谱训练新的解决方案版本。然后,使用解决方案版本部署市场活动并使用市场活动获取建议。
使用 User-Personalization 食谱训练新解决方案版本(控制台)
-
在https://console.aws.amazon.com/personalize/家
中打开 Amazon Personalize 控制台并登录您的账户。 -
使用新架构创建自定义数据集组,然后上传包含展示数据的数据集。(可选)在您的商品非结构化文本元数据数据集中包含 CREATION_ TIMESTAMP 和数据,这样 Amazon Personalize 就可以更准确地计算商品的使用年限并识别冷藏商品。
有关导入数据的更多信息,请参阅将训练数据导入 Amazon Personalize 数据集。
-
在数据集组页面上,选择包含一个或多个带有展示数据的数据集的新数据集组。
-
在导航窗格中,选择解决方案和食谱,然后选择创建解决方案。
-
在创建解决方案页面上,对于解决方案名称,输入新解决方案的名称。
-
对于解决方案类型,选择物品建议,为用户获取物品建议。
-
在 “食谱” 中,选择aws-user-personalization。这时,将显示解决方案配置部分,其中提供了几个配置选项。
-
在其他配置中,如果您的商品互动数据集有 EVENT _ TYPE 或同时有 EVENT _ TYPE 和 EVENT _ VALUE 列,则可以选择使用事件类型和事件值阈值字段来选择 Amazon Personalize 在训练模型时使用的商品互动数据。有关更多信息,请参阅 选择用于训练的物品交互数据。
-
(可选)为您的解决方案配置超参数。有关 User-Personalization 食谱属性和超参数的列表,请参阅属性和超参数。
-
选择创建并训练解决方案以开始训练。此时,将显示控制面板页面。
您可以导航到解决方案详情页面,在解决方案版本 部分跟踪训练进度。训练完成时,状态会变为活动。
创建市场活动并获取建议(控制台)
当您的解决方案版本状态为活动时,您就可以按如下方式创建市场活动并获得建议了:
-
在解决方案详细信息页面或市场活动 页面上,选择创建新的市场活动。
-
在创建新的市场活动页面上,对于市场活动详细信息,提供以下信息:
-
市场活动名称:输入市场活动的名称。您在此处输入的文本将显示在市场活动控制面板和详细信息页面上。
-
解决方案:选择您刚刚创建的解决方案。
-
解决方案版本 ID:选择您刚刚创建的解决方案版本 ID。
-
最低预调配每秒事务数:设置 Amazon Personalize 支持的最低预调配每秒事务数。有关更多信息,请参阅 CreateCampaign 操作。
-
-
对于活动配置,提供以下信息:
-
浏览权重:配置要浏览的程度,其中,建议包含的物品交互数据越少或相关性越低,您所指定的浏览频率就越高。值越接近 1,浏览次数就越多。如果值为零,则表示没有浏览,建议基于当前数据(相关性)。
-
浏览物品期限截止:输入自上次交互以来的最大物品期限(以天为单位),以定义物品浏览的范围。要增加 Amazon Personalize 在浏览期间考虑的物品数量,请输入更大的值。
例如,如果您输入 10,则在浏览期间仅考虑数据集中自最近一次交互以来 10 天内具有物品交互数据的物品。
注意
建议可能包括没有来自该时间范围之外的物品交互数据的物品。这是因为这些物品与用户兴趣相关,但不需要浏览识别它们。
-
-
选择创建市场活动。
-
在市场活动详细信息页面上,当市场活动状态变为活动 时,您可以使用市场活动来获取建议并记录展示量。有关更多信息,请参阅“入门”中的步骤 5:获得建议。
Amazon Personalize 会每两小时自动更新一次最新解决方案版本,以包含新数据。您的市场活动会自动使用更新的解决方案版本。有关更多信息,请参阅 自动更新。
要手动更新市场活动,请先使用控制台或 CreateSolutionVersion 操作创建和训练新的解决方案版本,并将
trainingMode
设置为update
。然后,在控制台的市场活动 页面或使用 UpdateCampaign 操作,手动更新市场活动。注意
Amazon Personalize 不会自动更新您在 2020 年 11 月 17 日之前创建的解决方案版本。
使用用户个性化配方进行训练 (PythonSDK)
当您创建了数据集组并上传了包含展示数据的数据集后,您可以使用 User-Personalization 食谱训练解决方案。(可选)在您的商品非结构化文本元数据数据集中包含 CREATION_ TIMESTAMP 和数据,这样 Amazon Personalize 就可以更准确地计算商品的使用年限并识别冷藏商品。有关创建数据集组和上传训练数据的更多信息,请参阅为 Amazon Personalize 架构创建架构JSON文件。
要使用用户个性化配方训练解决方案,请使用 Amazon SDK
-
使用
create_solution
方法创建新的解决方案。solution name
替换为您的解决方案dataset group arn
名称和数据集组的 Amazon 资源名称 (ARN)。import boto3 personalize = boto3.client('personalize') print('Creating solution') create_solution_response = personalize.create_solution(name = '
solution name
', recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', datasetGroupArn = 'dataset group arn
', ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)有关 aws-user-personalization 配方属性和超参数的列表,请参见属性和超参数。
-
使用更新的训练数据创建新的解决方案版本,并使用以下代码片段将
trainingMode
设置为FULL
。将solution arn
替换ARN为您的解决方案的。import boto3 personalize = boto3.client('personalize') create_solution_version_response = personalize.create_solution_version(solutionArn = '
solution arn
', trainingMode='FULL') new_solution_version_arn = create_solution_version_response['solutionVersionArn'] print('solution_version_arn:', new_solution_version_arn) -
当 Amazon Personalize 创建完解决方案版本后,使用以下参数创建市场活动:
-
提供新的
campaign name
及步骤 2 中生成的solution version arn
。 -
修改
explorationWeight
物品浏览配置超参数以配置要浏览的程度。值越接近 1.0,建议物品交互数据较少或相关性较低的物品的频率就越高。默认值为 0.3。 -
修改
explorationItemAgeCutOff
物品浏览配置超参数,以提供应浏览物品的最大持续时间(相对于最新交互的天数)。该值越大,浏览期间考虑的物品就越多。
使用以下 Python 片段创建新市场活动,其以浏览为重点,浏览截止日期为 30 天。创建市场活动通常需要几分钟,但也可能需要一个多小时。
import boto3 personalize = boto3.client('personalize') create_campaign_response = personalize.create_campaign( name = '
campaign name
', solutionVersionArn = 'solution version arn
', minProvisionedTPS = 1, campaignConfig = {"itemExplorationConfig": {"explorationWeight": "0.3
", "explorationItemAgeCutOff": "30
"}} ) campaign_arn = create_campaign_response['campaignArn'] print('campaign_arn:', campaign_arn)通过 User-Personalization,Amazon Personalize 每两小时自动更新一次解决方案版本,以包含新数据。您的市场活动会自动使用更新的解决方案版本。有关更多信息,请参阅 自动更新。
要手动更新市场活动,请先使用控制台或 CreateSolutionVersion 操作创建和训练新的解决方案版本,并将
trainingMode
设置为update
。然后,在控制台的市场活动 页面或使用 UpdateCampaign 操作,手动更新市场活动。注意
Amazon Personalize 不会自动更新您在 2020 年 11 月 17 日之前创建的解决方案版本。
-
获取推荐并记录展示次数(SDK适用于 Python (Boto3))
创建市场活动后,您可以使用它为用户获取建议并记录展示次数。有关使用获取批次推荐的信息 Amazon SDKs见创建批量推理作业 (Amazon SDKs)。
获取建议并记录展示次数
-
调用
get_recommendations
方法。将更改campaign arn
为ARN新广告系列的,更改user id
userId 为用户的。import boto3 rec_response = personalize_runtime.get_recommendations(campaignArn = '
campaign arn
', userId = 'user id
') print(rec_response['recommendationId']) -
创建用于发送 PutEvents 请求的新事件跟踪器。
event tracker name
替换为事件跟踪器的dataset group arn
名称和数据集组ARN的名称。import boto3 personalize = boto3.client('personalize') event_tracker_response = personalize.create_event_tracker( name = '
event tracker name
', datasetGroupArn = 'dataset group arn
' ) event_tracker_arn = event_tracker_response['eventTrackerArn'] event_tracking_id = event_tracker_response['trackingId'] print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id)) -
使用步骤 1 中的
recommendationId
和步骤 2 中的event tracking id
来创建新PutEvents
请求。此请求记录来自用户会话的新展示数据。将user id
更改为用户的 ID。import boto3 personalize_events.put_events( trackingId = '
event tracking id
', userId= 'user id
', sessionId = '1', eventList = [{ 'sentAt': datetime.now().timestamp(), 'eventType' : 'click', 'itemId' : rec_response['itemList'][0]['itemId'], 'recommendationId': rec_response['recommendationId
'], 'impression': [item['itemId'] for item in rec_response['itemList']], }] )
示例 Jupyter 笔记本
有关展示如何使用 User-Personalization 食谱的示例 Jupyter 笔记本,请参阅具有浏览的 User Personalization