本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
选择用于训练的交互数据
您可以在交互数据集中选择 Amazon Personalize 在创建解决方案版本(训练模型)时使用的事件。如果在训练前选择交互数据,您可以仅使用相关的数据子集进行训练,或者去除噪声以训练更优化的模型。有关交互数据集的更多信息,请参阅数据集和架构和交互数据.
您可以按如下方式选择交互数据:
-
根据类型选择记录— 配置解决方案时,如果交互数据集在 EVENT_TYPE 列中包含事件类型,则可以选择指定要在训练中使用的事件类型。例如,如果您的交互数据集包括购买、点击, 和看事件类型,并且您希望 Amazon Personalize 化只能训练模型看事件,当你配置解决方案时,你将提供看作为
event type
Amazon Personalize 化在培训中使用的。如果您的互动数据集在一个 EVENT_TYPE 列中有多种事件类型,并且您在配置解决方案时没有提供事件类型,则 Amazon Personalize 会使用所有互动数据进行培训,而不论类型如何,均具有相同权重
-
根据类型和值选择记录— 配置解决方案时,如果交互数据集包含 EVENT_TYPE 和 EVENT_VALUE 字段,则可以将特定值设置为阈值,以便将记录排除在训练之外。例如,如果事件的 EVENT_VALUE 数据的 EVENT_TYPE 为看是用户观看的视频的百分比,如果将事件值阈值设置为 0.5,事件类型为看,Amazon Personalize 化仅使用模型训练看具有大于或等于 0.5 的事件 EVENT_VALUE 的交互事件。
按事件值和事件类型筛选记录 (Amazon开发工具包
在以下步骤中,您使用Amazon SDK for Python (Boto3) 创建一个用于筛选训练数据集的交互架构。您可以使用 Jupyter (iPython) 笔记本来完成相同的任务。有关更多信息,请参阅 开始在 Jupyter (IPython) 笔记本电脑上使用Amazon Personalize API。
先决条件:完成先决条件,并验证如中所述设置了您的 Python 环境。入门(SDK for Python (Boto3)).
按事件值或事件类型筛选训练数据集中使用的记录
-
创建交互模式并包含
EVENT_TYPE
和EVENT_VALUE
字段使用"name"
和"type"
如图所示,键值对。import boto3 import json personalize = boto3.client('personalize') # Create a name for your schema schema_name = '
YourSchemaName
' # Define the schema for your dataset schema = { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_VALUE", "type": "float" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" } # Create the schema for Amazon Personalize create_schema_response = personalize.create_schema( name = schema_name, schema = json.dumps(schema) ) #To get the schema ARN, use the following lines schema_arn = create_schema_response['schemaArn'] print('Schema ARN:' + schema_arn ) -
格式化您的输入数据以匹配您的架构。有关代码示例,请参阅格式化输入数据。
-
将数据上传到 Amazon Simple Storage Service (Amazon S3) 存储桶 有关代码示例,请参阅上载到 Amazon S3 存储桶。
-
Amazon PersonalizeCreateDatasetImportJobAPI。请务必记录数据集组 Amazon 资源名称 (ARN),因为在创建解决方案时将需要它。有关代码示例,请参阅导入批量记录 (AmazonSDK)。
-
获取当您创建解决方案时要使用的配方的 ARN。在创建解决方案时,您将需要它。
import boto3 personalize = boto3.client('personalize') # Display the ARNs of the recipes recipe_list = personalize.list_recipes() for recipe in recipe_list['recipes']: print(recipe['recipeArn']) # Store the ARN of the recipe that you want to use recipe_arn = "arn:aws:personalize:::recipe/
aws-recipe-name
" -
调用 CreateSolution API。如果您要指定事件类型(例如)
“purchase”
,将其设置在eventType
参数。如果您要指定事件值(例如10
),请在eventValueThreshold
参数中进行设置。您还可以同时指定事件类型和事件值。import boto3 personalize = boto3.client('personalize') # Create the solution create_solution_response = personalize.create_solution( name = "your-solution-name", datasetGroupArn =
dataset_group_arn
, recipeArn =recipe_arn
, eventType = 'watched', solutionConfig = { "eventValueThreshold": "0.5" } ) # Store the solution ARN solution_arn = create_solution_response['solutionArn'] # Use the solution ARN to get the solution status solution_description = personalize.describe_solution(solutionArn = solution_arn)['solution'] print('Solution status: ' + solution_description['status']) -
获得解决方案后,通过在 CreateSolutionVersion 请求中指定其解决方案 ARN 使用它来训练模型。
import boto3 personalize = boto3.client('personalize') # Create a solution version create_solution_version_response = personalize.create_solution_version(solutionArn =
solution_arn
) # Store the solution version ARN solution_version_arn = create_solution_version_response['solutionVersionArn'] # Use the solution version ARN to get the solution version status. solution_version_description = personalize.describe_solution_version( solutionVersionArn = solution_version_arn)['solutionVersion'] print('Solution version status: ' + solution_version_description['status'])
当状态为 ACTIVE
时,训练完成。有关更多信息,请参阅 创建解决方案。
训练模型后,您应评估其性能。要优化您的模型,您可能希望调整 eventValueThreshold
或其他超参数。有关更多信息,请参阅第 4 步:使用指标评估解决方案版本。