

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ソリューションの作成
<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. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) で Amazon Personalize コンソールを開き、アカウントにサインインします。

1. **[データセットグループ]** のページで、データセットグループを選択します。

1. **[概要]** ページの **[ステップ 3]** で、次のいずれかを実行します。
   + ドメインデータセットグループを作成した場合は、**[カスタムリソースの使用]**、**[ソリューションの作成]** の順に選択します。
   + カスタムデータセットグループを作成した場合は、**[ソリューションの作成]** を選択します。

1. [**Solution name (ソリューション名)**] で、ソリューションの名前を指定します。

1. **[ソリューションタイプ]** で、作成するソリューションのタイプを選択します。選択したタイプによって、利用できるレシピが決まります。
   + **[アイテムのレコメンデーション]** を選択して、ユーザーのアイテムのレコメンデーションを取得します。例えば、パーソナライズされた映画のレコメンデーションなどです。
   + **[アクションのレコメンデーション]** を選択して、ユーザーのアクションのレコメンデーションを取得します。例えば、アプリのダウンロードなど、ユーザー向けの次善のアクションを生成できます。
   + **[ユーザーセグメンテーション]** を選択してアイテムデータに基づいてユーザーセグメント (ユーザーのグループ) を取得します。

1. **[Recipe]** (レシピ) で、レシピを選択します (「[レシピの選択](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 レシピを使用する場合は、タイプごとに異なる重みを指定することもできます。例えば、click イベントよりも purchase イベントに重みを付けるようにソリューションを設定できます。詳細については、「[イベント設定によるソリューションの最適化](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. [**Create solution (ソリューションの作成)**] を選択します。ソリューションを作成すると、Amazon Personalize は 1 時間以内に最初のソリューションバージョンの作成を開始します。トレーニングが開始されると、ソリューションの詳細ページの **[ソリューションバージョン]** セクションでモニタリングできます。自動作成されたソリューションバージョンには、AUTOMATIC の **[トレーニングタイプ]** があります。

    ソリューションバージョンが ACTIVE になれば、レコメンデーションを取得するために使用する準備が整います。アクティブなソリューションバージョンの使用方法は、レコメンデーションの取得方法によって異なります。
   +  リアルタイムのレコメンデーションを行うには、ACTIVE ソリューションバージョンを Amazon Personalize キャンペーンでデプロイします。キャンペーンを使用して、ユーザー向けのレコメンデーションを取得します。「[キャンペーンを使用して Amazon Personalize のソリューションバージョンをデプロイするキャンペーンの作成](campaigns.md)」を参照してください。
   + バッチレコメンデーションでは、バッチ推論ジョブまたはバッチセグメントジョブを作成するときに ACTIVE ソリューションバージョンを指定します。「[バッチアイテムのレコメンデーションの取得](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 オペレーションを使用します。次のコードは、自動トレーニングを使用するソリューションを作成する方法を示しています。5 日ごとに新しいソリューションバージョンが自動的に作成されます。

コードを使用するには、更新してソリューションに名前を付け、データセットグループの 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 を記録します。自動トレーニングでは、ソリューションバージョンの作成は、ソリューションが ACTIVE になってから 1 時間以内に開始されます。1 時間以内にソリューションバージョンを手動で作成した場合、ソリューションは最初の自動トレーニングをスキップします。トレーニングが開始されると、[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 オペレーションを使用します。

 ソリューションバージョンが ACTIVE になれば、レコメンデーションを取得するために使用する準備が整います。アクティブなソリューションバージョンの使用方法は、レコメンデーションの取得方法によって異なります。
+  リアルタイムのレコメンデーションを行うには、ACTIVE ソリューションバージョンを Amazon Personalize キャンペーンでデプロイします。キャンペーンを使用して、ユーザー向けのレコメンデーションを取得します。「[キャンペーンを使用して Amazon Personalize のソリューションバージョンをデプロイするキャンペーンの作成](campaigns.md)」を参照してください。
+ バッチレコメンデーションでは、バッチ推論ジョブまたはバッチセグメントジョブを作成するときに ACTIVE ソリューションバージョンを指定します。「[バッチアイテムのレコメンデーションの取得](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 オペレーションを使用します。次のコードは、自動トレーニングを使用するソリューションを作成する方法を示しています。5 日ごとに新しいソリューションバージョンが自動的に作成されます。

コードを使用するには、更新してソリューションに名前を付け、データセットグループの 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 を記録します。自動トレーニングでは、ソリューションバージョンの作成は、ソリューションが ACTIVE になってから 1 時間以内に開始されます。1 時間以内にソリューションバージョンを手動で作成した場合、ソリューションは最初の自動トレーニングをスキップします。トレーニングが開始されると、[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)
```

 ソリューションバージョンが ACTIVE になれば、レコメンデーションを取得するために使用する準備が整います。アクティブなソリューションバージョンの使用方法は、レコメンデーションの取得方法によって異なります。
+  リアルタイムのレコメンデーションを行うには、ACTIVE ソリューションバージョンを Amazon Personalize キャンペーンでデプロイします。キャンペーンを使用して、ユーザー向けのレコメンデーションを取得します。「[キャンペーンを使用して Amazon Personalize のソリューションバージョンをデプロイするキャンペーンの作成](campaigns.md)」を参照してください。
+ バッチレコメンデーションでは、バッチ推論ジョブまたはバッチセグメントジョブを作成するときに ACTIVE ソリューションバージョンを指定します。「[バッチアイテムのレコメンデーションの取得](getting-batch-recommendations.md)」または「[バッチユーザーセグメントの取得](getting-user-segments.md)」を参照してください。