

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

# Amazon Personalize のドメインレコメンダーの作成
<a name="creating-domain-recommenders"></a>

Amazon Personalize コンソール、 AWS Command Line Interface (AWS CLI)、または AWS SDKs を使用してレコメンダーを作成できます。以下に、Amazon Personalize コンソールを使用してレコメンダーを作成する詳細なステップと、必須フィールドのみを使用してレコメンダーを作成する方法を示すコード例を示します。
+ レコメンデーションでメタデータを有効にする方法を示すコードサンプルについては、「[レコメンデーションのメタデータを有効にする](create-recommender-return-metadata.md)」を参照してください。
+  レコメンダーをサポートするモデルのトレーニング時に使用する列を設定する方法を示すコードサンプルについては、「[Amazon Personalize ドメインレコメンダーの作成時に使用する列の設定](create-recommender-configure-columns.md)」を参照してください。
+ `Top picks for your` または `Recommended for you` ユースケースの探索を設定する方法を示すコードサンプルについては、「[ドメインレコメンダーの探索の設定](create-recommender-configure-exploration.md)」を参照してください。

**Topics**
+ [レコメンダーの作成 (コンソール)](#creating-recommenders-console)
+ [レコメンダーの作成 (AWS CLI)](#create-recommender-cli)
+ [レコメンダーの作成 (AWS SDKs)](#create-recommender-sdk)

## レコメンダーの作成 (コンソール)
<a name="creating-recommenders-console"></a>

**重要**  
`minRecommendationRequestsPerSecond` を高く設定すると請求額が増加します。最初は `minRecommendationRequestsPerSecond` に 1 を使用することをお勧めします (デフォルト)。Amazon CloudWatch メトリクスを使用して使用状況を追跡し、必要に応じて `minRecommendationRequestsPerSecond` を引き上げます。詳細については、「[1 秒あたりの最小レコメンデーションリクエスト数と自動スケーリング](creating-recommenders.md#min-rrps-auto-scaling)」を参照してください。

 次のように、Amazon Personalize コンソールを使用して各ユースケース向けのレコメンダーを作成します。ドメインデータセットグループを作成したばかりで、既に **[Overview]** (概要) のページが表示されている場合は、ステップ 3 に進みます。

**レコメンダーを作成するには**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) で Amazon Personalize コンソールを開き、アカウントにサインインします。

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

1. **ステップ 3** で、**[<domain name> レコメンダーを使用する]** を選択し、**[レコメンダーの作成]** を選択します。

1. **[ユースケースの選択]** のページで、レコメンダー入を作成するユースケースを選択し、それぞれに **[レコメンダー名]** を入力します。Amazon Personalize は、選択した各ユースケースについてレコメンダーを作成します。使用可能なユースケースは、ドメインによって異なります。ユースケースの選択については、「[ユースケースの選択](domain-use-cases.md)」を参照してください。

1.  [**次へ**] を選択します。

1. **[詳細設定]** のページでは、ビジネスニーズに応じて各レコメンダーを設定します。
   + レコメンダーのユースケースで使用されるデータセットごとに、レコメンダーを裏付けるモデルをトレーニングするときに Amazon Personalize が考慮する列を選択できます。デフォルトでは、Amazon Personalize はトレーニング時に使用できるすべての列を使用します。詳細については、「[Amazon Personalize ドメインレコメンダーの作成時に使用する列の設定](create-recommender-configure-columns.md)」を参照してください。
   + **[1 秒あたりの最小レコメンデーションリクエスト数]** を変更して、レコメンダーの新しい最小リクエスト容量を指定できます。`minRecommendationRequestsPerSecond` を高く設定すると請求額が増加します。最初は 1 を使用することをお勧めします (デフォルト)。Amazon CloudWatch メトリクスを使用して使用状況を追跡し、必要に応じて `minRecommendationRequestsPerSecond` を引き上げることをお勧めします。詳細については、「[1 秒あたりの最小レコメンデーションリクエスト数と自動スケーリング](creating-recommenders.md#min-rrps-auto-scaling)」を参照してください。
   + アイテムデータセットのメタデータをレコメンデーションに含める場合は、**[レコメンデーション結果にアイテムメタデータを返す]** を選択します。有効にすると、レコメンデーションのリクエストやパーソナライズされたランキングで、アイテムデータセットから列を指定できます。Amazon Personalize は、レコメンデーションレスポンス内の各アイテムについてこのデータを返します。

      メタデータを有効にするには、メタデータの列を含むアイテムデータセットが必要です。
   + `Top picks for your` または `Recommended for you` のユースケースでは、オプションで探索設定を変更します。探索は、インタラクションデータがないかほとんどない状態で、ユーザーが商品にどのように反応するかを学習するための、さまざまな商品のレコメンデーションをテストに関連します。次のフィールドを使用して、探索を設定します。
     + 関連性の低いアイテムの探索に重点を置く (探索の重み) — 探索する範囲を設定します。0～1 の小数値を指定します。デフォルトは 0.3 です。値が 1 に近くなるほど、探索が多くなります。探索が増えると、レコメンデーションにはより多くのアイテムが含まれますが、アイテムインタラクションデータや以前の行動に基づく関連性が少なくなります。ゼロでは、探索は行われず、レコメンデーションは現在のデータに基づきます (関連性)。
     + 探索アイテムが存在するようになってからの期間のカットオフ - アイテムインタラクションデータセット内のすべてのアイテムについて、最新のインタラクションからの日数で、アイテムが存在するようになってからの最長期間を指定します。これにより、アイテムの経過時間に基づいてアイテム探索の範囲が定義されます。Amazon Personalize は作成タイムスタンプを基に、あるいは作成タイムスタンプデータがない場合はアイテムインタラクションデータを基に、アイテムが存在するようになってからの期間を決定します。Amazon Personalize がアイテムが存在するようになってからの期間を決定する方法の詳細については、「[作成のタイムスタンプデータ](items-datasets.md#creation-timestamp-data)」を参照してください。

       Amazon Personalize が探索中に考慮するアイテムの数を増やすには、より大きな値を入力します。デフォルトは 30 日 で、最短は 1 日 です。レコメンデーションには、指定したアイテムの期間制限より古いアイテムが含まれる場合があります。その理由は、これらの商品がユーザーの興味に関連しており、それらを特定するために探索が必要ではなかったためです。
   + **[タグ]** には、オプションで任意のタグを追加します。Amazon Personalize リソースのタグ付けについての詳細は、「[Amazon Personalize リソースのタグ付け](tagging-resources.md)」を参照してください。

1. 各ユースケースのレコメンダーを作成するには、**[レコメンダーの作成]** を選択します。

   各レコメンダーのステータスは、**[Recommenders]** (レコメンダー) のページでモニタリングできます。レコメンダーのステータスが Active の場合、アプリケーションでそれを使用してレコメンデーションを取得できます。

## レコメンダーの作成 (AWS CLI)
<a name="create-recommender-cli"></a>

 次の AWS CLI コードを使用して、ドメインユースケースのレコメンダーを作成します。このコードは、各ドメインユースケースのために実行します。`recipeArn` で、ユースケースの Amazon リソースネーム (ARN) を指定します。使用可能なユースケースは、ドメインによって異なります。ユースケースとその ARN のリストについては、「[ユースケースの選択](domain-use-cases.md)」を参照してください。

```
aws personalize create-recommender \
--name {{recommender name}} \
--dataset-group-arn {{dataset group ARN}} \
--recipe-arn {{recipe ARN}}
```

## レコメンダーの作成 (AWS SDKs)
<a name="create-recommender-sdk"></a>

次のコードを使用して、ドメインのユースケースのレコメンダーを作成します。レコメンデーションに名前を付け、ドメインデータセットグループの Amazon リソースネーム (ARN) を入力します。`recipeArn` でユースケースの ARN を指定します。このコードは、各ドメインユースケースのために実行します。使用可能なユースケースは、ドメインによって異なります。ユースケース、その ARN および要件のリストについては、「[ユースケースの選択](domain-use-cases.md)」を参照してください。

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_recommender_response = personalize.create_recommender(
  name = '{{recommender name}}',
  recipeArn = '{{recipe ARN}}',
  datasetGroupArn = '{{dataset group ARN}}'     
)

recommender_arn = create_recommender_response['recommenderArn']

print('Recommender ARN:' + recommender_arn)
```

------
#### [ SDK for Java 2.x ]

```
    public static String createRecommender(PersonalizeClient personalizeClient,
            String name,
            String datasetGroupArn,
            String recipeArn) {

        long maxTime = 0;
        long waitInMilliseconds = 30 * 1000; // 30 seconds
        String recommenderStatus = "";

        try {
            CreateRecommenderRequest createRecommenderRequest = CreateRecommenderRequest.builder()
                    .datasetGroupArn(datasetGroupArn)
                    .name(name)
                    .recipeArn(recipeArn)
                    .build();

            CreateRecommenderResponse recommenderResponse = personalizeClient
                    .createRecommender(createRecommenderRequest);
            String recommenderArn = recommenderResponse.recommenderArn();
            System.out.println("The recommender ARN is " + recommenderArn);

            DescribeRecommenderRequest describeRecommenderRequest = DescribeRecommenderRequest.builder()
                    .recommenderArn(recommenderArn)
                    .build();

            maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;

            while (Instant.now().getEpochSecond() < maxTime) {

                recommenderStatus = personalizeClient.describeRecommender(describeRecommenderRequest).recommender()
                        .status();
                System.out.println("Recommender status: " + recommenderStatus);

                if (recommenderStatus.equals("ACTIVE") || recommenderStatus.equals("CREATE FAILED")) {
                    break;
                }
                try {
                    Thread.sleep(waitInMilliseconds);
                } catch (InterruptedException e) {
                    System.out.println(e.getMessage());
                }
            }
            return recommenderArn;

        } catch (PersonalizeException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients and commands using ES6 syntax.
import { CreateRecommenderCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";

// create personalizeClient
const personalizeClient = new PersonalizeClient({
  region: "REGION"
});

// set the recommender's parameters
export const createRecommenderParam = {
  name: "RECOMMENDER_NAME",                    /* required */
  recipeArn: "RECIPE_ARN",                     /* required */
  datasetGroupArn: "DATASET_GROUP_ARN"         /* required */
}

export const run = async () => {
  try {
    const response = await personalizeClient.send(new CreateRecommenderCommand(createRecommenderParam));
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------