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

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

选择用于训练的交互数据

您可以在交互数据集中选择 Amazon Personalize 在创建解决方案版本(培训模型)时使用的事件。在训练前选择交互式数据,可以仅使用相关的数据子集进行训练,或者去除噪声以训练更优化的模型。有关交互式数据集的更多信息,请参阅数据集和架构交互式数据集

您可以按如下方式选择交互数据:

  • 根据类型选择记录— 在配置解决方案时,如果 Interact 数据集在 EVENT_TYPE 列中包含事件类型,则可以选择指定要在训练中使用的事件类型。例如,如果 “交互” 数据集包含购买单击, 和观看事件类型,并且您希望 Amazon Personalize 仅使用观看事件,当您配置解决方案时,您可以提供观看作为event type亚马逊在培训中使用的个性化设置。

    如果您的互动数据集在 EVENT_TYPE 列中具有多个事件类型,并且您在配置解决方案时未提供事件类型,则 Amazon Personalize 使用所有交互数据进行相同权重的训练,而不考虑类型。

  • 根据类型和值选择记录— 在配置解决方案时,如果交互数据集包含 EVENT_TYPE 和 EVENT_VALUE 字段,则可以将特定值设置为阈值,以便从训练中排除记录。例如,如果您的 Event_VALUE 数据的事件具有观看是用户观看的视频的百分比(如果将事件值阈值设置为 0.5,事件类型设置为观看,Amazon Personalize 仅使用观看具有大于等于 0.5 的 Event_value 的交互事件。

按事件值和事件类型筛选记录 (Amazon开发工具包)

在以下步骤中,您使用Amazon SDK for Python (Boto3) 创建一个用于筛选训练数据集的交互架构。您可以使用 Jupyter (iPython) 笔记本来完成相同的任务。有关更多信息,请参阅开始使用 Amazon Personalize API 与 JupiPython 笔记本电脑

先决条件:完成先决条件,并验证如中所述设置了您的 Python 环境。入门 (Amazon适用于 Python 的开发工具包)

按事件值或事件类型筛选训练数据集中使用的记录

  1. 创建交互模式并包含EVENT_TYPEEVENT_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 )
  2. 格式化您的输入数据以匹配您的架构。有关代码示例,请参阅格式化输入数据

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

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

  5. 获取当您创建解决方案时要使用的配方的 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"
  6. 调用 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'])
  7. 获得解决方案后,通过在 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 步:使用指标评估解决方案版本