도메인 데이터세트 그룹 시작하기(Python용 SDK(Boto3)) - Personalize

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

도메인 데이터세트 그룹 시작하기(Python용 SDK(Boto3))

이 가이드에서는 Python용 SDK(Boto3)를 사용하여 VIDEO_ON_DEMAND 도메인에 대한 도메인 데이터세트 그룹을 만드는 방법을 보여줍니다. 이 자습서에서는 가장 적합한 추천 제품 사용 사례를 위한 추천자를 생성합니다.

시작하기 연습을 마쳤을 때 불필요한 요금이 발생하지 않도록 하려면 생성한 리소스를 삭제합니다. 자세한 내용은 Amazon Personalize 리소스 삭제 요구 사항 단원을 참조하십시오.

사전 조건

다음은 이 안내서에서 Python 예제를 사용하기 위한 필수 조건 단계입니다.

  • 시작하기 전제 조건를 완료하여 필요한 권한을 설정하고 학습 데이터를 생성합니다. 고유한 소스 데이터를 사용하는 경우 필수 조건 단계와 같이 데이터의 형식이 지정되었는지 확인합니다.

  • 설정 AWS SDKs에 지정된 대로 AWS SDK for Python (Boto3)환경을 설정합니다.

튜토리얼

다음에 이어지는 단계에서는 환경을 확인하고 Personalize용 Python용 SDK(Boto3) 클라이언트를 생성합니다. 그런 다음 데이터를 가져오고, 가장 적합한 추천 제품 사용 사례를 위한 추천자를 생성한 다음 추천을 받습니다.

필수 조건을 완료한 후 다음 Python 예제를 실행하여 환경이 올바르게 구성되었는지 확인합니다. 또한 이 코드는 이 자습서에서 사용하는 Personalize boto3 클라이언트를 생성합니다. 환경이 올바르게 구성된 경우 사용 가능한 레시피 목록이 표시되고 이 자습서의 다른 Python 예제를 실행할 수 있습니다.

import boto3 personalizeRt = boto3.client('personalize-runtime') personalize = boto3.client('personalize') response = personalize.list_recipes() for recipe in response['recipes']: print (recipe)

Personalize boto3 클라이언트를 생성하고 환경을 확인했으면, 시작하기 전제 조건완료 시 생성한 과거 데이터를 가져옵니다. 과거 데이터를 Personalize로 가져오려면 다음과 같이 합니다.

  1. 다음 코드를 사용하여 Personalize에서 스키마를 생성합니다. gs-domain-interactions-schema을 스키마의 이름으로 바꿉니다.

    import json schema = { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "EVENT_TYPE", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" } create_interactions_schema_response = personalize.create_schema( name='gs-domain-interactions-schema', schema=json.dumps(schema), domain='VIDEO_ON_DEMAND' ) interactions_schema_arn = create_interactions_schema_response['schemaArn'] print(json.dumps(create_interactions_schema_response, indent=2))
  2. 다음 코드를 사용하여 데이터세트 그룹을 생성합니다. dataset group name을 데이터세트 그룹의 이름으로 바꿉니다.

    response = personalize.create_dataset_group( name = 'dataset group name', domain = 'VIDEO_ON_DEMAND' ) dsg_arn = response['datasetGroupArn'] description = personalize.describe_dataset_group(datasetGroupArn = dsg_arn)['datasetGroup'] print('Name: ' + description['name']) print('ARN: ' + description['datasetGroupArn']) print('Status: ' + description['status'])
  3. 다음 코드를 사용하여 새 데이터 세트 그룹에 항목 상호 작용 데이터 세트를 만듭니다. 데이터세트에 이름을 지정하고 이전 단계의 schema_arndataset_group_arn를 입력합니다.

    response = personalize.create_dataset( name = 'interactions-dataset-name', schemaArn = interactions_schema_arn, datasetGroupArn = dsg_arn, datasetType = 'INTERACTIONS' ) dataset_arn = response['datasetArn']
  4. 다음 코드를 사용한 데이터세트 가져오기 작업으로 데이터를 가져옵니다. 코드는 describe_dataset_import_job 메서드를 사용하여 작업 상태를 추적합니다.

    작업 이름, 이전 단계의 dataset_arn, 학습 데이터를 저장한 S3 버킷 경로(s3://bucket name/folder name/ratings.csv), IAM 서비스 역할의 ARN 등을 파라미터로 전달합니다. 시작하기 전제 조건의 일부로 이 역할을 생성했습니다. 버킷에 액세스할 수 있는 권한이 Personalize에 필요합니다. 액세스 권한 부여에 대한 자세한 내용은 Personalize에 S3 리소스에 대한 액세스 권한 부여단원을 참조하세요.

    import time response = personalize.create_dataset_import_job( jobName = 'JobName', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://amzn-s3-demo-bucket/filename.csv'}, roleArn = 'role_arn' ) dataset_interactions_import_job_arn = response['datasetImportJobArn'] description = personalize.describe_dataset_import_job( datasetImportJobArn = dataset_interactions_import_job_arn)['datasetImportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetImportJobArn']) print('Status: ' + description['status']) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: describe_dataset_import_job_response = personalize.describe_dataset_import_job( datasetImportJobArn = dataset_interactions_import_job_arn ) status = describe_dataset_import_job_response["datasetImportJob"]['status'] print("Interactions DatasetImportJob: {}".format(status)) if status == "ACTIVE" or status == "CREATE FAILED": break time.sleep(60)

데이터세트 가져오기 작업이 완료되면 추천자를 생성할 준비가 된 것입니다. 추천자를 생성하려면 다음 코드를 사용합니다. 추천자 이름, 데이터세트 그룹의 리소스 이름(ARN), 레시피 ARN에 대한 arn:aws:personalize:::recipe/aws-vod-top-picks을 파라미터로 전달합니다. 코드는 describe_commender 메서드를 사용하여 추천자의 상태를 추적합니다.

import time create_recommender_response = personalize.create_recommender( name = 'gs-python-top-picks', recipeArn = 'arn:aws:personalize:::recipe/aws-vod-top-picks', datasetGroupArn = dsg_arn ) recommender_arn = create_recommender_response['recommenderArn'] print('Recommender ARN:' + recommender_arn) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: version_response = personalize.describe_recommender( recommenderArn = recommender_arn ) status = version_response["recommender"]["status"] if status == "ACTIVE": print("Creation succeeded for {}".format(recommender_arn)) elif status == "CREATE FAILED": print("Creation failed for {}".format(recommender_arn)) if status == "ACTIVE": break else: print("Recommender creation is still in progress") time.sleep(60)

추천자를 만든 후에는 이를 사용하여 다음 코드를 통해 추천을 받을 수 있습니다. 이전 단계에서 생성한 추천자의 리소스 이름(ARN)과 사용자 ID(예: 123)를 파라미터로 전달합니다. 메서드가 추천 항목 목록을 인쇄합니다.

response = personalizeRt.get_recommendations( recommenderArn = "arn:aws:personalize:us-west-2:014025156336:recommender/gs-python-top-picks-89", userId = '123' ) print("Recommended items") for item in response['itemList']: print (item['itemId'])

주피터(IPython) 노트북으로 Personalize API 사용 시작하기

주피터 노트북으로 도메인 데이터세트 그룹 생성을 시작하려면 Personalize 샘플 리포지토리의 notebooks_managed_domain 폴더에 있는 노트북 시리즈를 복제하거나 다운로드합니다. 노트북에서는 Personalize를 사용하여 학습 데이터를 가져오고, 추천자를 생성하고, 추천을 받는 과정을 안내합니다.

참고

노트북을 시작하기 전에 README.md의 단계에 따라 환경을 구축해야 합니다