选择用于训练的物品交互数据 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

选择用于训练的物品交互数据

您可以在物品交互数据集中选择 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 环境。

按事件值或事件类型筛选训练数据集中使用的记录
  1. 使用 "name""type" 键值对创建交互架构并包含 EVENT_TYPEEVENT_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 )
  2. 格式化您的输入数据以匹配您的架构。有关代码示例,请参阅数据格式指南

  3. 将数据上传到 Amazon Simple Storage Service (Amazon S3) 存储桶。有关代码示例,请参阅上传到 Amazon S3 存储桶

  4. 使用 CreateDatasetImportJob API 将您的数据导入 Amazon Personalize。请务必记录数据集组 Amazon 资源名称 (ARN),因为在创建解决方案时将需要它。有关代码示例,请参阅导入批量记录 (Amazon SDK)

  5. 获取当您创建解决方案时要使用的配方的 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"
  6. 调用 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'])
  7. 获得解决方案后,通过在 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 或其他超参数。有关更多信息,请参阅通过指标评估解决方案版本