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

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

创建和配置解决方案

完成数据导入后,就可以创建解决方案了。解决方案 是指 Amazon Personalize 食谱、自定义参数和一个或多个解决方案版本(经过训练的模型)的组合。

创建解决方案时,您可以对其进行配置,以满足您的特定业务需求:

  • 配置解决方案时,您需要指定与您的使用案例一致的配方。有关可用食谱的信息,请参阅选择配方

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

  • 您可以根据您的食谱和业务需求配置超参数来优化模型。使用不同超级参数的不同食谱。有关配置超参数的信息,请参阅超级参数和 HPO。有关您的配方的可用超参数,请参阅选择配方中的配方页面。

  • 如果您使用 User-Personalization 食谱Personalized-Ranking 食谱 食谱,则除了相关性之外,还可以针对目标优化解决方案。有关更多信息,请参阅 针对其他目标优化解决方案

  • 如果您拥有事件类型和事件值数据,则可以使用它来选择 Amazon Personalize 在训练期间考虑的物品交互记录。有关更多信息,请参阅 选择用于训练的物品交互数据

如果您有现有解决方案,则可以使用 Amazon Personalize 控制台来克隆解决方案。克隆解决方案时,您可以使用现有解决方案的配置(例如食谱和超参数)作为起点,并根据需要进行任何更改。有关更多信息,请参阅克隆解决方案(控制台)。创建解决方案后,您可以在 Amazon Personalize 控制台的解决方案详情页面或通过 DescribeSolution 操作,查看解决方案的配置详细信息。

您可以使用控制台、 Amazon Command Line Interface (Amazon CLI) 或 Amazon SDK 创建和配置解决方案。

创建解决方案(控制台)

要在控制台中创建解决方案,请选择包含您要使用的数据集的数据集组,然后指定解决方案名称、食谱和可选的食谱特定超参数。

如果您的配方生成了物品建议或用户细分,则可以更改列以尝试不同的训练数据组合,也可以将无有意义数据的列排除在训练之外。例如,可能有一列,您只想将其用来筛选建议。您可以将此列排除在训练之外,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. 高级配置页面上,如果您的配方生成了物品建议或用户细分,则可以选择使用用于训练的列,来选择 Amazon Personalize 在训练解决方案版本时考虑的列。

    默认情况下,Amazon Personalize 使用可在训练中采用的所有列。仅列出您所选食谱使用的数据集。不使用布尔数据类型和非分类字符串字段的列。您无法排除 EVENT_TYPE 列。

    有关更多信息,请参阅配置训练时使用的列

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

  11. 解决方案配置中,如果您的物品交互数据集包含 EVENT_TYPE 或同时包含 EVENT_TYPE 和 EVENT_VALUE 列,则可以选择使用事件类型事件值阈值字段,来选择 Amazon Personalize 在训练模型时使用的物品交互数据。

    有关更多信息,请参阅 选择用于训练的物品交互数据

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

  13. 选择 “下一步” 并查看解决方案的详细信息。创建解决方案后,您无法更改其配置。

  14. 选择创建解决方案。Amazon Personalize 开始创建您的第一个解决方案版本,而且会显示解决方案和食谱页面。要监控其状态,请选择您的解决方案,并在解决方案版本部分中查看状态。

    当它处于活动状态时,你可以将其部署到活动中,然后获得实时推荐。或者,根据您的食谱,您无需创建广告系列即可获得批量推荐。

    有关活动的信息,请参阅创建市场活动。有关批量建议的信息,请参阅批量建议和用户细分(自定义资源)

创建解决方案 (Amazon CLI)

要使用创建解决方案 Amazon CLI,请使用以下create-solution操作。指定 solution namedataset group arnrecipe arn

aws personalize create-solution \ --name solution name \ --dataset-group-arn dataset group arn \ --recipe-arn recipe arn

这将显示解决方案 Amazon 资源名称 (ARN),例如:

{ "solutionArn": "arn:aws:personalize:<region>:solution/<solution name>" }

记录解决方案 ARN 以备将来使用,然后继续创建解决方案版本 (Amazon CLI)

根据您的配方,您可以修改上述代码以优化配方属性和超参数(请参阅超级参数和 HPO),选择训练中使用的列(请参阅配置训练时使用的列 (Amazon CLI)),或者筛选用于训练的交互数据(请参阅选择用于训练的物品交互数据)。

如果您使用 User-Personalization 食谱Personalized-Ranking 食谱食谱,则除了相关性之外,还可以针对目标优化解决方案。有关更多信息,请参阅 针对其他目标优化解决方案

创建解决方案 (Amazon SDK)

以下代码展示了如何创建 Amazon Personalize 解决方案。为解决方案命名,并指定您的数据集组的 Amazon 资源名称 (ARN),以及要使用的食谱的 ARN。有关食谱的信息,请参阅选择配方

根据您的配方,您可以修改以下代码以优化配方属性和超参数(请参阅超级参数和 HPO),配置用于训练的列(请参阅配置训练时使用的列 (Amazon SDK)),或者筛选用于训练的交互数据(请参阅选择用于训练的物品交互数据)。

如果您使用 User-Personalization 食谱Personalized-Ranking 食谱食谱,则除了相关性之外,还可以针对目标优化解决方案。有关更多信息,请参阅 针对其他目标优化解决方案

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') print('Creating solution') create_solution_response = personalize.create_solution( name='solution name', recipeArn= 'recipe arn', datasetGroupArn = 'dataset group arn' ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
SDK for Java 2.x
public static String createPersonalizeSolution(PersonalizeClient personalizeClient, String datasetGroupArn, String solutionName, String recipeArn) { try { CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder() .name(solutionName) .datasetGroupArn(datasetGroupArn) .recipeArn(recipeArn) .build(); CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest); return solutionResponse.solutionArn(); } catch (PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }
SDK for JavaScript v3
// Get service clients module and commands using ES6 syntax. import { CreateSolutionCommand } from "@aws-sdk/client-personalize"; import { personalizeClient } from "./libs/personalizeClients.js"; // Or, create the client here. // const personalizeClient = new PersonalizeClient({ region: "REGION"}); // Set the solution parameters. export const createSolutionParam = { datasetGroupArn: 'DATASET_GROUP_ARN', /* required */ recipeArn: 'RECIPE_ARN', /* required */ name: 'NAME' /* required */ } export const run = async () => { try { const response = await personalizeClient.send(new CreateSolutionCommand(createSolutionParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

记录解决方案 ARN 以备将来使用,然后继续创建解决方案版本 (Amazon SDK)