入门 (Amazon CLI) - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

入门 (Amazon CLI)

在本练习中,您将使用Amazon Command Line Interface(Amazon CLI) 来探索 Amazon Personalize 化。您创建一个活动,该活动返回给定用户 ID 的电影推荐。

在开始本练习之前,请先执行以下操作:

完成入门练习后,为避免产生不必要的费用,请按照中的步骤操作清理资源删除您创建的资源。

注意

这些区域有:Amazon CLI本练习中的命令在 Linux 上进行了测试。有关使用Amazon CLI在 Windows 上执行命令,请参阅为 指定参数值Amazon Command Line Interface中的Amazon Command Line Interface用户指南.

按照步骤操作以创建一个数据集组,向此组添加数据集,然后使用电影评级数据填充此数据集。

  1. 通过运行以下命令来创建数据集组。您可以通过传递Amazon 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" }

    使用 describe-dataset-group 命令显示您创建的数据集组,并指定返回的数据集组 ARN。

    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 命令显示您创建的所有数据集组及其 ARN。

    aws personalize list-dataset-groups
    注意

    这些区域有:describe-objectlist-objects命令适用于大多数 Amazon Personalize 化对象。这些命令没有在本练习的其余部分中显示,但它们是可用的。

  2. 通过将以下代码保存到名为 MovieRatingSchema.json 的文件来创建一个 JSON 格式的架构文件。此架构与您之前添加到 ratings.csv 的标题匹配。架构名称为Interactions,它与 Amazon Personalize 识别的三种类型的数据集之一匹配。有关更多信息,请参阅 数据集和架构

    { "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 存储桶名称。提供Amazon Identity and Access Management您在中创建的 (IAM) 角色 ARN创建 Amazon Personalize 的 IAM 角色. 有关该 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 时,数据集导入完成。然后,您可以使用指定的数据集来训练模型。

      注意

      导入需要耗费时间。等待数据集导入完成,然后使用数据集训练模型。

最初训练模型需要两个步骤。首先,您使用 CreateSolution操作创建用于训练模型的配置。其次,您使用 CreateSolutionVersion操作来训练模型。

您将使用配方和训练数据来训练模型。Amazon Personalize 化提供了一组预定义配方。有关更多信息,请参阅 第 1 步:选择配方。在本练习中,您将使用用用户个性化配方。

  1. 通过运行以下命令创建用于训练模型的配置。

    aws personalize create-solution \ --name MovieSolution \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup \ --recipe-arn arn:aws:personalize:::recipe/aws-user-personalization

    这将显示解决方案 ARN,例如:

    { "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution" }
  2. 检查创造使用状态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", "performHPO": false, "performAutoML": false, "recipeArn": "arn:aws:personalize:::recipe/aws-user-personalization", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "solutionConfig": {}, "status": "ACTIVE", "creationDateTime": "2021-05-12T16:27:59.819000-07:00", "lastUpdatedDateTime": "2021-05-12T16:27:59.819000-07:00" } }
  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 状态,训练完成。

    现在您可以查看训练指标并使用解决方案版本创建市场活动。

    注意

    训练需要时间。在活动中使用此版本的解决方案之前,等待训练完成(解决方案的训练状态显示为 ACTIVE)。

  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": { "coverage": 0.0485, "mean_reciprocal_rank_at_25": 0.0381, "normalized_discounted_cumulative_gain_at_10": 0.0363, "normalized_discounted_cumulative_gain_at_25": 0.0984, "normalized_discounted_cumulative_gain_at_5": 0.0175, "precision_at_10": 0.0107, "precision_at_25": 0.0207, "precision_at_5": 0.0107 } }

您必须先部署解决方案版本,然后才能获得推荐。部署解决方案也称为创建活动。一旦您创建活动,您的客户端应用程序就可以使用 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 1

    此时将显示示例响应:

    { "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": "1", "creationDateTime": 1543864775.923, "lastUpdatedDateTime": 1543864791.923, "status": "CREATE IN_PROGRESS" } }
    注意

    在获得来自活动的推荐之前,等待 status 显示为“ACTIVE”。

通过运行 get-recommendations 命令来获得推荐。提供上一步中返回的活动 ARN。在请求中,指定电影评级数据集中的用户 ID。有关该 API 的更多信息,请参阅GetRecommendations

注意

并非所有配方都支持 GetRecommendations API。有关更多信息,请参阅 第 1 步:选择配方

您在此步骤中调用的 Amazon CLI 命令 personalize-runtime 与您在之前的步骤中所调用的不同。

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

在响应中,活动将返回用户可能喜欢的项目推荐(电影 ID)的列表。此列表按用户的相关性进行降序排序。

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