開始方法 (AWS CLI) - Amazon Personalize

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

開始方法 (AWS CLI)

この演習では、AWS Command Line Interface (AWS CLI) を使用して Amazon Personalize. を試します。映画のレコメンデーションを特定のユーザー ID に返すキャンペーンを作成します。

この演習を開始する前に、以下を実行します。

「使用開始」実習を完了したら、不要な料金が発生しないように、「リソースのクリーンアップ」の手順に従って、作成したリソースを削除します。

注記

この演習の CLI コマンドは Linux でテストされています。Windows で CLI コマンドを使用する方法については、AWS コマンドラインインターフェイスユーザーガイドの「AWS コマンドラインインターフェイスのパラメータ値の指定」を参照してください。

次の手順に従って、データセットグループを作成し、このグループにデータセットを追加します。次に、映画のレーティングデータを使用してデータセットを事前設定します。

  1. 次のコマンドを実行してデータセットグループを作成します。データセットグループを暗号化するには、AWS Key Management Service キーの ARN と、そのキーへのアクセス許可を持つ IAM ロールの ARN を入力パラメータとして渡します。 API の詳細については、「」を参照してください。CreateDatasetGroup.

    aws personalize create-dataset-group --name MovieRatingDatasetGroup --kms-key-arn arn:aws:kms:us-west-2:01234567890:key/1682a1e7-a94d-4d92-bbdf-837d3b62315e --role-arn arn:aws:iam::01234567890:KMS-key-access

    データセットグループの ARN が表示されます。次に例を示します。

    { "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup" }

    作成したデータセットグループを表示するには、返されたデータセットグループの ARN を指定して、describe-dataset-group コマンドを使用します。

    aws personalize describe-dataset-group \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup

    データセットグループとそのプロパティが表示されます。次に例を示します。

    { "datasetGroup": { "name": "MovieRatingDatasetGroup", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "status": "ACTIVE", "creationDateTime": 1542392161.262, "lastUpdatedDateTime": 1542396513.377 } }
    注記

    データセットグループ内にデータセットを作成するには、データセットグループの status が ACTIVE になるまで待ちます。通常、このオペレーションは高速に処理されます。

    データセットグループの ARN が不明な場合は、list-dataset-groups コマンドを使用して、作成したすべてのデータセットグループと ARNs を表示します。

    aws personalize list-dataset-groups
    注記

    describe-object コマンドと list-objects コマンドは、Amazon Personalize のほとんどのオブジェクトで使用できます。これらのコマンドは、この演習で以後取り扱いませんが、いつでも使用可能です。

  2. 次のコードを MovieRatingSchema.json という名前のファイルに保存して、スキーマファイルを JSON 形式で作成します。 スキーマは、以前に ratings.csv に追加したヘッダーと一致します。 スキーマ名は Interactions で、Amazon Personalize で認識される 3 種類のデータセットの 1 つと一致します。詳細については、「」を参照してください。データセットとスキーマ.

    { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" }
  3. 次のコマンドを実行してスキーマを作成します。前のステップで保存したファイルを指定します。次の例は、現在のフォルダに属するファイルを示しています。 API の詳細については、「」を参照してください。CreateSchema.

    aws personalize create-schema \ --name MovieRatingSchema \ --schema file://MovieRatingSchema.json

    スキーマの Amazon リソースネーム (ARN) が表示されます。次に例を示します。

    { "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema" }
  4. 次のコマンドを実行して空のデータセットを作成します。前のステップで返されたデータセットグループの ARN とスキーマの ARN を指定します。dataset-type は、前のステップのスキーマ name と一致する必要があります。 API の詳細については、「」を参照してください。CreateDataset.

    aws personalize create-dataset \ --name MovieRatingDataset \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --dataset-type Interactions \ --schema-arn arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema

    データセットの ARN が表示されます。次に例を示します。

    { "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS" }
  5. トレーニングデータをデータセットに追加します。

    1. 次のコマンドを実行してデータセットのインポートジョブを作成します。前のステップで返されたデータセットの ARN と Amazon S3 バケットの名前を指定します。AWS Identity and Access Management」で作成した IAM (IAM 用の Amazon Personalize ロールの作成.) ロールの ARN を指定します。 API の詳細については、「」を参照してください。CreateDatasetImportJob.

      aws personalize create-dataset-import-job \ --job-name MovieRatingImportJob \ --dataset-arn arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS \ --data-source dataLocation=s3://bucketname/ratings.csv \ --role-arn roleArn

      データセットのインポートジョブの ARN が表示されます。次に例を示します。

      { "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob" }
    2. describe-dataset-import-job コマンドを使用してステータスを確認します。前のステップで返されたデータセットのインポートジョブの ARN を指定します。 API の詳細については、「」を参照してください。DescribeDatasetImportJob.

      aws personalize describe-dataset-import-job \ --dataset-import-job-arn arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob

      データセットのインポートジョブのプロパティとそのステータスが表示されます。最初、status は CREATE PENDING と表示されます。次に例を示します。

      { "datasetImportJob": { "jobName": "MovieRatingImportJob", "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob", "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS", "dataSource": { "dataLocation": "s3://<bucketname>/ratings.csv" }, "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }

      ステータスが ACTIVE と表示されると、データセットのインポートが完了します。これで、指定したデータセットを使用してモデルをトレーニングする準備が整いました。

      注記

      インポートには時間がかかります。データセットのインポートが完了するまで待ってから、データセットを使用してモデルのトレーニングを開始します。

モデルを初めてトレーニングするには 2 つのステップが必要です。まず、CreateSolution オペレーションを使用してモデルをトレーニングするための設定を作成します。​ 次に、CreateSolutionVersion オペレーションを使用してモデルをトレーニングします。

レシピとトレーニングデータを使用してモデルをトレーニングします。Amazon Personalize には事前定義済みのレシピのセットが用意されています。​ 詳細については、「」を参照してください。ステップ 1: レシピを選択する. この演習では AutoML を使用します。これにより、Amazon Personalize は前のステップで作成したデータセットに基づいて最適なレシピを選択できます。

  1. モデルトレーニングの設定を作成するには、次のコマンドを実行します。

    aws personalize create-solution \ --name MovieSolution \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --perform-auto-ml

    ソリューションの ARN が表示されます。次に例を示します。

    { "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution" }
  2. コマンドを使用して create のステータスを確認します。describe-solution前のステップで返されたソリューションの ARN を指定します。 API の詳細については、「」を参照してください。DescribeSolution.

    aws personalize describe-solution \ --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution

    ソリューションのプロパティと作成の status が表示されます。最初、ステータスには CREATE PENDING と表示されます。次に例を示します。

    { "solution": { "name": "MovieSolution", "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "performAutoML": true, "performHPO": false, "solutionConfig": { "autoMLConfig": { "metricName": "precision_at_25", "recipeList": [ "arn:aws:personalize:::recipe/aws-hrnn" ] } }, "creationDateTime": 1543864685.016, "lastUpdatedDateTime": 1543864685.016, "status": "CREATE PENDING" } }

    metricName を書き留めます。recipeList を指定したため、performAutoML はそのメトリクスを最適化するレシピをリストから選択します。Amazon Personalizeメタデータを提供しなかったため、リスト内のレシピは HRNN レシピのみです。

    作成の status が ACTIVE と表示されると、ソリューションの設定が完了し、モデルをトレーニングする準備が整います。

  3. 設定が ACTIVE になったら、次のコマンドを実行してモデルをトレーニングします。

    aws personalize create-solution-version \ --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution

    ソリューションバージョンの ARN が表示されます。次に例を示します。

    { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>" }

    コマンドを使用して、ソリューションバージョンのトレーニングのステータスを確認します。describe-solution-version前のステップで返ったソリューションバージョンの ARN を指定します。 API の詳細については、「」を参照してください。DescribeSolutionVersion.

    aws personalize describe-solution-version \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id

    ソリューションバージョンのプロパティとトレーニングの status が表示されます。最初、ステータスには CREATE PENDING と表示されます。次に例を示します。

    { "solutionVersion": { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", ..., "status": "CREATE PENDING" } }
  4. 最新のソリューションバージョンのトレーニング status が ACTIVE と表示されると、トレーニングは完了します。これで describe-solution-version レスポンスに recipeArn が含まれます。これは、Amazon Personalize によって決定されたモデルを訓練するために使用されたレシピです。次に例を示します。

    { "solutionVersion": { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "performAutoML": true, "recipeArn": "arn:aws:personalize:::recipe/aws-hrnn", "solutionConfig": { "autoMLConfig": { "metricName": "precision_at_25", "recipeList": [ "arn:aws:personalize:::recipe/aws-hrnn" ] } }, ... "status": "ACTIVE" } }

    次に、ソリューションバージョンのメトリクスを確認し、このソリューションバージョンを使用してキャンペーンを作成できます。

    注記

    トレーニングには時間がかかります。トレーニングが完了する (ソリューションバージョンのトレーニングのステータスが ACTIVE と表示される) まで待ってから、このバージョンのソリューションをキャンペーンで使用します。トレーニングを短縮するには perform-auto-ml を使用する代わりに、recipe-arn パラメータを使用して特定のレシピを選択します。

  5. ソリューションバージョンのパフォーマンスを検証するには、そのメトリクスを確認できます。次のコマンドを実行して、ソリューションバージョンのメトリクスを取得します。以前に返ったソリューションバージョンの ARN を指定します。 API の詳細については、「」を参照してください。GetSolutionMetrics.

    aws personalize get-solution-metrics \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id

    レスポンスの例を次に示します。

    { "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/www-solution/<version-id>", "metrics": { "arn:aws:personalize:us-west-2:acct-id:model/awspersonalizehrnnmodel-7923fda9": { "coverage": 0.27, "mean_reciprocal_rank_at_25": 0.0379, "normalized_discounted_cumulative_gain_at_5": 0.0405, "normalized_discounted_cumulative_gain_at_10": 0.0513, "normalized_discounted_cumulative_gain_at_25": 0.0828, "precision_at_5": 0.0136, "precision_at_10": 0.0102, "precision_at_25": 0.0091 } } }

レコメンデーションを取得するには、事前にソリューションのバージョンをデプロイする必要があります。ソリューションのデプロイは、キャンペーンの作成とも呼ばれます。キャンペーンを作成すると、クライアントアプリケーションは GetRecommendations API を使用してレコメンデーションを取得できます。

  1. 次のコマンドを実行してキャンペーンを作成します。前のステップで返ったソリューションバージョンの ARN を指定します。 API の詳細については、「」を参照してください。CreateCampaign.

    aws personalize create-campaign \ --name MovieRecommendationCampaign \ --solution-version-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/version-id \ --min-provisioned-tps 10

    レスポンスの例を次に示します。

    { "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign" }
  2. 次のコマンドを実行してデプロイのステータスを確認します。前のステップで返されたキャンペーンの ARN を指定します。 API の詳細については、「」を参照してください。DescribeCampaign.

    aws personalize describe-campaign \ --campaign-arn arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign

    レスポンスの例を次に示します。

    { "campaign": { "name": "MovieRecommendationCampaign", "campaignArn": "arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign", "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "minProvisionedTPS": "10", "creationDateTime": 1543864775.923, "lastUpdatedDateTime": 1543864791.923, "status": "CREATE IN_PROGRESS" } }
    注記

    キャンペーンからレコメンデーションを取得するには、status が ACTIVE と表示されるまで待ちます。

get-recommendations コマンドを実行してレコメンデーションを取得します。前のステップで返されたキャンペーンの ARN を指定します。リクエストでは、映画のレーティングデータセットのユーザー ID を指定します。 API の詳細については、「」を参照してください。GetRecommendations.

注記

すべてのレシピで GetRecommendations API がサポートされているわけではありません。詳細については、「」を参照してください。ステップ 1: レシピを選択する.

このステップで呼び出す AWS CLI コマンド (personalize-runtime) は、以前のステップとは異なります。

aws personalize-runtime get-recommendations \ --campaign-arn arn:aws:personalize:us-west-2:acct-id:campaign/MovieRecommendationCampaign \ --user-id 123

キャンペーンは、ユーザーが好むと思われるアイテムのレコメンデーション (映画 IDs) のリストをレスポンスで返します。リストは、ユーザーに関連する度合いの高い順 (降順) にソートされます。

{ "itemList": [ { "itemId": "14" }, { "itemId": "15" }, { "itemId": "275" }, { "itemId": "283" }, { "itemId": "273" }, ... ] }