

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

# 시작하기(AWS CLI)
<a name="getting-started-cli"></a>

이 연습에서는 AWS Command Line Interface(AWS CLI)를 사용해 Personalize를 살펴봅니다. 지정한 사용자 ID에 대해 추천 영화를 반환하는 캠페인을 생성합니다.

이 연습을 시작하기 전에 다음 작업을 수행해야 합니다.
+ [시작하기 전제 조건](gs-prerequisites.md) 시작하기 검토.
+ [설정 AWS CLI](aws-personalize-set-up-aws-cli.md)의 설명대로 AWS CLI설정.

시작하기 연습을 마쳤을 때 불필요한 요금이 발생하지 않도록 하려면 생성한 리소스를 삭제합니다. 자세한 내용은 [Amazon Personalize 리소스 삭제 요구 사항](deleting-resources.md) 섹션을 참조하세요.

**참고**  
이 연습에 사용된 AWS CLI 명령은 Linux에서 테스트되었습니다. Windows에서의 AWS CLI명령 사용에 대한 자세한 내용은 AWS Command Line Interface사용 설명서의 [AWS Command Line Interface에 대한 파라미터 값 지정](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html) 단원을 참조하세요.**

## 1단계: 학습 데이터 가져오기
<a name="gs-create-ds"></a>

아래 단계를 수행해 데이터세트 그룹을 생성하고, 이 그룹에 데이터세트를 추가한 다음 영화 평점 데이터를 사용하여 이 데이터세트를 채웁니다.

1. 다음 명령을 실행하여 데이터세트 그룹을 생성합니다. [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) 키 ARN 및 해당 키에 대한 액세스 권한이 있는 IAM 역할의 ARN을 입력 파라미터로 전달하면 데이터세트 그룹을 암호화할 수 있습니다. API에 대한 자세한 내용은 [CreateDatasetGroup](API_CreateDatasetGroup.md)단원을 참조하세요.

   ```
   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-object` 및 `list-objects`명령은 대부분의 Personalize 객체에 사용할 수 있습니다. 이러한 명령은 이 연습의 나머지 부분에는 표시되지 않지만 사용할 수 있습니다.

1. 다음 코드를 `MovieRatingSchema.json`파일에 저장해 스키마 파일을 JSON 형식으로 생성합니다. 이 스키마는 이전에 `ratings.csv`에 추가한 헤더와 일치합니다. 스키마 이름은 `Interactions`로, Amazon Personalize에서 인식하는 데이터 세트 유형 중 하나와 일치합니다. 자세한 내용은 [Amazon Personalize 스키마에 대한 스키마 JSON 파일 생성](how-it-works-dataset-schema.md) 섹션을 참조하세요.

   ```
   {
     "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"
   }
   ```

1. 다음 명령을 실행하여 스키마를 생성합니다. 이전 단계에서 저장한 파일을 지정합니다. 이 예제에서는 이 파일을 현재 폴더에 속한 것으로 표시합니다. API에 대한 자세한 내용은 [CreateSchema](API_CreateSchema.md)단원을 참조하세요.

   ```
   aws personalize create-schema \
     --name MovieRatingSchema \
     --schema file://MovieRatingSchema.json
   ```

   스키마의 리소스 이름(ARN)이 예를 들어, 다음과 같이 표시됩니다.

   ```
   {
     "schemaArn": "arn:aws:personalize:us-west-2:acct-id:schema/MovieRatingSchema"
   }
   ```

1. 다음 명령을 실행하여 빈 데이터세트를 생성합니다. 이전 단계에서 반환된 데이터세트 그룹 ARN 및 스키마 ARN을 입력합니다. `dataset-type`은 이전 단계의 스키마 `name`와 일치해야 합니다. API에 대한 자세한 내용은 [CreateDataset](API_CreateDataset.md)단원을 참조하세요.

   ```
   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"
   }
   ```

1. 데이터세트에 학습 데이터를 추가합니다.

   1. 다음 명령을 실행하여 데이터세트 가져오기 작업을 생성합니다. 이전 단계에서 반환된 데이터세트 ARN 및 S3 버킷 이름을 입력합니다. [Personalize에 대한 IAM 역할 생성](set-up-required-permissions.md#set-up-create-role-with-permissions)에서 생성한 AWS Identity and Access Management(IAM) 역할 ARN을 입력합니다. API에 대한 자세한 내용은 [CreateDatasetImportJob](API_CreateDatasetImportJob.md)단원을 참조하세요.

      ```
      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-arn roleArn
      ```

      데이터세트 가져오기 작업 ARN이 예를 들어, 다음과 같이 표시됩니다.

      ```
      {
        "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/MovieRatingImportJob"
      }
      ```

   1. `describe-dataset-import-job` 명령을 사용하여 상태를 확인합니다. 이전 단계에서 반환된 데이터세트 가져오기 작업 ARN을 제공합니다. API에 대한 자세한 내용은 [DescribeDatasetImportJob](API_DescribeDatasetImportJob.md)단원을 참조하세요.

      ```
      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로 표시되면 데이터세트 가져오기가 완료된 것이고, 그러면 지정된 데이터세트를 사용하여 모델을 학습시킬 준비가 된 것입니다.
**참고**  
가져오기에는 시간이 필요합니다. 데이터세트를 사용하여 모델을 학습시키려면 먼저 데이터세트 가져오기가 완료될 때까지 기다려야 합니다.

## 2단계: 솔루션 생성(모델 학습)
<a name="gs-create-solution"></a>

모델을 학습하려면 [CreateSolution](API_CreateSolution.md) 작업을 사용하여 모델을 학습하기 위한 구성을 생성하고 자동 학습을 활성화한 상태로 둡니다. 솔루션은 1시간 이내에 첫 번째 솔루션을 자동으로 학습하기 시작합니다.

레시피와 학습 데이터를 사용하여 모델을 학습시킵니다. Personalize는 미리 정의된 레시피 세트를 제공합니다. 자세한 내용은 [레시피 선택](working-with-predefined-recipes.md) 섹션을 참조하세요. 이 연습에서는 User-Personalization-v2 레시피를 사용합니다.

1. 다음 명령을 실행하여 모델을 학습시키기 위한 구성을 생성합니다. 이 명령은 자동 학습을 사용하는 솔루션을 생성합니다. 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"
   }
   ```

1. `describe-solution` 명령을 사용하여 *생성* 상태를 확인합니다. 이전 단계에서 반환된 솔루션 ARN을 입력합니다. API에 대한 자세한 내용은 [DescribeSolution](API_DescribeSolution.md)단원을 참조하세요.

   ```
   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.  자동 학습을 사용하면 솔루션이 활성화된 된 후 1시간 이내에 솔루션 버전 생성이 시작됩니다. 학습이 시작된 후 다음 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) 명령을 사용하여 솔루션 버전의 Amazon 리소스 이름(ARN)을 가져올 수 있습니다.

   ```
   aws personalize list-solution-versions --solution-arn arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution
   ```

1. `describe-solution-version` 명령을 사용하여 솔루션 버전의 교육 상태를 확인합니다**. 이전 단계에서 반환된 솔루션 버전 ARN을 입력합니다. API에 대한 자세한 내용은 [DescribeSolutionVersion](API_DescribeSolutionVersion.md)단원을 참조하세요.

   ```
   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"
     }
   }
   ```

1. 최신 솔루션 버전 `status`가 ACTIVE로 표시되면 학습이 완료된 것입니다.

   이제 학습 지표를 검토하고 솔루션 버전을 사용하여 캠페인을 만들 수 있습니다.
**참고**  
학습에는 시간이 필요합니다. 캠페인에서 이 솔루션 버전을 사용하려면 학습이 완료될 때까지 기다려야 합니다(솔루션 버전의 학습 상태가 ACTIVE로 표시됨).**

1. 솔루션의 지표를 살펴보면 솔루션 버전의 성능을 확인할 수 있습니다. 다음 명령을 실행하여 솔루션 버전에 대한 지표를 가져옵니다. 이전에 반환된 솔루션 버전 ARN을 제공합니다. API에 대한 자세한 내용은 [GetSolutionMetrics](API_GetSolutionMetrics.md)단원을 참조하세요.

   ```
   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
       }
   }
   ```

## 3단계: 캠페인 생성(솔루션 배포)
<a name="gs-create-campaign"></a>

추천을 받으려면 먼저 솔루션 버전을 배포해야 합니다. 솔루션 배포를 캠페인 생성이라고도 합니다. 캠페인을 생성하면 클라이언트 애플리케이션이 [GetRecommendations](API_RS_GetRecommendations.md)API를 사용하여 추천을 가져올 수 있습니다.

1. 다음 명령을 실행하여 캠페인을 생성합니다. 이전 단계에서 반환된 솔루션 버전 ARN을 입력합니다. API에 대한 자세한 내용은 [CreateCampaign](API_CreateCampaign.md)단원을 참조하세요.

   ```
   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"
   }
   ```

1. 다음 명령을 실행하여 배포 상태를 확인합니다. 이전 단계에서 반환된 캠페인 ARN을 입력합니다. API에 대한 자세한 내용은 [DescribeCampaign](API_DescribeCampaign.md)단원을 참조하세요.

   ```
   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로 표시될 때까지 기다립니다.

## 4단계: 추천 받기
<a name="gs-test"></a>

`get-recommendations` 명령을 실행하여 추천을 받습니다. 이전 단계에서 반환된 캠페인 ARN을 입력합니다. 요청 시 영화 평점 데이터세트의 사용자 ID를 지정합니다. API에 대한 자세한 내용은 [GetRecommendations](API_RS_GetRecommendations.md)단원을 참조하세요.

**참고**  
일부 레시피는 `GetRecommendations`API를 지원하지 않습니다. 자세한 내용은 [레시피 선택](working-with-predefined-recipes.md)단원을 참조하세요.  
이 단계에서 호출하는 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"
      },
      ...
  ]
}
```