创建解决方案 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建解决方案

您可以使用 Amazon Personalize 控制台、Amazon Command Line Interface(Amazon CLI)或 Amazon SDK 创建自定义解决方案。下面包括使用 Amazon Personalize 控制台创建解决方案的详细步骤,还包括了代码示例,用于演示如何创建仅包含必需字段的解决方案。

创建解决方案(控制台)

重要

默认情况下,所有新解决方案都使用自动训练。如果使用自动训练,则在解决方案处于活动状态时,就会产生训练费用。为避免产生不必要的费用,在完成后,可以更新解决方案以关闭自动训练。有关训练费用的信息,请参阅 Amazon Personalize 定价

要在控制台中创建解决方案,请选择您的数据集组,然后指定解决方案名称、配方和可选的训练配置。

配置解决方案(控制台)
  1. 打开 Amazon Personalize 控制台(网址为 https://console.aws.amazon.com/personalize/home),并登录您的账户。

  2. 数据集组页面,选择您的数据集组。

  3. 概览页面上,对于步骤 3,执行以下任一操作:

    • 如果您创建了域数据集组,请选择使用自定义资源,然后选择创建解决方案

    • 如果您创建了自定义数据集组,则选择创建解决方案

  4. 对于解决方案名称,为您的解决方案指定名称。

  5. 对于解决方案类型,选择要创建的解决方案类型。您选择的类型决定了可用的配方。

    • 选择物品建议,以便为用户获取物品建议。例如,个性化的电影建议。

    • 选择操作建议,以便为用户获取操作建议。例如,为用户生成下一个最佳操作,例如下载您的应用程序。

    • 选择用户细分,以根据您的物品数据获取用户细分(用户组)。

  6. 对于食谱,选择一个食谱(请参阅选择食谱)。

  7. 对于标签,可以选择添加任何标签。有关标记 Amazon Personalize 资源的更多信息,请参阅为 Amazon Personalize 资源添加标签

  8. 选择下一步

  9. 训练配置页面上,自定义解决方案以满足您的业务需求。

    • 自动训练中,选择解决方案是否使用自动训练。如果使用了自动训练,则可以更改 Automatic training frequency。默认训练频率为每 7 天一次。

      建议使用自动训练。使用自动训练后,您就可以更轻松地维护推荐相关性。训练频率取决于业务需求、所使用的配方以及导入数据的频率。有关更多信息,请参阅 配置自动训练。有关维护相关性的信息,请参阅维护建议相关性

    • 超参数配置中,根据您的配方和业务需求配置任何超参数选项。使用不同超级参数的不同食谱。有关可用的超参数,请参阅选择食谱中的各个配方。

    • 用于训练的列中,如果您的配方生成了物品推荐或用户细分,则可以选择在创建解决方案版本时 Amazon Personalize 考虑的列。有关更多信息,请参阅 配置训练时使用的列

    • 事件配置中,如果您的项目交互数据集包含 EVENT_TYPE 或同时包含 EVENT_TYPE 和 EVENT_VALUE 列,则可以选择使用事件类型事件值阈值字段,来选择 Amazon Personalize 在训练模型时使用的项目交互数据。有关更多信息,请参阅 选择用于训练的物品交互数据

      如果您有多个事件类型,并且使用了 User-Personalization-v2 配方或 Personalized-Ranking-v2 配方,则还可以为不同的类型指定不同的权重。例如,您可以配置一个解决方案,为购买事件赋予高于点击事件的权重。有关更多信息,请参阅 使用事件配置优化解决方案

    • 如果您使用 User-Personalization 食谱Personalized-Ranking 食谱食谱,则可以选择指定目标并选择目标灵敏度,以便在相关性之外针对目标优化您的解决方案。目标敏感度配置了 Amazon Personalize 如何在基于目标推荐物品与根据交互数据确定的相关性来推荐物品之间取得平衡。有关更多信息,请参阅 针对其他目标优化解决方案

  10. 选择下一步,并查看解决方案详细信息。创建解决方案后,就不能更改其配置。

  11. 选择创建解决方案。创建解决方案后,Amazon Personalize 将在一小时内开始创建第一个解决方案版本。训练开始后,可以在解决方案详细信息页面的解决方案版本部分监控训练。自动创建的解决方案版本的训练类型为“自动”。

    当解决方案版本处于活动状态时,就可以使用它来获得推荐。如何使用活跃解决方案版本取决于获取建议的方式:

创建解决方案 (Amazon CLI)

重要

默认情况下,所有新解决方案都使用自动训练。如果使用自动训练,则在解决方案处于活动状态时,就会产生训练费用。为避免产生不必要的费用,在完成后,可以更新解决方案以关闭自动训练。有关训练费用的信息,请参阅 Amazon Personalize 定价

要使用 Amazon CLI 创建解决方案,请使用 create-solution 命令。此命令使用 CreateSolution API 操作。以下代码展示了如何创建使用自动训练的解决方案。该解决方案每五天自动创建一个新的解决方案版本。

要使用该代码,请更新代码来为解决方案取名,指定您的数据集组的 Amazon 资源名称(ARN),可以选择更改训练频率,并指定要使用的配方的 ARN。有关配方的信息,请参阅选择食谱

aws personalize create-solution \ --name solution name \ --dataset-group-arn dataset group ARN \ --recipe-arn recipe ARN \ --perform-auto-training \ --solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(5 days)\"}}"

创建解决方案后,记录解决方案 ARN 以备将来使用。通过自动训练,解决方案处于活动状态后,解决方案版本的创建将在一小时内开始。如果您在一小时内手动创建解决方案版本,则解决方案会跳过第一次自动训练。训练开始后,您可以通过 ListSolutionVersions API 操作获取解决方案版本的 Amazon 资源名称(ARN)。要获取其状态,请使用 DescribeSolutionVersion API 操作。

当解决方案版本处于活动状态时,就可以使用它来获得推荐。如何使用活跃解决方案版本取决于获取建议的方式:

创建解决方案 (Amazon SDK)

重要

默认情况下,所有新解决方案都使用自动训练。如果使用自动训练,则在解决方案处于活动状态时,就会产生训练费用。为避免产生不必要的费用,在完成后,可以更新解决方案以关闭自动训练。有关训练费用的信息,请参阅 Amazon Personalize 定价

要使用 Amazon SDK 创建解决方案,请使用 CreateSolution API 操作。以下代码展示了如何创建使用自动训练的解决方案。该解决方案每五天自动创建一个新的解决方案版本。

要使用该代码,请更新代码来为解决方案取名,指定您的数据集组的 Amazon 资源名称(ARN),可以选择更改训练频率,并指定要使用的配方的 ARN。有关配方的信息,请参阅选择食谱

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') create_solution_response = personalize.create_solution( name = 'solution name', recipeArn = 'recipe ARN', datasetGroupArn = 'dataset group ARN', performAutoTraining = True, solutionConfig = { "autoTrainingConfig": { "schedulingExpression": "rate(5 days)" } } ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
SDK for JavaScript v3
import { CreateSolutionCommand, PersonalizeClient, } from "@aws-sdk/client-personalize"; // create client const personalizeClient = new PersonalizeClient({ region: "REGION" }); // set the solution parameters export const solutionParam = { datasetGroupArn: "DATASET_GROUP_ARN" /* required */, recipeArn: "RECIPE_ARN" /* required */, name: "SOLUTION_NAME" /* required */, performAutoTraining: true /* optional, default is true */, solutionConfig: { autoTrainingConfig: { schedulingExpression: "rate(5 days)" /* optional, default is every 7 days */, }, }, }; export const run = async () => { try { const response = await personalizeClient.send( new CreateSolutionCommand(solutionParam) ); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

创建解决方案后,记录解决方案 ARN 以备将来使用。通过自动训练,解决方案处于活动状态后,解决方案版本的创建将在一小时内开始。如果您在一小时内手动创建解决方案版本,则解决方案会跳过第一次自动训练。训练开始后,您可以通过 ListSolutionVersions API 操作获取解决方案版本的 Amazon 资源名称(ARN)。要获取其状态,请使用 DescribeSolutionVersion API 操作。

您可以使用以下 Python 代码来等待自动训练开始。wait_for_training_to_start 方法返回第一个解决方案版本的 ARN。

import time import boto3 def wait_for_training_to_start(new_solution_arn): max_time = time.time() + 3 * 60 * 60 # 3 hours while time.time() < max_time: list_solution_versions_response = personalize.list_solution_versions( solutionArn=new_solution_arn ) solution_versions = list_solution_versions_response.get('solutionVersions', []) if solution_versions: new_solution_version_arn = solution_versions[0]['solutionVersionArn'] print(f"Solution version ARN: {new_solution_version_arn}") return new_solution_version_arn else: print(f"Training hasn't started yet. Training will start within the next hour.") time.sleep(60) personalize = boto3.client('personalize') solution_arn = "solution_arn" solution_version_arn = wait_for_training_to_start(solution_arn)

当解决方案版本处于活动状态时,就可以使用它来获得推荐。如何使用活跃解决方案版本取决于获取建议的方式: