기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
시작하기(AWS CLI)
이 연습에서는 AWS Command Line Interface (AWS CLI) 를 사용하여 Amazon Personalize를 살펴봅니다. 지정한 사용자 ID에 대해 추천 영화를 반환하는 캠페인을 생성합니다.
이 연습을 시작하기 전에 다음 작업을 수행해야 합니다.
-
시작하기 전제 조건 시작하기 검토.
-
에 설정: AWS CLI 지정된 대로 AWS CLI를 설정합니다.
시작하기 연습을 마치면 불필요한 요금이 발생하지 않도록 생성한 리소스를 삭제하세요. 자세한 내용은 Amazon Personalize 리소스 삭제 요구 사항 단원을 참조하십시오.
참고
이 연습의 AWS CLI 명령은 Linux에서 테스트되었습니다. Windows에서의 AWS CLI 명령 사용에 대한 자세한 내용은AWS Command Line Interface 사용 설명서의 AWS Command Line Interface에 대한 파라미터 값 지정 단원을 참조하세요.
아래 단계를 수행해 데이터세트 그룹을 생성하고, 이 그룹에 데이터세트를 추가한 다음 영화 평점 데이터를 사용하여 이 데이터세트를 채웁니다.
-
다음 명령을 실행하여 데이터세트 그룹을 생성합니다. AWS Key Management ServiceARN키와 해당 키에 대한 액세스 권한이 있는 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
명령어를 사용하여 생성한 데이터세트 그룹을 표시하고 반환된 데이터세트 그룹을 지정합니다. ARNaws 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 } }
참고
그룹에 데이터세트를 ACTIVE 생성하기 전에 데이터세트 그룹이
status
표시될 때까지 기다리세요. 이 작업은 일반적으로 빠르게 진행됩니다.데이터세트 그룹이 ARN 기억나지 않는 경우
list-dataset-groups
명령어를 사용하여 생성한 모든 데이터세트 그룹을 해당 그룹과 함께 표시하세요. ARNsaws personalize list-dataset-groups
참고
describe-object
및list-objects
명령은 대부분의 Personalize 객체에 사용할 수 있습니다. 이러한 명령은 이 연습의 나머지 부분에는 표시되지 않지만 사용할 수 있습니다. -
라는 파일에 다음 코드를 저장하여 JSON 형식에 맞는 스키마 파일을 생성합니다.
MovieRatingSchema.json
이 스키마는 이전에ratings.csv
에 추가한 헤더와 일치합니다. 스키마 이름은Interactions
로, Amazon Personalize에서 인식하는 데이터 세트 유형 중 하나와 일치합니다. 자세한 내용은 Personalize 스키마에 대한 스키마 JSON 파일 생성 단원을 참조하십시오.{ "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/MovieRatingSchemaARN데이터셋이 표시됩니다. 예를 들면 다음과 같습니다.
{ "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieRatingDatasetGroup/INTERACTIONS" }
-
데이터세트에 학습 데이터를 추가합니다.
-
다음 명령을 실행하여 데이터세트 가져오기 작업을 생성합니다. 이전 단계에서 반환된 데이터 ARN 세트와 Amazon S3 버킷 이름을 제공합니다. 에서 ARN Amazon IAM Personalize를 위한 역할 생성 생성한 AWS Identity and Access Management (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://amzn-s3-demo-bucket
/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://amzn-s3-demo-bucket/ratings.csv" }, "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }
상태가 로 ACTIVE 표시되면 데이터세트 가져오기가 완료된 것입니다. 그러면 지정된 데이터세트를 사용하여 모델을 학습시킬 준비가 된 것입니다.
참고
가져오기에는 시간이 필요합니다. 데이터세트를 사용하여 모델을 학습시키려면 먼저 데이터세트 가져오기가 완료될 때까지 기다려야 합니다.
-
모델을 학습시키려면 CreateSolution 연산을 사용하여 모델을 훈련하기 위한 구성을 만들고 자동 학습은 켜두어야 합니다. 솔루션은 한 시간 내에 첫 번째 솔루션 학습을 자동으로 시작합니다.
레시피와 학습 데이터를 사용하여 모델을 학습시킵니다. Personalize는 미리 정의된 레시피 세트를 제공합니다. 자세한 내용은 레시피 선택 단원을 참조하십시오. 이 연습에서는 사용자 개인화-v2 레시피를 사용합니다.
-
다음 명령을 실행하여 모델을 학습시키기 위한 구성을 생성합니다. 이 명령은 자동 학습을 사용하는 솔루션을 생성합니다. 7일마다 새 솔루션 버전이 자동으로 생성됩니다 (기본값).
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" } }
-
자동 교육을 사용하면 솔루션 버전 학습이 솔루션 출시 후 1년 이내에 시작됩니다ACTIVE. 교육이 시작된 후 다음 ListSolutionVersions명령을 사용하여 솔루션 버전의 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 같으면 교육이 완료됩니다.이제 학습 지표를 검토하고 솔루션 버전을 사용하여 캠페인을 만들 수 있습니다.
참고
학습에는 시간이 필요합니다. 캠페인에서 이 버전의 솔루션을 사용하기 전에 교육이 완료될 때까지 기다리십시오 (솔루션 버전의 교육 상태는 다음과 같습니다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" } }
참고
캠페인에서 추천을 받기 ACTIVE 전에
status
쇼가 열릴 때까지 기다리세요.
get-recommendations
명령을 실행하여 추천을 받습니다. 이전 단계에서 ARN 반환된 캠페인을 제공하십시오. 요청 시 영화 평점 데이터세트의 사용자 ID를 지정합니다. 에 대한 자세한 내용은 API 을 참조하십시오GetRecommendations.
참고
모든 레시피가 지원하는 것은 아닙니다 GetRecommendations
API. 자세한 내용은 레시피 선택 단원을 참조하십시오.
이 단계에서 호출하는 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" }, ... ] }