本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
选择用于训练的物品交互数据
您可以在物品交互数据集中选择 Amazon Personalize 在创建解决方案版本(训练模型)时使用的事件。通过在训练之前选择物品交互数据,您可以只使用数据的相关子集进行训练,或者去除噪声来训练更优化的模型。有关物品交互数据集的更多信息,请参阅架构和物品交互数据集。
您可以按如下方式选择物品交互数据:
-
根据类型选择记录 - 配置解决方案时,如果您的物品交互数据集在 EVENT_TYPE 列中包含事件类型,则您可以选择指定要在训练中使用的事件类型。例如,如果您的物品交互数据集包括购买、单击和观看事件类型,并且您希望 Amazon Personalize 仅使用观看事件来训练模型,则在配置解决方案时,您需要提供观看作为 Amazon Personalize 在训练中使用的
event type
。如果您的物品交互数据集在 EVENT_TYPE 列中有多个事件类型,并且您在配置解决方案时未提供某个事件类型,则 Amazon Personalize 会使用所有物品交互数据进行训练,无论其类型如何,权重均相同。
-
根据类型和值选择记录 - 配置解决方案时,如果物品交互数据集包含 EVENT_TYPE 和 EVENT_VALUE 字段,则您可以将特定值设置为阈值,以从训练中排除记录。例如,如果 EVENT_TYPE 为观看 的事件的 EVENT_VALUE 数据是用户观看的视频的百分比,如果您将事件值阈值设置为 0.5,将事件类型设置为观看,则 Amazon Personalize 将仅使用 EVENT_VALUE 大于或等于 0.5 的观看 交互事件来训练模型。
按事件值和事件类型筛选记录 (Amazon SDK)
在以下步骤中,您使用Amazon SDK for Python (Boto3) 创建一个用于筛选训练数据集的交互架构。您可以使用 Jupyter (iPython) 笔记本来完成相同的任务。有关更多信息,请参阅开始通过 Jupyter (iPython) 笔记本使用 Amazon Personalize API。
先决条件:完成先决条件,并验证如入门 (SDK for Python (Boto3))中所述设置了您的 Python 环境。
按事件值或事件类型筛选训练数据集中使用的记录
-
使用
"name"
和"type"
键值对创建交互架构并包含EVENT_TYPE
和EVENT_VALUE
字段,如下所示。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 存储桶。
-
使用 CreateDatasetImportJob API 将您的数据导入 Amazon Personalize。请务必记录数据集组 Amazon 资源名称 (ARN),因为在创建解决方案时将需要它。有关代码示例,请参阅导入批量记录 (Amazon SDK)。
-
获取当您创建解决方案时要使用的配方的 ARN。在创建解决方案时,您将需要它。
# 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
参数中进行设置。您还可以同时指定事件类型和事件值。# 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 使用它来训练模型。
# 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
或其他超参数。有关更多信息,请参阅通过指标评估解决方案版本。