

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

# 创建解决方案
<a name="create-solution"></a>

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

**Topics**
+ [创建解决方案（控制台）](#configure-solution-console)
+ [创建解决方案 (AWS CLI)](#configure-solution-cli)
+ [创建解决方案 (AWS SDK)](#configure-solution-sdk)

## 创建解决方案（控制台）
<a name="configure-solution-console"></a>

**重要**  
默认情况下，所有新解决方案都使用自动训练。如果使用自动训练，则在解决方案处于活动状态时，就会产生训练费用。为避免产生不必要的费用，在完成后，可以[更新解决方案](updating-solution.md)以关闭自动训练。有关训练费用的信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。

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

**配置解决方案（控制台）**

1. 打开 Amazon Personalize 控制台（网址为 [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)），并登录您的账户。

1. 在**数据集组**页面，选择您的数据集组。

1. 在**概览**页面上，对于**步骤 3**，执行以下任一操作：
   + 如果您创建了域数据集组，请选择**使用自定义资源**，然后选择**创建解决方案**。
   + 如果您创建了自定义数据集组，则选择**创建解决方案**。

1. 对于**解决方案名称**，为您的解决方案指定名称。

1. 对于**解决方案类型**，选择要创建的解决方案类型。您选择的类型决定了可用的配方。
   + 选择**物品建议**，以便为用户获取物品建议。例如，个性化的电影建议。
   + 选择**操作建议**，以便为用户获取操作建议。例如，为用户生成下一个最佳操作，例如下载您的应用程序。
   + 选择**用户细分**，以根据您的物品数据获取用户细分（用户组）。

1. 对于**食谱**，选择一个食谱（请参阅[选择食谱](working-with-predefined-recipes.md)）。

1. 对于**标签**，可以选择添加任何标签。有关标记 Amazon Personalize 资源的更多信息，请参阅[为 Amazon Personalize 资源添加标签](tagging-resources.md)。

1. 选择**下一步**。

1. 在**训练配置**页面上，自定义解决方案以满足您的业务需求。
   + 在**自动训练**中，选择解决方案是否使用自动训练。如果使用了自动训练，则可以更改 `Automatic training frequency`。默认训练频率为每 7 天一次。

     建议使用自动训练。使用自动训练后，您就可以更轻松地维护推荐相关性。训练频率取决于业务需求、所使用的配方以及导入数据的频率。有关更多信息，请参阅 [配置自动训练](solution-config-auto-training.md)。有关维护相关性的信息，请参阅[维护建议相关性](maintaining-relevance.md)。
   + 在**超参数配置**中，根据您的配方和业务需求配置任何超参数选项。使用不同超级参数的不同食谱。有关可用的超参数，请参阅[选择食谱](working-with-predefined-recipes.md)中的各个配方。
   + 在**用于训练的列**中，如果您的配方生成了物品推荐或用户细分，则可以选择在创建解决方案版本时 Amazon Personalize 考虑的列。有关更多信息，请参阅 [配置训练时使用的列](custom-config-columns.md)。
   + 在**事件配置**中，如果您的项目交互数据集包含 EVENT\$1TYPE 或同时包含 EVENT\$1TYPE 和 EVENT\$1VALUE 列，则可以选择使用**事件类型**和**事件值阈值**字段，来选择 Amazon Personalize 在训练模型时使用的项目交互数据。有关更多信息，请参阅 [选择用于训练的物品交互数据](event-values-types.md)。

      如果您有多个事件类型，并且使用了 User-Personalization-v2 配方或 Personalized-Ranking-v2 配方，则还可以为不同的类型指定不同的权重。例如，您可以配置一个解决方案，为购买事件赋予高于点击事件的权重。有关更多信息，请参阅 [使用事件配置优化解决方案](optimizing-solution-events-config.md)。
   + 如果您使用 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)或 [Personalized-Ranking 食谱](native-recipe-search.md)食谱，则可以选择指定**目标**并选择**目标灵敏度**，以便在相关性之外针对目标优化您的解决方案。目标敏感度配置了 Amazon Personalize 如何在基于目标推荐物品与根据交互数据确定的相关性来推荐物品之间取得平衡。有关更多信息，请参阅 [针对其他目标优化解决方案](optimizing-solution-for-objective.md)。

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

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

    当解决方案版本处于活动状态时，就可以使用它来获得推荐。如何使用活跃解决方案版本取决于获取建议的方式：
   +  要获得实时建议，必须通过 Amazon Personalize 市场活动部署活跃解决方案版本。您可以使用该市场活动为用户获取建议。请参阅[通过市场活动部署 Amazon Personalize 解决方案版本创建市场活动](campaigns.md)。
   + 对于批量建议，在创建批量推理作业或批量细分作业时指定一个活跃解决方案版本。请参阅[获取批量物品推荐](getting-batch-recommendations.md)或[获取批量用户细分](getting-user-segments.md)。

## 创建解决方案 (AWS CLI)
<a name="configure-solution-cli"></a>

**重要**  
默认情况下，所有新解决方案都使用自动训练。如果使用自动训练，则在解决方案处于活动状态时，就会产生训练费用。为避免产生不必要的费用，在完成后，可以[更新解决方案](updating-solution.md)以关闭自动训练。有关训练费用的信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。

要使用 AWS CLI 创建解决方案，请使用 `create-solution` 命令。此命令使用 [CreateSolution](API_CreateSolution.md) API 操作。以下代码展示了如何创建使用自动训练的解决方案。该解决方案每五天自动创建一个新的解决方案版本。

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

```
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)\"}}"
```
+ 我们建议您使用自动训练。使用自动训练后，您就可以更轻松地维护和改进推荐相关性。默认情况下，所有新解决方案都使用自动训练。默认训练频率为每 7 天一次。训练频率取决于业务需求、所使用的配方以及导入数据的频率。有关更多信息，请参阅 [配置自动训练](solution-config-auto-training.md)。
+ 根据您的配方，您可以修改代码来配置配方特定的属性和超参数（请参阅[超级参数和 HPO](customizing-solution-config-hpo.md)），配置用于训练的列（请参阅[配置训练时使用的列 (AWS CLI)](custom-config-columns.md#custom-config-columns-cli)），或者筛选用于训练的物品交互数据（请参阅[选择用于训练的物品交互数据](event-values-types.md)）。
+ 如果您使用 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)或 [Personalized-Ranking 食谱](native-recipe-search.md)配方，则除了相关性之外，还可以针对目标优化解决方案。有关更多信息，请参阅 [针对其他目标优化解决方案](optimizing-solution-for-objective.md)。

创建解决方案后，记录解决方案 ARN 以备将来使用。通过自动训练，解决方案处于活动状态后，解决方案版本的创建将在一小时内开始。如果您在一小时内手动创建解决方案版本，则解决方案会跳过第一次自动训练。训练开始后，您可以通过 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 操作获取解决方案版本的 Amazon 资源名称（ARN）。要获取其状态，请使用 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API 操作。

 当解决方案版本处于活动状态时，就可以使用它来获得推荐。如何使用活跃解决方案版本取决于获取建议的方式：
+  要获得实时建议，必须通过 Amazon Personalize 市场活动部署活跃解决方案版本。您可以使用该市场活动为用户获取建议。请参阅[通过市场活动部署 Amazon Personalize 解决方案版本创建市场活动](campaigns.md)。
+ 对于批量建议，在创建批量推理作业或批量细分作业时指定一个活跃解决方案版本。请参阅[获取批量物品推荐](getting-batch-recommendations.md)或[获取批量用户细分](getting-user-segments.md)。

## 创建解决方案 (AWS SDK)
<a name="configure-solution-sdk"></a>

**重要**  
默认情况下，所有新解决方案都使用自动训练。如果使用自动训练，则在解决方案处于活动状态时，就会产生训练费用。为避免产生不必要的费用，在完成后，可以[更新解决方案](updating-solution.md)以关闭自动训练。有关训练费用的信息，请参阅 [Amazon Personalize 定价](https://aws.amazon.com/personalize/pricing/)。

要使用 AWS SDK 创建解决方案，请使用 [CreateSolution](API_CreateSolution.md) API 操作。以下代码展示了如何创建使用自动训练的解决方案。该解决方案每五天自动创建一个新的解决方案版本。

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

------
#### [ 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();
```

------
+ 我们建议您使用自动训练。使用自动训练后，您就可以更轻松地维护和改进推荐相关性。默认情况下，所有新解决方案都使用自动训练。默认训练频率为每 7 天一次。训练频率取决于业务需求、所使用的配方以及导入数据的频率。有关更多信息，请参阅 [配置自动训练](solution-config-auto-training.md)。
+ 根据您的配方，您可以修改代码来配置配方特定的属性和超参数（请参阅[超级参数和 HPO](customizing-solution-config-hpo.md)），配置用于训练的列（请参阅[配置训练时使用的列 (AWS SDK)](custom-config-columns.md#custom-configure-columns-sdk)），或者筛选用于训练的物品交互数据（请参阅[选择用于训练的物品交互数据](event-values-types.md)）。
+ 如果您使用 [User-Personalization 食谱](native-recipe-new-item-USER_PERSONALIZATION.md)或 [Personalized-Ranking 食谱](native-recipe-search.md)配方，则除了相关性之外，还可以针对目标优化解决方案。有关更多信息，请参阅 [针对其他目标优化解决方案](optimizing-solution-for-objective.md)。

创建解决方案后，记录解决方案 ARN 以备将来使用。通过自动训练，解决方案处于活动状态后，解决方案版本的创建将在一小时内开始。如果您在一小时内手动创建解决方案版本，则解决方案会跳过第一次自动训练。训练开始后，您可以通过 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 操作获取解决方案版本的 Amazon 资源名称（ARN）。要获取其状态，请使用 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) 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)
```

 当解决方案版本处于活动状态时，就可以使用它来获得推荐。如何使用活跃解决方案版本取决于获取建议的方式：
+  要获得实时建议，必须通过 Amazon Personalize 市场活动部署活跃解决方案版本。您可以使用该市场活动为用户获取建议。请参阅[通过市场活动部署 Amazon Personalize 解决方案版本创建市场活动](campaigns.md)。
+ 对于批量建议，在创建批量推理作业或批量细分作业时指定一个活跃解决方案版本。请参阅[获取批量物品推荐](getting-batch-recommendations.md)或[获取批量用户细分](getting-user-segments.md)。