本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
入门 (Amazon CLI)
在本练习中,您将使用 Amazon Command Line Interface (Amazon CLI) 来探索 Amazon Personalize。您创建一个活动,该活动返回给定用户 ID 的电影推荐。
在开始本练习之前,请先执行以下操作:
-
查看入门入门先决条件。
-
按照中的说明进行设置设置 Amazon CLI。 Amazon CLI
完成入门练习后,为避免产生不必要的费用,请按照清理资源中的步骤,删除您创建的资源。
注意
本练习中的 Amazon CLI 命令已在 Linux 上进行了测试。有关在 Windows 上使用 Amazon CLI 命令的信息,请参阅《Amazon Command Line Interface 用户指南》中的为 Amazon Command Line Interface指定参数值。
按照步骤操作以创建一个数据集组,向此组添加数据集,然后使用电影评级数据填充此数据集。
-
通过运行以下命令来创建数据集组。您可以通过传递 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-arnarn: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-object
和list-objects
命令适用于大多数 Amazon Personalize 对象。这些命令没有在本练习的其余部分中显示,但它们是可用的。 -
通过将以下代码保存到名为
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" }
-
通过运行以下命令创建架构。指定您在上一个步骤中保存的文件。此示例将该文件显示为属于当前文件夹。有关该 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" }
-
通过运行以下命令来创建一个空数据集。提供之前的步骤中返回的数据集组 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" }
-
将训练数据添加到数据集。
-
通过运行以下命令来创建数据集导入作业。提供之前步骤中返回的数据集 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-arnroleArn
这将显示数据集导入作业 ARN,例如:
{ "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob" }
-
通过使用
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操作创建用于训练模型的配置,并开启自动训练。该解决方案会在一小时内自动开始训练第一个解决方案。
使用食谱和训练数据来训练模型。Amazon Personalize 提供一组预定义的食谱。有关更多信息,请参阅 选择食谱。在本练习中,您将使用用户个性化-v2 配方。
-
通过运行以下命令创建用于训练模型的配置。此命令创建使用自动训练的解决方案。它每七天自动创建一个新的解决方案版本(默认)。
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-v2 \ --perform-auto-training \ --solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(7 days)\"}}"这将显示解决方案 ARN,例如:
{ "solutionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution" }
-
使用
describe-solution
命令检查创建 状态。提供上一步中返回的解决方案 ARN。有关该 API 的更多信息,请参阅DescribeSolution。aws personalize describe-solution \ --solution-arn arn:aws:personalize:us-west-2:
acct-id
:solution/MovieSolution这将显示解决方案的属性和创建
status
。例如:{ "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-v2", "datasetGroupArn": "arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieRatingDatasetGroup", "solutionConfig": { "algorithmHyperParameters": { "apply_recency_bias": "true" }, "featureTransformationParameters": {}, "autoTrainingConfig": { "schedulingExpression": "rate(7 days)" } }, "status": "ACTIVE", "creationDateTime": "2021-05-12T16:27:59.819000-07:00", "lastUpdatedDateTime": "2021-05-12T16:27:59.819000-07:00" } }
-
通过自动训练,解决方案版本训练将在解决方案处于活动状态后在一分钟内开始。训练开始后,您可以使用以下ListSolution版本命令获取解决方案版本的 Amazon 资源名称 (ARN):
aws personalize list-solution-versions --solution-arn arn:aws:personalize:us-west-2:
acct-id
:solution/MovieSolution -
通过使用
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" } }
-
当解决方案版本
status
为活动时,表示训练完成。现在,您可以使用解决方案版本,查看训练指标并创建市场活动。
注意
训练需要时间。在活动中使用此版本的解决方案之前,等待训练完成(解决方案的训练状态显示为 ACTIVE)。
-
您可通过检查解决方案版本的指标来验证解决方案的性能。通过运行以下命令来获取解决方案版本的指标。提供之前返回的解决方案版本 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 获得建议。
-
通过运行以下命令来创建活动。提供上一步中返回的解决方案版本 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" }
-
通过运行以下命令来检查部署状态。提供上一步中返回的活动 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。有关更多信息,请参阅 选择食谱。
您在此步骤中调用的 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" }, ... ] }