기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
시작하기(AWS CLI)
이 연습에서는 AWS Command Line Interface (AWS CLI)를 사용하여 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 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
명령은 대부분의 Personalize 객체에 사용할 수 있습니다. 이러한 명령은 이 연습의 나머지 부분에는 표시되지 않지만 사용할 수 있습니다. -
다음 코드를
MovieRatingSchema.json
파일에 저장해 스키마 파일을 JSON 형식으로 생성합니다. 이 스키마는 이전에ratings.csv
에 추가한 헤더와 일치합니다. 스키마 이름은Interactions
로, Amazon Personalize에서 인식하는 데이터 세트 유형 중 하나와 일치합니다. 자세한 내용은 Amazon 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
스키마의 리소스 이름(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 및 S3 버킷 이름을 입력합니다. 에서 생성한 AWS Identity and Access Management (IAM) 역할 ARN을 제공합니다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://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 작업을 사용하여 모델을 학습하기 위한 구성을 생성하고 자동 학습을 활성화한 상태로 둡니다. 솔루션은 1시간 이내에 첫 번째 솔루션을 자동으로 학습하기 시작합니다.
레시피와 학습 데이터를 사용하여 모델을 학습시킵니다. Personalize는 미리 정의된 레시피 세트를 제공합니다. 자세한 내용은 레시피 선택 단원을 참조하십시오. 이 연습에서는 User-Personalization-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시간 이내에 솔루션 버전 생성이 시작됩니다. 학습이 시작된 후 다음 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 } }
추천을 받으려면 먼저 솔루션 버전을 배포해야 합니다. 솔루션 배포를 캠페인 생성이라고도 합니다. 캠페인을 생성하면 클라이언트 애플리케이션이 GetRecommendationsAPI를 사용하여 추천을 가져올 수 있습니다.
-
다음 명령을 실행하여 캠페인을 생성합니다. 이전 단계에서 반환된 솔루션 버전 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를 지원하지 않습니다. 자세한 내용은 레시피 선택 단원을 참조하십시오.
이 단계에서 호출하는 AWS 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"
},
...
]
}