

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

# Amazon Personalize 모델 학습 및 배포를 위한 사용자 지정 리소스
<a name="create-custom-resources"></a>

 사용자 지정 레시피를 사용하는 경우 [데이터를 가져온](import-data.md) 후 Amazon Personalize 모델을 학습하고 배포하기 위한 사용자 지정 리소스를 생성할 준비가 되었습니다. 다음 리소스를 사용하여 추천을 받으세요. 사용자 지정 리소스를 생성할 때 다음을 수행합니다.

1. **솔루션 생성 및 구성:** 모델이 특정 비즈니스 니즈를 충족하도록 솔루션 파라미터 및 레시피별 하이퍼파라미터를 사용자 지정합니다. 기본적으로 새 솔루션 버전은 자동 학습을 사용하여 구성 가능한 빈도로 솔루션 버전을 생성합니다. 기본 빈도는 7일마다입니다. 솔루션 구성에 대한 자세한 내용은 [솔루션 구성](customizing-solution-config.md) 섹션을 참조하세요. Amazon Personalize의 사용자 지정 레시피에 대한 자세한 내용은 [레시피 선택](working-with-predefined-recipes.md) 섹션을 참조하세요.

1. **솔루션 버전 생성(자동 학습을 사용하지 않는 솔루션의 경우):** 자동 학습을 사용하는 솔루션의 경우 솔루션이 활성화된 후 솔루션 버전 생성이 자동으로 시작됩니다. 수동 학습을 사용하는 솔루션의 경우 솔루션 버전을 수동으로 생성합니다. 솔루션 버전은 Personalize 추천 또는 사용자 세그먼트를 생성합니다. 솔루션 버전의 수동 생성에 대한 자세한 내용은 [솔루션 버전 수동 생성](creating-a-solution-version.md) 섹션을 참조하세요. 솔루션 버전 생성을 중지하려면 솔루션 버전 세부 정보 페이지로 이동한 다음 **중지**를 선택합니다. 자세한 내용은 [솔루션 버전 생성 중지](stop-solution-version.md) 섹션을 참조하세요.

1.  **솔루션 버전 평가** — Personalize가 새 솔루션 버전에서 생성하는 지표를 사용하여 모델의 성능을 평가합니다. [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md)을(를) 참조하세요.

1. **캠페인과 함께 솔루션 버전 배포(실시간 추천만 해당):** 캠페인을 생성하여 솔루션 버전을 배포합니다. 실시간 추천을 요청할 때 캠페인을 사용합니다. 배치 추천을 받는 경우, 캠페인을 생성할 필요가 없습니다. 자세한 내용은 [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md) 섹션을 참조하세요. 기존 캠페인의 설정을 변경하려면(예: 추천에서 메타데이터 활성화) 캠페인을 업데이트해야 합니다. 자세한 내용은 [Amazon Personalize 캠페인의 구성 업데이트](update-campaigns.md) 섹션을 참조하세요.

**Topics**
+ [Amazon Personalize에서 사용자 지정 솔루션 구성](customizing-solution-config.md)
+ [솔루션을 업데이트하여 자동 학습 구성 변경](updating-solution.md)
+ [솔루션 버전 수동 생성](creating-a-solution-version.md)
+ [솔루션 버전 생성 중지](stop-solution-version.md)
+ [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md)
+ [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포](campaigns.md)
+ [Amazon Personalize 캠페인의 구성 업데이트](update-campaigns.md)

# Amazon Personalize에서 사용자 지정 솔루션 구성
<a name="customizing-solution-config"></a>

데이터 가져오기를 마치면 솔루션을 생성할 준비가 된 것입니다. *솔루션*이란 Amazon Personalize 레시피, 사용자 지정 학습 파라미터 및 하나 이상의 솔루션 버전의 조합을 말합니다. 솔루션 버전은 학습된 기계 학습 모델을 말합니다.**

기본적으로 모든 새 솔루션은 자동 학습을 사용하여 7일마다 새 솔루션 버전을 생성합니다. 자동 학습은 마지막 학습 이후 대량 또는 실시간 상호 작용 데이터를 가져온 경우에만 발생합니다. 여기에는 항목 상호 작용이 포함되거나, Next-Best-Action 레시피를 사용하는 솔루션의 경우 작업 상호 작용 데이터가 포함됩니다. 솔루션을 삭제할 때까지 자동 학습이 계속됩니다. 자세한 내용은 [자동 학습 구성](solution-config-auto-training.md) 섹션을 참조하세요.

기존 솔루션이 있는 경우, Personalize 콘솔을 사용하여 솔루션을 복제할 수 있습니다. 솔루션을 복제할 때 기존 솔루션의 구성(예: 레시피 및 하이퍼파라미터)을 시작점으로 사용하고 필요에 따라 변경할 수 있습니다. 자세한 내용은 [솔루션 복제(콘솔)](cloning-solution.md) 섹션을 참조하세요.

콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 솔루션을 생성하고 구성할 수 있습니다. 솔루션을 생성한 후에는 Amazon Personalize 콘솔의 솔루션 세부 정보 페이지에서 또는 [DescribeSolution](API_DescribeSolution.md) 작업으로 솔루션의 구성 상세 정보를 볼 수 있습니다.

기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

**Topics**
+ [솔루션 생성](create-solution.md)
+ [자동 학습 구성](solution-config-auto-training.md)
+ [교육 시 사용되는 열 구성](custom-config-columns.md)
+ [추가 목표에 맞게 솔루션 최적화](optimizing-solution-for-objective.md)
+ [이벤트 구성으로 솔루션 최적화](optimizing-solution-events-config.md)
+ [하이퍼파라미터 및 HPO](customizing-solution-config-hpo.md)
+ [교육에 사용할 항목 상호 작용 데이터 선택](event-values-types.md)
+ [솔루션 복제(콘솔)](cloning-solution.md)

# 솔루션 생성
<a name="create-solution"></a>

Amazon Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 사용자 지정 솔루션을 생성할 수 있습니다. 다음은 Amazon Personalize 콘솔을 사용하여 솔루션을 생성하는 자세한 단계와 필수 필드만 사용하여 솔루션을 생성하는 방법을 보여주는 코드 예제를 포함합니다.

**Topics**
+ [솔루션 생성(콘솔)](#configure-solution-console)
+ [솔루션 생성(AWS CLI)](#configure-solution-cli)
+ [솔루션 생성(AWS)](#configure-solution-sdk)

## 솔루션 생성(콘솔)
<a name="configure-solution-console"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

 콘솔에서 솔루션을 생성하려면 데이터세트 그룹을 선택한 다음 솔루션 이름, 레시피 및 선택적 학습 구성을 지정합니다.

**솔루션을 구성하려면(콘솔)**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)에서 Amazon Personalize 콘솔을 열고 계정에 로그인합니다.

1. **데이터세트 그룹** 페이지에서 데이터세트 그룹을 선택합니다.

1. **개요** 페이지의 **3단계**에서 다음 중 하나를 수행합니다.
   + 도메인 데이터세트 그룹을 만든 경우 **사용자 지정 리소스 사용**을 선택하고 **솔루션 생성**을 선택합니다.
   + 사용자 지정 데이터 세트 그룹을 생성한 경우 **솔루션 생성**을 선택합니다.

1. **솔루션 이름의 경우 솔루션에 대한 이름을 지정합니다.**

1. **솔루션 유형**에서 생성하려는 솔루션 유형을 선택합니다. 선택한 유형에 따라 사용 가능한 레시피가 달라집니다.
   + **항목 추천**을 선택하여 사용자를 위한 항목 추천을 받습니다. 개인 맞춤형 영화 추천을 예로 들 수 있습니다.
   + **작업 추천**을 선택하여 사용자를 위한 작업 추천을 받습니다. 예를 들어, 사용자를 위해 앱 다운로드와 같은 차선책 작업을 생성합니다.
   + 항목 데이터를 기반으로 사용자 세그먼트(사용자 그룹)를 가져오려면 **사용자 세분화**를 선택합니다.

1. **레시피**의 경우 레시피를 선택합니다([레시피 선택](working-with-predefined-recipes.md) 참조).

1. **태그**의 경우, 원하는 태그를 추가할 수 있습니다. Personalize 리소스 태그 지정에 대한 자세한 내용은 [Personalize 리소스에 태그 지정](tagging-resources.md)단원을 참조하세요.

1. **다음**을 선택합니다.

1. **학습 구성** 페이지에서 비즈니스 요구 사항에 맞게 솔루션을 사용자 지정합니다.
   + **자동 학습**에서 솔루션이 자동 학습을 사용할지 여부를 선택합니다. 자동 학습을 사용하는 경우 `Automatic training frequency`를 변경할 수 있습니다. 기본 학습 빈도는 7일마다입니다.

     자동 학습을 사용하는 것이 좋습니다. 이를 통해 추천 사항 관련성을 더 쉽게 유지할 수 있습니다. 학습 빈도는 비즈니스 요구 사항, 사용하는 레시피 및 데이터를 가져오는 빈도에 따라 달라집니다. 자세한 내용은 [자동 학습 구성](solution-config-auto-training.md) 섹션을 참조하세요. 관련성 유지에 대한 자세한 내용은 [추천 관련성 유지](maintaining-relevance.md) 섹션을 참조하세요.
   + **하이퍼파라미터 구성**에서 레시피와 비즈니스 니즈에 따라 모든 하이퍼파라미터 옵션을 구성합니다. 레시피에 따라 다른 하이퍼파라미터를 사용합니다. 사용 가능한 하이퍼파라미터는 [레시피 선택](working-with-predefined-recipes.md)의 개별 레시피를 참조하세요.
   + 레시피가 항목 추천이나 사용자 세그먼트를 생성한다면 **학습 열**에서 Amazon Personalize가 솔루션 버전을 생성할 때 고려하는 열을 선택적으로 선택합니다. 자세한 내용은 [교육 시 사용되는 열 구성](custom-config-columns.md) 섹션을 참조하세요.
   + **이벤트 구성**에서 항목 상호 작용 데이터세트에 EVENT\$1TYPE 또는 EVENT\$1TYPE과 EVENT\$1VALUE 열이 모두 있는 경우, 원하는 **이벤트 유형** 및 **이벤트 값 임계치** 필드를 사용하여 Amazon Personalize가 모델을 학습할 때 사용하는 항목 상호 작용 데이터를 선택합니다. 자세한 내용은 [교육에 사용할 항목 상호 작용 데이터 선택](event-values-types.md) 섹션을 참조하세요.

      이벤트 유형이 여러 개 있고 User-Personalization-v2 레시피 또는 Personalized-Ranking-v2 레시피를 사용하는 경우 유형에 따라 다른 가중치를 지정할 수도 있습니다. 예를 들어 클릭 이벤트보다 구매 이벤트에 더 많은 가중치를 부여하도록 솔루션을 구성할 수 있습니다. 자세한 내용은 [이벤트 구성으로 솔루션 최적화](optimizing-solution-events-config.md) 섹션을 참조하세요.
   + [사용자-개인 맞춤 레시피](native-recipe-new-item-USER_PERSONALIZATION.md) 또는 [개인 맞춤형-순위 레시피](native-recipe-search.md)레시피를 사용하는 경우, 원하는 **목표**를 지정하고 **목표 민감도**를 선택하여 관련성 이외에도 목표에 맞추어 솔루션을 최적화합니다. 목표 민감도는 Amazon Personalize가 상호작용 데이터를 통해 목표와 관련성을 기준으로 추천 항목의 균형을 맞추는 방법을 구성합니다. 자세한 내용은 [추가 목표에 맞게 솔루션 최적화](optimizing-solution-for-objective.md) 섹션을 참조하세요.

1. **다음**을 선택하고 솔루션 세부 정보를 검토합니다. 솔루션 구성을 생성한 후에는 변경할 수 없습니다.

1. **솔루션 생성을** 선택합니다. 솔루션을 생성한 후 Amazon Personalize는 1시간 이내에 첫 번째 솔루션 버전을 생성하기 시작합니다. 학습이 시작되면 솔루션 세부 정보 페이지의 **솔루션 버전** 섹션에서 모니터링할 수 있습니다. 자동으로 생성된 솔루션 버전에는 AUTOMATIC의 **학습 유형**이 있습니다.

    솔루션 버전이 활성화 상태이면 추천을 받아서 사용할 준비가 된 것입니다. 활성 솔루션 버전을 사용하는 방법은 추천 사항을 받는 방법에 따라 달라집니다.
   +  실시간 추천의 경우 Amazon Personalize 캠페인과 함께 활성 솔루션 버전을 배포해야 합니다. 캠페인을 사용하여 사용자를 위한 추천을 받을 수 있습니다. [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)을(를) 참조하세요.
   + 배치 추천 사항의 경우 배치 추론 작업 또는 배치 세그먼트 작업을 생성할 때 ACTIVE 솔루션 버전을 지정합니다. [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

## 솔루션 생성(AWS CLI)
<a name="configure-solution-cli"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

AWS CLI를 통해 솔루션을 생성하려면 `create-solution` 명령을 사용합니다. 이 명령에서는 [CreateSolution](API_CreateSolution.md) API 작업을 사용합니다. 다음 코드는 자동 학습을 사용하는 솔루션을 생성하는 방법을 보여줍니다. 5일마다 새 솔루션 버전을 자동으로 생성합니다.

코드를 사용하려면 코드를 업데이트하여 솔루션에 이름을 지정하고, 데이터세트 그룹의 Amazon 리소스 이름(ARN)을 지정하고, 선택적으로 학습 빈도를 변경하고, 사용할 레시피의 ARN을 지정합니다. 레시피에 대한 자세한 내용은 [레시피 선택](working-with-predefined-recipes.md) 단원을 참조하십시오.

```
aws personalize create-solution \
--name solution name \
--dataset-group-arn dataset group ARN \
--recipe-arn recipe ARN \
--perform-auto-training \
--solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(5 days)\"}}"
```
+ 자동 학습을 사용하는 것이 좋습니다. 이를 통해 추천 사항 관련성을 더 쉽게 유지하고 개선할 수 있습니다. 기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 기본 학습 빈도는 7일마다입니다. 학습 빈도는 비즈니스 요구 사항, 사용하는 레시피 및 데이터를 가져오는 빈도에 따라 달라집니다. 자세한 내용은 [자동 학습 구성](solution-config-auto-training.md) 섹션을 참조하세요.
+ 레시피에 따라 코드를 수정하여 레시피 관련 속성 및 하이퍼파라미터를 구성하거나([하이퍼파라미터 및 HPO](customizing-solution-config-hpo.md) 참조), 학습에 사용되는 열을 구성하거나([교육 시(AWS CLI) 사용되는 열 구성](custom-config-columns.md#custom-config-columns-cli) 참조), 학습에 사용되는 상호 작용 데이터를 필터링할 수 있습니다([교육에 사용할 항목 상호 작용 데이터 선택](event-values-types.md) 참조).
+ [사용자-개인 맞춤 레시피](native-recipe-new-item-USER_PERSONALIZATION.md) 또는 [개인 맞춤형-순위 레시피](native-recipe-search.md) 레시피를 사용하면 관련성 이외에도 목표에 맞추어 솔루션을 최적화할 수 있습니다. 자세한 내용은 [추가 목표에 맞게 솔루션 최적화](optimizing-solution-for-objective.md) 섹션을 참조하세요.

솔루션을 생성한 후 나중에 사용할 수 있도록 솔루션 ARN을 기록합니다. 자동 학습을 사용하면 솔루션이 활성화된 된 후 1시간 이내에 솔루션 버전 생성이 시작됩니다. 1시간 내에 솔루션 버전을 수동으로 생성하는 경우 솔루션은 첫 번째 자동 학습을 건너뜁니다. 학습이 시작된 후 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 작업을 사용하여 솔루션 버전의 Amazon 리소스 이름(ARN)을 가져올 수 있습니다. 상태를 가져오려면 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API 작업을 사용합니다.

 솔루션 버전이 활성화 상태이면 추천을 받아서 사용할 준비가 된 것입니다. 활성 솔루션 버전을 사용하는 방법은 추천 사항을 받는 방법에 따라 달라집니다.
+  실시간 추천의 경우 Amazon Personalize 캠페인과 함께 활성 솔루션 버전을 배포해야 합니다. 캠페인을 사용하여 사용자를 위한 추천을 받을 수 있습니다. [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)을(를) 참조하세요.
+ 배치 추천 사항의 경우 배치 추론 작업 또는 배치 세그먼트 작업을 생성할 때 ACTIVE 솔루션 버전을 지정합니다. [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

## 솔루션 생성(AWS)
<a name="configure-solution-sdk"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

AWS SDK를 사용하여 솔루션을 생성하려면 [CreateSolution](API_CreateSolution.md) API 작업을 사용합니다. 다음 코드는 자동 학습을 사용하는 솔루션을 생성하는 방법을 보여줍니다. 5일마다 새 솔루션 버전을 자동으로 생성합니다.

코드를 사용하려면 코드를 업데이트하여 솔루션에 이름을 지정하고, 데이터세트 그룹의 Amazon 리소스 이름(ARN)을 지정하고, 선택적으로 학습 빈도를 변경하고, 사용하려는 레시피의 ARN을 지정합니다. 레시피에 대한 자세한 내용은 [레시피 선택](working-with-predefined-recipes.md) 단원을 참조하십시오.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
  name = 'solution name',
  recipeArn = 'recipe ARN',
  datasetGroupArn = 'dataset group ARN',
  performAutoTraining = True,
  solutionConfig = {
    "autoTrainingConfig": {
      "schedulingExpression": "rate(5 days)"
    }
  }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for JavaScript v3 ]

```
import {
  CreateSolutionCommand,
  PersonalizeClient,
} from "@aws-sdk/client-personalize";

// create client
const personalizeClient = new PersonalizeClient({ region: "REGION" });

// set the solution parameters
export const solutionParam = {
  datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
  recipeArn: "RECIPE_ARN" /* required */,
  name: "SOLUTION_NAME" /* required */,
  performAutoTraining: true /* optional, default is true */,
  solutionConfig: {
    autoTrainingConfig: {
      schedulingExpression:
        "rate(5 days)" /* optional, default is every 7 days */,
    },
  },
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateSolutionCommand(solutionParam)
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------
+ 자동 학습을 사용하는 것이 좋습니다. 이를 통해 추천 사항 관련성을 더 쉽게 유지하고 개선할 수 있습니다. 기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 기본 학습 빈도는 7일마다입니다. 학습 빈도는 비즈니스 요구 사항, 사용하는 레시피 및 데이터를 가져오는 빈도에 따라 달라집니다. 자세한 내용은 [자동 학습 구성](solution-config-auto-training.md) 섹션을 참조하세요.
+ 레시피에 따라 코드를 수정하여 레시피 관련 속성 및 하이퍼파라미터를 구성하거나([하이퍼파라미터 및 HPO](customizing-solution-config-hpo.md) 참조), 학습에 사용되는 열을 구성하거나([교육 시(AWS SDK) 사용되는 열 구성](custom-config-columns.md#custom-configure-columns-sdk) 참조), 학습에 사용되는 상호 작용 데이터를 필터링할 수 있습니다([교육에 사용할 항목 상호 작용 데이터 선택](event-values-types.md) 참조).
+ [사용자-개인 맞춤 레시피](native-recipe-new-item-USER_PERSONALIZATION.md) 또는 [개인 맞춤형-순위 레시피](native-recipe-search.md) 레시피를 사용하면 관련성 이외에도 목표에 맞추어 솔루션을 최적화할 수 있습니다. 자세한 내용은 [추가 목표에 맞게 솔루션 최적화](optimizing-solution-for-objective.md) 섹션을 참조하세요.

솔루션을 생성한 후 나중에 사용할 수 있도록 솔루션 ARN을 기록합니다. 자동 학습을 사용하면 솔루션이 활성화된 된 후 1시간 이내에 솔루션 버전 생성이 시작됩니다. 1시간 내에 솔루션 버전을 수동으로 생성하는 경우 솔루션은 첫 번째 자동 학습을 건너뜁니다. 학습이 시작된 후 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 작업을 사용하여 솔루션 버전의 Amazon 리소스 이름(ARN)을 가져올 수 있습니다. 상태를 가져오려면 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API 작업을 사용합니다.

다음 Python 코드를 사용하여 자동 학습이 시작될 때까지 기다릴 수 있습니다. `wait_for_training_to_start` 메서드는 첫 번째 솔루션 버전의 ARN을 반환합니다.

```
import time
import boto3


def wait_for_training_to_start(new_solution_arn):
    max_time = time.time() + 3 * 60 * 60    # 3 hours
    while time.time() < max_time:
        list_solution_versions_response = personalize.list_solution_versions(
            solutionArn=new_solution_arn
        )
        solution_versions = list_solution_versions_response.get('solutionVersions', [])
        if solution_versions:
            new_solution_version_arn = solution_versions[0]['solutionVersionArn']
            print(f"Solution version ARN: {new_solution_version_arn}")
            return new_solution_version_arn
        else:
            print(f"Training hasn't started yet. Training will start within the next hour.")
            time.sleep(60)


personalize = boto3.client('personalize')

solution_arn = "solution_arn"
solution_version_arn = wait_for_training_to_start(solution_arn)
```

 솔루션 버전이 활성화 상태이면 추천을 받아서 사용할 준비가 된 것입니다. 활성 솔루션 버전을 사용하는 방법은 추천 사항을 받는 방법에 따라 달라집니다.
+  실시간 추천의 경우 Amazon Personalize 캠페인과 함께 활성 솔루션 버전을 배포해야 합니다. 캠페인을 사용하여 사용자를 위한 추천을 받을 수 있습니다. [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)을(를) 참조하세요.
+ 배치 추천 사항의 경우 배치 추론 작업 또는 배치 세그먼트 작업을 생성할 때 ACTIVE 솔루션 버전을 지정합니다. [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

# 자동 학습 구성
<a name="solution-config-auto-training"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

솔루션을 생성할 때 솔루션이 자동 학습을 사용할지 여부를 구성할 수 있습니다. 학습 빈도를 구성할 수도 있습니다. 예를 들어 5일마다 새 솔루션 버전을 생성하도록 솔루션을 구성할 수 있습니다.

기본적으로 모든 새 솔루션은 자동 학습을 사용하여 7일마다 새 솔루션 버전을 생성합니다. 자동 학습은 마지막 학습 이후 대량 또는 실시간 상호 작용 데이터를 가져온 경우에만 발생합니다. 여기에는 항목 상호 작용이 포함되거나, Next-Best-Action 레시피를 사용하는 솔루션의 경우 작업 상호 작용 데이터가 포함됩니다. 솔루션을 삭제할 때까지 자동 학습이 계속됩니다.

자동 학습을 사용하는 것이 좋습니다. 이를 통해 솔루션을 더 쉽게 유지 관리할 수 있습니다. 최신 데이터에서 솔루션을 학습하는 데 필요한 수동 학습을 제거합니다. 자동 학습이 없으면 최신 데이터에서 학습할 수 있도록 새 솔루션 버전을 수동으로 생성해야 합니다. 이로 인해 추천 사항의 기한이 경과되고 전환율이 낮아질 수 있습니다. Amazon Personalize 추천 사항 유지 관리에 대한 자세한 내용은 [추천 관련성 유지](maintaining-relevance.md) 섹션을 참조하세요.

Amazon Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 자동 학습을 구성할 수 있습니다. 콘솔을 사용하여 자동 학습을 구성하는 단계는 [솔루션 생성(콘솔)](create-solution.md#configure-solution-console) 섹션을 참조하세요.

솔루션을 생성한 후 나중에 사용할 수 있도록 솔루션 ARN을 기록합니다. 자동 학습을 사용하면 솔루션이 활성화된 된 후 1시간 이내에 솔루션 버전 생성이 시작됩니다. 1시간 내에 솔루션 버전을 수동으로 생성하는 경우 솔루션은 첫 번째 자동 학습을 건너뜁니다. 학습이 시작된 후 [ListSolutionVersions](https://docs.aws.amazon.com/personalize/latest/dg/API_ListSolutionVersions.html) API 작업을 사용하여 솔루션 버전의 Amazon 리소스 이름(ARN)을 가져올 수 있습니다. 상태를 가져오려면 [DescribeSolutionVersion](https://docs.aws.amazon.com/personalize/latest/dg/API_DescribeSolutionVersion.html) API 작업을 사용합니다.

**Topics**
+ [지침 및 요구 사항](#auto-training-guidelines)
+ [자동 학습 구성(AWS CLI)](#configure-solution-auto-training-cli)
+ [자동 학습 구성(SDK)](#configure-solution-auto-training-sdk)

## 지침 및 요구 사항
<a name="auto-training-guidelines"></a>

다음은 자동 학습에 대한 지침 및 요구 사항입니다.
+  자동 학습은 마지막 학습 이후 대량 또는 실시간 상호 작용 데이터를 가져온 경우에만 발생합니다. 여기에는 항목 상호 작용이 포함되거나, Next-Best-Action 레시피를 사용하는 솔루션의 경우 작업 상호 작용 데이터가 포함됩니다.
+ 각 학습은 학습에 포함하는 데이터세트 그룹의 모든 데이터를 고려합니다. 학습에서 사용되는 열을 구성하는 방법에 대한 자세한 내용은 [교육 시 사용되는 열 구성](custom-config-columns.md) 섹션을 참조하세요.
+ 솔루션 버전을 수동으로 생성할 수 있습니다.
+ 솔루션이 활성화된 후 1시간 이내에 자동 학습이 시작됩니다. 1시간 내에 솔루션 버전을 수동으로 생성하는 경우 솔루션은 첫 번째 자동 학습을 건너뜁니다.
+ 학습 일정은 학습 시작 날짜를 기준으로 합니다. 예를 들어 첫 번째 솔루션 버전이 오후 7시에 학습을 시작하고 주간 훈련을 사용하는 경우 다음 솔루션 버전은 일주일 후 오후 7시에 학습을 시작합니다.
+ 모든 레시피에 대해 최소 주 1회 학습 빈도를 권장합니다. 1일과 30일 사이에서 학습 빈도를 지정할 수 있습니다. 기본값은 7일마다 입니다.
  +  User-Personalization-v2, User-Personalization 또는 Next-Best-Action을 사용하는 경우 솔루션은 추천 사항에 대해 새 항목 또는 작업을 고려하도록 자동으로 업데이트합니다. 자동 업데이트는 자동 학습과 동일하지 않습니다. 자동 업데이트는 완전히 새로운 솔루션 버전을 생성하지 않으며 모델은 최신 데이터에서 학습하지 않습니다. 솔루션을 유지 관리하려면 학습 빈도가 여전히 매주 이상이어야 합니다. 추가 지침 및 요구 사항을 비롯한 자동 업데이트에 대한 자세한 내용은 [자동 업데이트](use-case-recipe-features.md#automatic-updates) 섹션을 참조하세요.
  + 지금-유행을 사용하는 경우 Personalize는 구성 가능한 시간 간격으로 상호작용 데이터에서 가장 인기 있는 항목을 자동으로 식별합니다. Trending-Now는 대량 또는 스트리밍 상호 작용 데이터를 통해 마지막 학습 이후 추가된 항목을 추천할 수 있습니다. 학습 빈도는 여전히 매주 이상이어야 합니다. 자세한 내용은 [지금-유행 레시피](native-recipe-trending-now.md) 섹션을 참조하세요.
  + 자동 업데이트를 사용하는 레시피 또는 Trending-Now 레시피를 사용하지 않을 경우 Amazon Personalize는 다음 학습 이후에만 추천 사항에 대해 새 항목을 고려합니다. 예를 들어 Similar-Items 레시피를 사용하고 매일 새 항목을 추가하는 경우 해당 항목이 같은 날 추천 사항에 표시되도록 일일 자동 학습 빈도를 사용해야 합니다.

## 자동 학습 구성(AWS CLI)
<a name="configure-solution-auto-training-cli"></a>

다음 코드는 5일마다 솔루션 버전을 자동으로 생성하는 솔루션을 생성하는 방법을 보여줍니다. 자동 학습을 끄려면 `perform-auto-training`을 `false`로 설정합니다.

학습 빈도를 변경하려면 `autoTrainingConfig`에서 `schedulingExpression`을 수정할 수 있습니다. 표현식은 `rate(value unit)` 형식이어야 합니다. 값에 1\$130 사이의 숫자를 지정합니다. 단위의 경우 `day` 또는 `days`를 지정합니다.

`create-solution` 명령에 대한 전체 설명은 [솔루션 생성(AWS CLI)](create-solution.md#configure-solution-cli) 섹션을 참조하세요.

```
aws personalize create-solution \
--name solution name \
--dataset-group-arn dataset group ARN \
--recipe-arn recipe ARN \
--perform-auto-training \
--solution-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(5 days)\"}}"
```

## 자동 학습 구성(SDK)
<a name="configure-solution-auto-training-sdk"></a>

다음 코드는 AWS SDK를 통해 자동 학습을 사용하여 솔루션을 생성하는 방법을 보여줍니다. 솔루션은 5일마다 솔루션 버전을 자동으로 생성합니다. 자동 학습을 끄려면 `performAutoTraining`을 `false`로 설정합니다.

학습 빈도를 변경하려면 `autoTrainingConfig`에서 `schedulingExpression`을 수정할 수 있습니다. 표현식은 `rate(value unit)` 형식이어야 합니다. 값에 1\$130 사이의 숫자를 지정합니다. 단위의 경우 `day` 또는 `days`를 지정합니다.

CreateSolution API 작업에 대한 전체 설명은 [솔루션 생성(AWS)](create-solution.md#configure-solution-sdk) 섹션을 참조하세요.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
  name = 'solution name',
  recipeArn = 'recipe ARN',
  datasetGroupArn = 'dataset group ARN',
  performAutoTraining = True,
  solutionConfig = {
    "autoTrainingConfig": {
      "schedulingExpression": "rate(5 days)"
    }
  }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for JavaScript v3 ]

```
import {
  CreateSolutionCommand,
  PersonalizeClient,
} from "@aws-sdk/client-personalize";

// create client
const personalizeClient = new PersonalizeClient({ region: "REGION" });

// set the solution parameters
export const solutionParam = {
  datasetGroupArn: "DATASET_GROUP_ARN" /* required */,
  recipeArn: "RECIPE_ARN" /* required */,
  name: "SOLUTION_NAME" /* required */,
  performAutoTraining: true /* optional, default is true */,
  solutionConfig: {
    autoTrainingConfig: {
      schedulingExpression:
        "rate(5 days)" /* optional, default is every 7 days */,
    },
  },
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateSolutionCommand(solutionParam)
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

다음 Python 코드를 사용하여 자동 학습이 시작될 때까지 기다릴 수 있습니다. `wait_for_training_to_start` 메서드는 첫 번째 솔루션 버전의 ARN을 반환합니다.

```
import time
import boto3

def wait_for_training_to_start(new_solution_arn):
    max_time = time.time() + 3 * 60 * 60    # 3 hours
    while time.time() < max_time:
        list_solution_versions_response = personalize.list_solution_versions(
            solutionArn=new_solution_arn
        )
        solution_versions = list_solution_versions_response.get('solutionVersions', [])
        if solution_versions:
            new_solution_version_arn = solution_versions[0]['solutionVersionArn']
            print(f"Solution version ARN: {new_solution_version_arn}")
            return new_solution_version_arn
        else:
            print(f"Training hasn't started yet. Training will start within the next hour.")
            time.sleep(60)


personalize = boto3.client('personalize')

solution_arn = "solution_arn"
solution_version_arn = wait_for_training_to_start(solution_arn)
```

# 교육 시 사용되는 열 구성
<a name="custom-config-columns"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

레시피가 항목 추천이나 사용자 세그먼트를 생성하는 경우 Amazon Personalize가 솔루션 버전을 생성(모델 교육)할 때 고려하는 열을 수정할 수 있습니다.

교육 시 사용되는 열을 변경하여 Personalize가 모델 교육(솔루션 버전 생성) 시 어떤 데이터를 사용할 것인지를 제어할 수 있습니다. 이를 통해 다양한 교육 데이터 조합을 실험해 볼 수 있습니다. 또는 중요한 데이터가 없는 열을 제외할 수도 있습니다. 예를 들어, 추천을 필터링하는 데만 사용하려는 열이 있을 수 있습니다. 이 열을 교육에서 제외할 수 있으며, Personalize는 필터링할 때만 이 열을 고려합니다.

EVENT\$1TYPE 열은 제외할 수 없습니다. 기본 설정으로 Personalize는 교육 시 사용할 수 있는 모든 열을 사용합니다. 다음 데이터는 항상 학습에서 제외됩니다.
+ 부울 데이터 유형이 있는 열
+ [노출 데이터](interactions-datasets.md#interactions-impressions-data)
+ 범주 또는 텍스트가 아닌 사용자 지정 문자열 필드

 학습에는 노출 데이터를 포함할 수 없지만 사용 사례 또는 레시피가 이를 사용하는 경우 Amazon Personalize는 추천 사항을 제공할 때 노출 데이터를 사용하여 탐색을 안내합니다.

 솔루션을 이미 생성했고 교육 시 사용하는 열을 수정하려는 경우, 솔루션을 복제할 수 있습니다. 솔루션을 복제할 때 기존 솔루션의 구성(예: 레시피 및 하이퍼파라미터)을 시작점으로 사용하고 필요에 따라 변경할 수 있습니다. 자세한 내용은 [솔루션 복제(콘솔)](cloning-solution.md)단원을 참조하세요.

Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWSSDK를 사용하여 교육할 때 Personalize에서 사용하는 열을 구성할 수 있습니다. Personalize 콘솔을 사용하여 열을 선택하는 방법에 대한 자세한 내용은 [솔루션 생성(콘솔)](create-solution.md#configure-solution-console)의 고급 구성 단계를 참조하세요. 솔루션을 생성한 후에는 Personalize 콘솔의 솔루션 세부 정보 페이지에서 또는 [DescribeSolution](API_DescribeSolution.md)작업으로 솔루션에서 사용하는 열을 볼 수 있습니다.

**Topics**
+ [교육 시(AWS CLI) 사용되는 열 구성](#custom-config-columns-cli)
+ [교육 시(AWS SDK) 사용되는 열 구성](#custom-configure-columns-sdk)

## 교육 시(AWS CLI) 사용되는 열 구성
<a name="custom-config-columns-cli"></a>

학습에서 열을 제외하려면 솔루션 구성의 일부로 `trainingDataConfig`의 `excludedDatasetColumns`객체를 제공하세요. 각 키에 대해 데이터세트 유형을 제공하세요. 각 값에 대해 제외할 열 목록을 제공하세요. 다음 코드는 AWS CLI를 사용하여 솔루션을 만들 때 교육에서 열을 제외하는 방법을 보여줍니다.

```
aws personalize create-solution \
--name solution name \
--dataset-group-arn dataset group ARN \
--recipe-arn recipe ARN \
--solution-config "{\"trainingDataConfig\": {\"excludedDatasetColumns\": { \"datasetType\" : [ \"column1Name\", \"column2Name\"]}}}"
```

## 교육 시(AWS SDK) 사용되는 열 구성
<a name="custom-configure-columns-sdk"></a>

학습에서 열을 제외하려면 솔루션 구성의 일부로 `trainingDataConfig`의 `excludedDatasetColumns`객체를 제공하세요. 각 키에 대해 데이터세트 유형을 제공하세요. 각 값에 대해 제외할 열 목록을 제공하세요. 다음 코드는 SDK for Python(Boto3)를 사용하여 솔루션을 만들 때 교육에서 열을 제외하는 방법을 보여줍니다.

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
  name = 'solution name',
  recipeArn = 'recipe ARN',
  datasetGroupArn = 'dataset group ARN',
  solutionConfig = {
    "trainingDataConfig": {
      "excludedDatasetColumns": { 
          "datasetType": ["COLUMN_A", "COLUMN_B"]
      }
    }
  }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

# 추가 목표에 맞게 솔루션 최적화
<a name="optimizing-solution-for-objective"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

 User-Personalization 레시피 또는 Personalized-Ranking 레시피를 사용하는 경우 수익 극대화처럼 관련성을 최대한 높이는 것 외에도 목표에 맞게 Amazon Personalize 솔루션을 최적화할 수 있습니다.

 항목 추천 레시피를 사용하는 경우 Amazon Personalize의 주요 목표는 과거 및 실시간 항목 상호 작용 데이터를 기반으로 사용자에게 가장 관련성이 높은 항목을 예측하는 것입니다. 다음은 사용자가 가장 많이 상호작용할 가능성이 높은 항목입니다(예: 클릭할 가능성이 가장 높은 항목). 스트리밍 시간 최대화나 수익 증대와 같은 추가 목표가 있는 경우 관련성과 목표 두 가지 모두를 기반으로 추천을 생성하는 솔루션을 만들 수 있습니다.

추가 목표에 맞게 솔루션을 최적화하려면 사용자-개인 맞춤 레시피 또는 -순위 레시피로 새 솔루션을 생성하고 목표와 관련된 항목 데이터세트에서 숫자 메타데이터 열을 선택합니다. 추천을 생성할 때 Personalize는 이 데이터 열에 대해 값이 더 높은 항목에 더 많은 중요도를 부여합니다. 예를 들어 스트리밍 시간을 최대화하려면 VIDEO\$1LENGTH 열을 선택하고 수익을 극대화하기 위해 PRICE 열을 선택할 수 있습니다.

Personalize 콘솔, AWS Command Line Interface (AWS CLI) 또는 AWS SDKs. Amazon Personalize 콘솔 사용에 대한 자세한 내용은 [솔루션 생성(콘솔)](create-solution.md#configure-solution-console) 섹션을 참조하세요.

**Topics**
+ [지침 및 요구 사항](#optimize-objective-guidelines-req)
+ [목표 강조와 관련성의 균형 유지](#balancing-objective-emphasis)
+ [최적화 성능 측정](#measuring-performance)
+ [솔루션 최적화(AWS CLI)](#optimizing-solution-cli)
+ [솔루션(AWS SDKs) 최적화](#optimizing-solution-sdk)
+ [샘플 Jupyter Notebook](#optimization-objective-sample-notebooks)

## 지침 및 요구 사항
<a name="optimize-objective-guidelines-req"></a>

 목표 요구 사항은 다음과 같습니다.
+ 목표에 사용할 열을 하나만 선택할 수 있습니다.
+ 스키마의 열은 숫자 유형을 가져야 합니다.
+ 스키마의 열은 `null`유형을 가질 수 없습니다.

스키마와 데이터 유형에 대한 자세한 내용은 [Amazon Personalize 스키마에 대한 스키마 JSON 파일 생성](how-it-works-dataset-schema.md)단원을 참조하세요.

## 목표 강조와 관련성의 균형 유지
<a name="balancing-objective-emphasis"></a>

 관련성보다는 목표에 더 중점을 두고 항목을 추천하는 경우 절충점이 있을 수 있습니다. 예를 들어 추천을 통해 수익을 높이려는 경우 고가의 항목만 추천하면 항목이 사용자와 관련성이 떨어지고 사용자 참여도와 전환율이 낮아질 수 있습니다.

관련성과 목표 간의 균형을 맞추려면 솔루션을 만들 때 다음과 같은 목표 민감도 수준 중 하나를 선택하십시오.
+ 끄기: Amazon Personalize가 주로 항목 상호 작용 데이터를 사용하여 사용자와 가장 관련성이 높은 항목을 예측합니다.
+ 낮음: Personalize가 사용자의 목표에 덜 중점을 둡니다. 항목 상호 작용 데이터를 통한 관련성이 더 중요합니다.
+ 보통: Amazon Personalize가 항목 상호 작용 데이터를 통해 사용자의 목표와 관련성을 동등하게 강조합니다.
+ 높음: Personalize가 고객의 목표에 더 중점을 둡니다. 항목 상호 작용 데이터를 통한 관련성은 그다지 중요하지 않습니다.

## 최적화 성능 측정
<a name="measuring-performance"></a>

최적화 목표를 가진 솔루션에 대한 솔루션 버전을 생성(모델을 학습)하면 Personalize가 `average_rewards_at_k`지표를 생성합니다. `average_rewards_at_k`의 점수는 목표 달성에 있어 솔루션 버전이 얼마나 잘 수행되는지를 나타냅니다. 이 지표를 계산하기 위해 Personalize는 다음과 같이 각 사용자에 대한 보상을 계산합니다.

`rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations`

최종 `average_rewards_at_k`는 1보다 작거나 같고 0보다 큰 10진수 값으로 정규화된 모든 `rewards_per_user`의 평균입니다. 값이 1에 가까울수록 추천에서 기대할 수 있는 사용자당 평균 이득이 더 커집니다.

예를 들어 클릭으로 인한 수익을 극대화하는 것이 목표인 경우 Personalize는 가장 비용이 많이 드는 상위 25개 추천 항목 중에서 사용자가 클릭한 항목에서 발생한 총 수익을 사용자가 클릭한 모든 추천 항목의 수익으로 나누어 각 사용자 점수를 계산합니다. 그러면 Personalize는 모든 사용자 점수의 정규화된 평균을 반환합니다. `average_rewards_at_k`이 1에 가까울수록 추천을 통해 사용자당 얻을 수 있는 평균 수익이 더 커집니다.

지표 생성에 대한 자세한 내용은 [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md)단원을 참조하세요.

## 솔루션 최적화(AWS CLI)
<a name="optimizing-solution-cli"></a>

 사용자-개인 맞춤 또는 -순위 레시피를 통해서만 목표에 맞게 최적화할 수 있습니다. 를 사용하여 추가 목표에 맞게 솔루션을 최적화하려면 새 솔루션을 AWS CLI생성하고 `solutionConfig` 객체의 `optimizationObjective` 키를 사용하여 목표 세부 정보를 지정합니다. `optimizationObjective`에는 다음 필드가 있습니다.
+ `itemAttribute`: 목표와 관련된 항목 데이터세트의 수치 메타데이터 열의 이름을 지정합니다.
+ `objectiveSensitivity`: 추천을 생성할 때 솔루션이 목표에 중점을 두는 정도를 지정합니다. 목표 민감도 수준은 Amazon Personalize가 항목 상호 작용 데이터 세트의 데이터를 통해 목표와 관련성을 기준으로 추천 항목의 균형을 맞추는 방법을 구성합니다. `objectiveSensitivity`은 `OFF`, 낮음, `MEDIUM`또는 `HIGH`가 될 수 있습니다. 자세한 내용은 [목표 강조와 관련성의 균형 유지](#balancing-objective-emphasis)단원을 참조하세요.

다음은 `create-solution` AWS CLI 명령의 예입니다. `solution name`, `dataset group arn`및 `recipe arn`값을 사용자의 값으로 바꿉니다.

`optimizationObjective`의 경우, `COLUMN_NAME`를 해당 목표와 관련된 항목 데이터세트의 숫자 메타데이터 열 이름으로 바꿉니다. `objectiveSensitivity`의 경우 OFF, LOW, MEDIUM 또는 HIGH를 지정합니다.

```
aws personalize create-solution \
--name solution name \
--dataset-group-arn dataset group arn \
--recipe-arn recipe arn \
--solution-config "{\"optimizationObjective\":{\"itemAttribute\":\"COLUMN_NAME\",\"objectiveSensitivity\":\"MEDIUM\"}}"
```

솔루션이 준비되면 새 솔루션 버전을 생성합니다(예제 명령은 [솔루션 생성(AWS CLI)](create-solution.md#configure-solution-cli)참조). 솔루션 버전을 만들었다면 솔루션 버전 지표로 최적화 성능을 볼 수 있습니다. [최적화 성능 측정](#measuring-performance)을(를) 참조하세요.

## 솔루션(AWS SDKs) 최적화
<a name="optimizing-solution-sdk"></a>

사용자-개인 맞춤 또는 -순위 레시피를 통해서만 목표에 맞게 최적화할 수 있습니다.

 AWS SDKs를 사용하여 추가 목표에 맞게 솔루션을 최적화하려면 새 솔루션을 생성하고 솔루션의 `solutionConfig` 객체에 `optimizationObjective` 키를 사용하여 목표 세부 정보를 지정합니다. `optimizationObjective`에는 다음 필드가 있습니다.
+ `itemAttribute`: 목표와 관련된 데이터세트 그룹의 항목 데이터세트의 수치 메타데이터 열의 이름을 지정합니다.
+ `objectiveSensitivity`: 추천을 생성할 때 솔루션이 목표에 중점을 두는 정도를 지정합니다. 목표 민감도 수준은 Amazon Personalize가 항목 상호 작용 데이터 세트의 데이터를 통해 목표와 관련성을 기준으로 추천 항목의 균형을 맞추는 방법을 구성합니다. `objectiveSensitivity`은 `OFF`, `LOW`, `MEDIUM`또는 `HIGH`일 수 있습니다. 자세한 내용은 [목표 강조와 관련성의 균형 유지](#balancing-objective-emphasis) 단원을 참조하십시오.

다음 코드를 사용하여 AWS SDK for Python (Boto3) 또는 AWS SDK for Java 2.x를 통해 추가 목표가 있는 솔루션을 생성합니다.

솔루션이 준비되면 새 솔루션 버전을 생성합니다(예: 코드는 [솔루션 버전 생성(AWS SDK)](creating-a-solution-version.md#create-solution-version-sdk)참조). 솔루션 버전을 만들었다면 솔루션 버전 지표로 최적화 성능을 볼 수 있습니다. [최적화 성능 측정](#measuring-performance)을(를) 참조하세요.

------
#### [ SDK for Python (Boto3) ]

 추가 목표에 최적화된 솔루션을 만들려면 다음 `create_solution`메서드를 사용합니다. `solution name`, `dataset group arn`및 `recipe arn`값을 사용자의 값으로 바꿉니다.

`optimizationObjective`의 경우, `COLUMN_NAME`를 해당 목표와 관련된 항목 데이터세트의 숫자 메타데이터 열 이름으로 바꿉니다. `objectiveSensitivity`의 경우 OFF, LOW, MEDIUM 또는 HIGH를 지정합니다.

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name= 'solution name', 
    recipeArn = 'recipe arn', 
    datasetGroupArn = 'dataset group arn',
    solutionConfig = {
        "optimizationObjective": {
            "itemAttribute": "COLUMN_NAME",
            "objectiveSensitivity": "MEDIUM"
        }
    }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for Java 2.x ]

추가 목표에 최적화된 솔루션을 생성하려면 `createPersonalizeSolution`메서드를 사용하여 Personalize 서비스 클라이언트, 데이터세트 그룹의 Amazon 리소스 이름(ARN), 솔루션 이름, 레시피 ARN, 항목 속성, 목표 민감도 수준 등을 파라미터로 전달합니다.

```
public static String createPersonalizeSolution(PersonalizeClient personalizeClient, 
                                             String datasetGroupArn, 
                                             String solutionName, 
                                             String recipeArn,
                                             String itemAttribute, 
                                             String objectiveSensitivity) {
    
    try {
        OptimizationObjective optimizationObjective = OptimizationObjective.builder()
            .itemAttribute(itemAttribute)
            .objectiveSensitivity(objectiveSensitivity)
            .build();
    
        SolutionConfig solutionConfig = SolutionConfig.builder()
            .optimizationObjective(optimizationObjective)
            .build();

        CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder()
            .name(solutionName)
            .datasetGroupArn(datasetGroupArn)
            .recipeArn(recipeArn)
            .solutionConfig(solutionConfig)
            .build();

        CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest);
        
        return solutionResponse.solutionArn();

    } catch (PersonalizeException e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
    return "";
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients and commands using ES6 syntax.
import { CreateSolutionCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";
  
// create the personalizeClient
const personalizeClient = new PersonalizeClient({ region: "REGION"});

// set the solution parameters.
export const createSolutionParam = {
  datasetGroupArn: 'DATASET_GROUP_ARN',              /* required */
  recipeArn: 'RECIPE_ARN',                           /* required */
  name: 'NAME',                                      /* required */
  solutionConfig: {
    optimizationObjective: {
      itemAttribute: "COLUMN_NAME",           /* specify the numerical column from the Items dataset related to your objective */
      objectiveSensitivity: "MEDIUM"          /* specify OFF, LOW, MEDIUM, or HIGH */
    }
  }
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(new CreateSolutionCommand(createSolutionParam));
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

## 샘플 Jupyter Notebook
<a name="optimization-objective-sample-notebooks"></a>

추가 목표 기반 항목 메타데이터에 최적화된 솔루션을 생성하는 방법을 보여주는 샘플 Jupyter Notebook은 [Personalize 샘플](https://github.com/aws-samples/amazon-personalize-samples) GitHub 리포지토리의 [objective\$1optimization](https://github.com/aws-samples/amazon-personalize-samples/tree/master/next_steps/core_use_cases/objective_optimization) 폴더를 참조하세요

# 이벤트 구성으로 솔루션 최적화
<a name="optimizing-solution-events-config"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

 User-Personalization-v2 레시피 또는 Personalized-Ranking-v2 레시피를 사용하는 경우 이벤트 구성으로 Amazon Personalize 솔루션을 최적화할 수 있습니다.

 항목 추천 레시피를 사용하는 경우 Amazon Personalize의 주요 목표는 과거 및 실시간 항목 상호 작용 데이터를 기반으로 사용자에게 가장 관련성이 높은 항목을 예측하는 것입니다. 그러나 상호 작용에는 사용자가 특정 항목을 클릭했는지 또는 구매했는지와 같은 추가 정보가 포함될 수 있습니다. 이벤트 유형([이벤트 유형 및 이벤트 값 데이터](interactions-datasets.md#event-type-and-event-value-data))을 기록하여 이를 기록할 수 있습니다. 솔루션을 구성할 때 솔루션이 다양한 상호 작용 이벤트 유형에 서로 다른 가중치를 부여하도록 할 수 있습니다. 예를 들어 `purchase` 이벤트보다 `click` 이벤트에 더 많은 가중치를 부여하도록 솔루션을 구성할 수 있습니다.

솔루션이 다양한 이벤트 유형에 다른 가중치를 부여하도록 하려면 솔루션의 이벤트 구성에서 이벤트 유형과 해당 가중치를 지정합니다. 또한 이벤트 값 임계값을 설정하여 이벤트 값이 해당 임계값 미만인 상호 작용은 제외할 수 있습니다. 예를 들어, 시청의 EVENT\$1TYPE이 포함된 이벤트의 EVENT\$1VALUE 데이터가 사용자가 시청한 동영상의 비율이고, 이벤트 값 임계값을 0.5로, 이벤트 유형을 시청으로 설정하면, Personalize는 EVENT\$1VALUE가 0.5 이상인 시청 상호작용 이벤트만 사용하여 모델을 교육합니다.

 이벤트 유형과 관련된 가중치에 따라 중요도가 결정됩니다. 가중치가 높은 이벤트 유형을 사용하면 훈련된 모델이 해당 이벤트 유형과 상호 작용할 항목을 추천할 가능성이 높아집니다. 예를 들어 '클릭'보다 '구매'에 더 높은 가중치를 지정했고 사용자가 상호 작용 내역이 있는 항목 B를 클릭하거나 항목 C를 구매한다는 것을 알게 되었다면, 모델은 항목 C의 순위를 더 높게 매깁니다.

이벤트 구성으로 솔루션을 최적화하려면 User-Personalization-v2 레시피 또는 Personalized-Ranking-v2 레시피로 새 솔루션을 생성하고 이벤트 구성을 지정합니다. 이벤트 구성으로 기존 솔루션([솔루션을 업데이트하여 자동 학습 구성 변경](updating-solution.md))을 업데이트할 수도 있습니다.

Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWSSDK를 사용할 수 있습니다. Amazon Personalize 콘솔 사용에 대한 자세한 내용은 [솔루션 생성(콘솔)](create-solution.md#configure-solution-console) 섹션을 참조하세요.

**Topics**
+ [지침 및 요구 사항](#optimize-event-config-guidelines-req)
+ [이벤트 가중치 구성을 사용하여 성능 측정](#optimize-event-configuration-measuring-performance)
+ [솔루션 최적화(AWS CLI)](#optimize-event-configuration-cli)
+ [솔루션 최적화(AWS SDK)](#optimize-event-configuration-sdk)

## 지침 및 요구 사항
<a name="optimize-event-config-guidelines-req"></a>

 다음은 이벤트 구성에 대한 지침 및 요구 사항입니다.
+ 다양한 이벤트 유형에 대한 가중치를 구성하려면 항목 상호 작용 데이터세트에 EVENT\$1TYPE 열이 있어야 합니다. EVENT\$1VALUE 열은 선택 사항입니다.
+ 구성에서 이벤트 파라미터 목록을 지정할 수 있습니다. 솔루션 생성에 고려되기를 바라는 모든 이벤트 유형을 포함합니다. 최대 10개의 이벤트 유형을 지정할 수 있습니다.
+ 각 이벤트 유형에 줄 이벤트 가중치를 지정할 수 있습니다. 이벤트 가중치는 0.0에서 1.0 사이여야 합니다. 이벤트 유형 간의 가중치 비율만이 중요합니다. 예를 들어 이벤트 유형 ‘구매’에 가중치 0.3, ‘클릭’에 0.1을 설정하면 ‘구매’를 가중치 0.6, ‘클릭’에 0.2를 설정하는 것과 결과는 동일합니다.
+ [UpdateSolution](https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateSolution.html) API 작업을 사용하여 기존 솔루션의 이벤트 구성을 업데이트할 수 있습니다.

## 이벤트 가중치 구성을 사용하여 성능 측정
<a name="optimize-event-configuration-measuring-performance"></a>

 이벤트 구성 기능을 가진 솔루션에 대한 솔루션 버전을 생성(모델을 학습)하면 Amazon Personalize가 `normalized_discounted_cumulative_gain_with_event_weights_at_k` 지표를 생성합니다. `normalized_discounted_cumulative_gain_with_event_weights_at_k`의 점수는 각 이벤트 유형에 대해 설정한 이벤트 가중치를 고려하여 솔루션 버전이 얼마나 잘 작동하는지 알려줍니다.

 K에서 정규화된 할인 누적 이득(NDCG)과 유사하지만 각 올바른 예측에 대한 보상에 가중치가 적용됩니다. 반대로 K의 원래 NDCG에서는 올바른 예측이 모두 1의 가중치를 갖습니다. 예를 들어 가중치가 0.3인 '구매'와 가중치가 0.1인 '클릭'을 설정한 경우 '구매' 항목을 올바르게 예측하면 1.5의 보상을 받는 동시에 '클릭' 항목을 예측하면 0.5의 보상을 받습니다.

지표 생성에 대한 자세한 내용은 [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md)단원을 참조하세요.

## 솔루션 최적화(AWS CLI)
<a name="optimize-event-configuration-cli"></a>

User-Personalization-v2 또는 Personalized-Ranking-v2 레시피를 사용하여 이벤트 구성을 최적화할 수 있습니다.

 AWS CLI를 사용하여 이벤트 구성으로 솔루션을 최적화하려면 새 솔루션을 생성하고 `solutionConfig` 객체의 `eventsConfig` 키를 사용하여 이벤트 구성 세부 정보를 지정합니다. `eventsConfig`에는 최대 10개의 eventParameter를 지정할 수 있는 `eventParametersList`의 키가 있습니다. 각 `eventParameter`에는 다음과 같은 필드가 있습니다.
+ eventType: 솔루션 생성에 고려할 이벤트 유형을 지정합니다.
+ eventValueThreshold: 이벤트 값 임계치를 지정합니다. 이벤트 값이 이 임계치 이상인 이벤트만 솔루션 생성에 고려됩니다.
+ weight: 각 이벤트 유형에 대한 가중치를 지정합니다. 가중치가 높을수록 생성된 솔루션에서 해당 이벤트 유형의 중요도가 높아집니다.

다음은 create-solution AWS CLI 명령의 예입니다. `solution name`, `dataset group arn`및 `recipe arn`값을 사용자의 값으로 바꿉니다.

```
aws personalize create-solution \
--name solution name \
--dataset-group-arn dataset group arn \
--recipe-arn recipe arn \
--solution-config "{\"eventsConfig\":{\"eventParametersList\":[{\"eventType\":\"Purchase\", \"eventValueThreshold\":0.1, \"weight\":0.3}, {\"eventType\":\"Click\", \"weight\":0.1}]}"
```

솔루션이 준비되면 새 솔루션 버전을 생성합니다(예제 명령은 [솔루션 생성(AWS CLI)](create-solution.md#configure-solution-cli)참조). 솔루션 버전을 만들었다면 솔루션 버전 지표로 최적화 성능을 볼 수 있습니다. [최적화 성능 측정](optimizing-solution-for-objective.md#measuring-performance)을(를) 참조하세요.

## 솔루션 최적화(AWS SDK)
<a name="optimize-event-configuration-sdk"></a>

User-Personalization-v2 또는 Personalized-Ranking-v2 레시피를 사용하여 이벤트 구성을 최적화할 수 있습니다.

 AWS SDK를 사용하여 이벤트 구성으로 솔루션을 최적화하려면, 새 솔루션을 생성하고 `solutionConfig` 객체의 `eventsConfig` 키를 사용하여 이벤트 구성 세부 정보를 지정합니다. `eventsConfig`에는 최대 10개의 `eventParameters`를 지정할 수 있는 `eventParametersList`의 키가 있습니다. 각 `eventParameter`에는 다음과 같은 필드가 있습니다.
+ eventType: 솔루션 생성에 고려할 이벤트 유형을 지정합니다.
+ eventValueThreshold: 이벤트 값 임계치를 지정합니다. 이벤트 값이 이 임계치 이상인 이벤트만 솔루션 생성에 고려됩니다.
+ weight: 각 이벤트 유형에 대한 가중치를 지정합니다. 가중치가 높을수록 생성된 솔루션에서 해당 이벤트 유형의 중요도가 높아집니다.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name= 'solution name', 
    recipeArn = 'recipe arn', 
    datasetGroupArn = 'dataset group arn',
    solutionConfig = {
       "eventsConfig": {
          "eventParametersList": [
             {"eventType":"Purchase", 
              "eventValueThreshold":0.1, 
              "weight":0.3}, 
             {"eventType":"Click", 
              "weight":0.1}
          ]
       }
    }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for Java 2.x ]

```
public static String createPersonalizeSolution(PersonalizeClient personalizeClient, 
							  String datasetGroupArn, 
							  String solutionName, 
							  String recipeArn,
							  ) {
    
try {
    EventsConfig eventsConfig = EventsConfig.builder()
        .eventsParameterList(eventsParameterList)
        .build();

    SolutionConfig solutionConfig = SolutionConfig.builder()
        .eventsConfig(eventsConfig)
        .build();

    CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder()
        .name(solutionName)
        .datasetGroupArn(datasetGroupArn)
        .recipeArn(recipeArn)
        .solutionConfig(solutionConfig)
        .build();

    CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest);
    
    return solutionResponse.solutionArn();

} catch (PersonalizeException e) {
    System.err.println(e.awsErrorDetails().errorMessage());
    System.exit(1);
}
return "";
```

------

솔루션이 준비되면 새 솔루션 버전을 생성합니다(예제 명령은 [솔루션 생성(AWS)](create-solution.md#configure-solution-sdk)참조). 솔루션 버전을 만들었다면 솔루션 버전 지표로 최적화 성능을 볼 수 있습니다. [최적화 성능 측정](optimizing-solution-for-objective.md#measuring-performance)을(를) 참조하세요.

# 하이퍼파라미터 및 HPO
<a name="customizing-solution-config-hpo"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

교육 전에 하이퍼파라미터를 지정하여 학습된 모델을 특정 사용 사례에 맞추어 최적화합니다. 이 파라미터는 값이 교육 프로세스 중에 결정되는 모델 파라미터와 대조됩니다.

[CreateSolution](API_CreateSolution.md) 작업에 전달되는 [SolutionConfig](API_SolutionConfig.md)객체의 일부인 `algorithmHyperParameters`키를 사용하여 하이퍼파라미터를 지정합니다.

`CreateSolution` 요청의 요약 버전은 다음과 같습니다. 예제에는 `solutionConfig`객체가 포함되어 있습니다. `solutionConfig`를 사용하여 레시피의 기본 파라미터를 대체합니다.

```
{
  "name": "string",
  "recipeArn": "string",
  "eventType": "string",
  "solutionConfig": {
      "optimizationObjective": {
          "itemAttribute": "string",
          "objectiveSensitivity": "string"
      },
      "eventValueThreshold": "string",
      "featureTransformationParameters": {
          "string" : "string"
      },
      "algorithmHyperParameters": {
          "string" : "string"
      },
      "hpoConfig": {
          "algorithmHyperParameterRanges": {
              ...
          },
          "hpoResourceConfig": {
              "maxNumberOfTrainingJobs": "string",
              "maxParallelTrainingJobs": "string"
          }
      },
  },
}
```

레시피에 따라 다른 하이퍼파라미터를 사용합니다. 사용 가능한 하이퍼파라미터는 [레시피 선택](working-with-predefined-recipes.md)의 개별 레시피를 참조하세요.

## 하이퍼파라미터 최적화 활성화
<a name="hpo-tuning"></a>

하이퍼파라미터 최적화(HPO) 또는 튜닝은 특정 학습 목표에 맞는 최적 하이퍼파라미터를 선택하는 작업입니다. 지정된 가능성 범위 내의 서로 다른 값으로 다양한 교육 작업을 실행하여 최적의 하이퍼파라미터를 결정합니다.

[User-Personalization-v2](native-recipe-user-personalization-v2.md) 및 [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md)를 사용하면 자동 학습을 활성화하면 Amazon Personalize가 90일마다 HPO를 자동으로 수행합니다. 자동 학습이 없으면 HPO가 발생하지 않습니다. 다른 모든 레시피의 경우 HPO를 활성화해야 합니다. HPO를 사용하려면 `performHPO`를 `true`로 설정하고 `hpoConfig`객체를 포함합니다.

하이퍼파라미터에는 범주형, 연속 또는 정수 값이 지정될 수 있습니다. `hpoConfig` 객체에는 하이퍼파라미터와 범위를 지정하는 각 유형에 해당하는 키가 있습니다. 요청에 각 유형을 입력해야 하지만 레시피에 특정 유형의 파라미터가 없는 경우에는 비워 둘 수 있습니다. 예를 들어, 사용자-개인화에는 연속 유형의 조정 가능한 하이퍼파라미터가 없습니다. 따라서 `continousHyperParameterRange`의 경우 빈 배열을 전달합니다.

다음 코드는 SDK for Python(Boto3)를 사용하여 활성화된 HPO로 솔루션을 생성하는 방법을 보여줍니다. 이 예제의 솔루션은 [사용자-개인 맞춤 레시피](native-recipe-new-item-USER_PERSONALIZATION.md)레시피를 사용하며 HPO를 `true`로 설정합니다. 코드는 `hidden_dimension`에 대한 값과 `categoricalHyperParameterRanges`및 `integerHyperParameterRanges`을 제공합니다. `continousHyperParameterRange`는 비어 있고 `hpoResourceConfig`는 `maxNumberOfTrainingJobs`및 `maxParallelTrainingJobs`을 설정합니다.

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name = "solution name",
    datasetGroupArn = 'arn:aws:personalize:region:accountId:dataset-group/datasetGroupName',
    recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization',
    performHPO = True,
    solutionConfig = {
        "algorithmHyperParameters": {
          "hidden_dimension": "55"
        },
        "hpoConfig": {
          "algorithmHyperParameterRanges": {
              "categoricalHyperParameterRanges": [
                  {
                      "name": "recency_mask",
                      "values": [ "true", "false"]
                  }
              ],
              "integerHyperParameterRanges": [
                  {
                      "name": "bptt",
                      "minValue": 2,
                      "maxValue": 22
                  }
              ],
              "continuousHyperParameterRanges": [

              ]
          },
          "hpoResourceConfig": {
              "maxNumberOfTrainingJobs": "4",
              "maxParallelTrainingJobs": "2"
          }
        }
    }
)
```

HPO에 대한 자세한 내용은 [자동 모델 튜닝](https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning.html)을 참조하세요.

## 하이퍼파라미터 보기
<a name="viewing-hyperparameters"></a>

[DescribeSolution](API_DescribeSolution.md) 작업을 호출하여 솔루션의 하이퍼파라미터를 볼 수 있습니다. 다음 예제는 `DescribeSolution`출력을 보여줍니다. 솔루션 버전을 생성하고 나면(모델 교육), [DescribeSolutionVersion](API_DescribeSolutionVersion.md)작업과 함께 하이퍼파라미터를 볼 수도 있습니다.

```
{
  "solution": {
    "name": "hpo_coonfig_solution",
    "solutionArn": "arn:aws:personalize:region:accountId:solution/solutionName",
    "performHPO": true,
    "performAutoML": false,
    "recipeArn": "arn:aws:personalize:::recipe/aws-user-personalization",
    "datasetGroupArn": "arn:aws:personalize:region:accountId:dataset-group/datasetGroupName",
    "eventType": "click",
    "solutionConfig": {
      "hpoConfig": {
        "hpoResourceConfig": {
          "maxNumberOfTrainingJobs": "4",
          "maxParallelTrainingJobs": "2"
        },
        "algorithmHyperParameterRanges": {
          "integerHyperParameterRanges": [
            {
              "name": "training.bptt",
              "minValue": 2,
              "maxValue": 22
            }
          ],
          "continuousHyperParameterRanges": [],
          "categoricalHyperParameterRanges": [
            {
              "name": "data.recency_mask",
              "values": [
                "true",
                "false"
              ]
            }
          ]
        }
      },
      "algorithmHyperParameters": {
        "hidden_dimension": "55"
      }
    },
    "status": "ACTIVE",
    "creationDateTime": "2022-07-08T12:12:48.565000-07:00",
    "lastUpdatedDateTime": "2022-07-08T12:12:48.565000-07:00"
  }
}
```

# 교육에 사용할 항목 상호 작용 데이터 선택
<a name="event-values-types"></a>

**중요**  
기본적으로 모든 새 솔루션은 자동 학습을 사용합니다. 자동 학습을 사용하면 솔루션이 활성화되어 있는 동안 학습 비용이 발생합니다. 불필요한 비용을 방지하기 위해 완료되면 [솔루션을 업데이트](updating-solution.md)하여 자동 학습을 끌 수 있습니다. 학습 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

솔루션 버전을 생성(모델 교육)할 때 Amazon Personalize가 사용하는 항목 상호 작용 데이터 세트의 이벤트를 선택할 수 있습니다. 교육 전에 항목 상호 작용 데이터를 선택하면 관련 데이터 하위 집합만 교육에 사용하거나 노이즈를 제거하여 더 최적화된 모델을 교육할 수 있습니다. 항목 상호 작용 데이터세트에 대한 자세한 내용은 [항목 상호 작용 데이터](interactions-datasets.md) 섹션을 참조하세요.

**참고**  
User-Personalization-v2 또는 Personalized-Ranking-v2를 사용하는 경우 학습 비용은 이벤트 유형 또는 값으로 필터링하기 전에 항목 상호 작용 데이터를 기반으로 합니다. 요금에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

항목 상호 작용 데이터는 다음과 같이 선택할 수 있습니다.
+ **유형을 기준으로 레코드 선택** – 솔루션을 구성할 때 항목 상호 작용 데이터 세트의 EVENT\$1TYPE 열에 이벤트 유형이 포함되어 있는 경우 교육에 사용할 이벤트 유형을 필요에 따라 지정할 수 있습니다. 예를 들어 항목 상호 작용 데이터세트에 *구매*, *클릭* 및 *시청* 이벤트 유형이 포함되어 있고 Amazon Personalize가 *시청* 이벤트만 사용하여 모델을 학습시키도록 하려는 경우, 솔루션을 구성할 때 Amazon Personalize가 학습에 사용하는 `event type`으로 *시청* 유형을 지정하면 됩니다.

  이벤트 유형이 여러 개 있고 User-Personalization-v2 레시피 또는 Personalized-Ranking-v2 레시피를 사용하는 경우 사용자 지정 솔루션을 구성할 때 다양한 유형에 대해 서로 다른 가중치를 지정할 수 있습니다. 예를 들어 클릭 이벤트보다 구매 이벤트에 더 많은 가중치를 부여하도록 솔루션을 구성할 수 있습니다. 자세한 내용은 [이벤트 구성으로 솔루션 최적화](optimizing-solution-events-config.md) 섹션을 참조하세요.

   항목 상호 작용 데이터 세트의 EVENT\$1TYPE 열에 여러 이벤트 유형이 있고 솔루션을 구성할 때 이벤트 유형을 제공하지 않은 경우, Amazon Personalize는 유형에 관계없이 모든 항목 상호 작용 데이터를 동일한 가중치로 학습하는 데 사용합니다.
+ **유형 및 값을 기준으로 레코드 선택** – 솔루션을 구성할 때 항목 상호 작용 데이터 세트에 EVENT\$1TYPE 및 EVENT\$1VALUE 필드가 포함되어 있는 경우 특정 값을 임곗값으로 설정하여 교육에서 레코드를 제외할 수 있습니다. 예를 들어, 시청의 EVENT\$1TYPE이 포함된 이벤트의 EVENT\$1VALUE 데이터가 사용자가 시청한 동영상의 비율이고, 이벤트 값 임계값을 0.5로, 이벤트 유형을 시청으로 설정하면, Personalize는 EVENT\$1VALUE가 0.5 이상인 시청 상호작용 이벤트만 사용하여 모델을 교육합니다.******

다음 코드는 SDK for Python(Boto3)을 사용하여 비디오의 절반 이상을 시청한 `watch` 이벤트만 사용하는 솔루션을 생성하는 방법을 보여줍니다.

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name = 'solution name',
    datasetGroupArn = 'arn:aws:personalize:region:accountId:dataset-group/datasetGroupName',
    recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization-v2',
    eventType = 'watch',
    solutionConfig = {
        "eventValueThreshold": "0.5"
    }
)

# Store the solution ARN
solution_arn = create_solution_response['solutionArn']

# Use the solution ARN to get the solution status
solution_description = personalize.describe_solution(solutionArn = solution_arn)['solution']
print('Solution status: ' + solution_description['status'])
```

# 솔루션 복제(콘솔)
<a name="cloning-solution"></a>

 새 솔루션을 생성할 때 Personalize 콘솔을 사용하여 솔루션을 복제할 수 있습니다. 솔루션을 복제할 때 기존 솔루션의 구성(예: 레시피 및 하이퍼파라미터)을 시작점으로 사용하고 필요에 따라 변경할 수 있습니다. 이 방법은 솔루션을 한 번만 변경하되 다른 모든 속성은 변경하지 않으려는 경우에 유용합니다. 예를 들어, 데이터세트에 교육 데이터의 새 열 추가하기. 이 경우, 솔루션을 복제하고 솔루션에 이름을 지정하고 교육 시 사용되는 열을 변경하고 다른 모든 속성은 변경하지 않고 그대로 둡니다.

## 솔루션 복제
<a name="cloning-solution-console"></a>

솔루션을 복제하려면 기존 솔루션을 선택하고 **솔루션 복제** 옵션을 선택합니다. 그런 다음 새 솔루션에 이름을 지정하고 관련 필드를 수정합니다.

**솔루션을 복제하려면**

1. [https://console.aws.amazon.com/acm-pca/home](https://console.aws.amazon.com/personalize/home)에서 Personalize 콘솔을 열고 계정에 로그인합니다.

1.  **데이터세트 그룹** 페이지에서 데이터세트 그룹을 선택합니다.

1.  **사용자지정 리소스**를 선택하고 **솔루션**을 선택합니다.

1.  복제하려는 솔루션을 선택합니다.

1. **작업**을 선택하고 **솔루션 복제**를 선택합니다.

1. 새 솔루션에 이름을 지정합니다.

1. 솔루션 세부 정보 및 고급 구성을 변경합니다. Personalize는 이러한 필드를 기존 솔루션의 값으로 미리 채웁니다. 각 필드에 대한 자세한 내용은 [Amazon Personalize에서 사용자 지정 솔루션 구성](customizing-solution-config.md)단원을 참조하세요.

# 솔루션을 업데이트하여 자동 학습 구성 변경
<a name="updating-solution"></a>

솔루션을 생성한 후 자동 학습 구성 및 이벤트 구성을 변경할 수 있습니다.
+ 자동 학습을 켜거나 끌 수 있으며 학습 빈도를 변경할 수 있습니다.
  + 자동 학습을 켜면 솔루션 업데이트가 완료된 후 1시간 이내에 첫 번째 자동 학습이 시작됩니다. 1시간 내에 솔루션 버전을 수동으로 생성하는 경우 솔루션은 첫 번째 자동 학습을 건너뜁니다.
  + 솔루션의 학습 빈도를 수정하면 학습 일정이 재설정되고 1시간 내에 새 솔루션 버전이 학습을 시작합니다. 솔루션 버전 생성은 새로운 빈도로 계속되며, 여기서 1일차는 솔루션을 업데이트한 날입니다.
+ 솔루션 이벤트 구성을 업데이트할 수 있습니다. 솔루션에 이미 이벤트 구성이 지정된 경우, 새 이벤트 구성이 원래 이벤트 구성을 대체합니다. 이벤트 구성을 위한 솔루션 최적화에 대한 자세한 내용은 [이벤트 구성으로 솔루션 최적화](optimizing-solution-events-config.md) 섹션을 참조하세요.

Amazon Personalize 콘솔, AWS Command Line Interface 또는 AWS SDK에서 솔루션을 업데이트할 수 있습니다. 솔루션 업데이트에는 몇 분 정도 걸릴 수 있습니다. 업데이트가 진행되는 동안 솔루션에 대한 솔루션 버전을 생성할 수 있지만 솔루션을 삭제할 수는 없습니다. 솔루션은 업데이트가 완료될 때까지 이전 구성을 사용합니다. 자동 학습에 대한 자세한 내용은 [자동 학습 구성](solution-config-auto-training.md) 섹션을 참조하세요.

**Topics**
+ [솔루션 업데이트(콘솔)](#update-solution-console)
+ [솔루션 업데이트(AWS CLI)](#update-solution-cli)
+ [솔루션 업데이트(AWS SDK)](#update-solution-sdk)

## 솔루션 업데이트(콘솔)
<a name="update-solution-console"></a>

 콘솔에서 솔루션을 업데이트하려면 솔루션으로 이동하여 업데이트를 선택하고 사용할 새 구성을 지정합니다.

**솔루션을 구성하려면**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)에서 Amazon Personalize 콘솔을 열고 계정에 로그인합니다.

1. **데이터세트 그룹** 페이지에서 데이터세트 그룹을 선택합니다.

1. 탐색 창에서 **사용자 지정 리소스**를 선택한 후 **솔루션 및 레시피**를 선택합니다.

1. 솔루션을 선택하고 오른쪽 상단에서 **업데이트를** 선택합니다.

1. **자동 학습**에서 솔루션이 자동 학습을 사용할지 여부를 수정합니다. 자동 학습이 켜져 있는 경우 `Automatic training frequency`를 변경할 수 있습니다. 기본 학습 빈도는 7일마다입니다.

1. **솔루션 업데이트**를 선택합니다. 솔루션의 세부 정보 페이지에서 솔루션 업데이트 상태를 확인할 수 있습니다.

## 솔루션 업데이트(AWS CLI)
<a name="update-solution-cli"></a>

`update-solution`로 솔루션을 업데이트하려면 AWS Command Line Interface 명령을 사용합니다. 이 명령에서는 [UpdateSolution](API_UpdateSolution.md) API 작업을 사용합니다. 다음 코드는 5일의 학습 빈도로 자동 학습을 사용하도록 솔루션을 업데이트하는 방법을 보여줍니다. 자동 학습을 끄려면 `--no-perform-auto-training`을 지정하고 `solution-update-config`를 생략합니다.

기본 학습 빈도는 7일마다입니다. 표현식은 `rate(value unit)` 형식이어야 합니다. 값에 1\$130 사이의 숫자를 지정합니다. 단위의 경우 `day` 또는 `days`를 지정합니다.

```
aws personalize update-solution \
--solution-arn solution ARN \
--perform-auto-training \
--solution-update-config "{\"autoTrainingConfig\": {\"schedulingExpression\": \"rate(5 days)\"}}"
```

업데이트 상태를 가져오려면 `describe-solution` 명령([DescribeSolution](API_DescribeSolution.md)API 작업 사용)을 사용하고 `latestSolutionUpdate`에서 업데이트 상태를 찾습니다.

## 솔루션 업데이트(AWS SDK)
<a name="update-solution-sdk"></a>

AWS SDK로 솔루션을 업데이트하려면 [UpdateSolution](API_UpdateSolution.md) API 작업을 사용합니다. 다음 코드는 SDK for Python(Boto3)을 사용하여 5일의 학습 빈도로 자동 학습을 사용하도록 솔루션을 업데이트하는 방법을 보여줍니다. 코드는 [DescribeSolution](API_DescribeSolution.md) API 작업으로 업데이트 상태를 가져옵니다.

기본 학습 빈도는 7일마다입니다. 표현식은 `rate(value unit)` 형식이어야 합니다. 값에 1\$130 사이의 숫자를 지정합니다. 단위의 경우 `day` 또는 `days`를 지정합니다.

```
import boto3

personalize = boto3.client('personalize')

update_solution_response = personalize.update_solution(
    solutionArn='SOLUTION ARN',
    performAutoTraining=True,
    solutionUpdateConfig={
        "autoTrainingConfig": {
            "schedulingExpression": "rate(5 days)"
        }
    }
)
describe_solution_response = personalize.describe_solution(
    solutionArn='SOLUTION ARN'
)
update_status = describe_solution_response["solution"]["latestSolutionUpdate"]["status"]
print(f"Update status: {update_status}")
```

# 솔루션 버전 수동 생성
<a name="creating-a-solution-version"></a>

[Amazon Personalize에서 사용자 지정 솔루션 구성](customizing-solution-config.md)을 완료하면 학습을 시작할 준비가 된 것입니다.
+  솔루션이 자동 학습을 사용하는 경우 솔루션은 지정한 학습 빈도에 따라 솔루션 버전을 생성합니다. 기본적으로 모든 새 솔루션은 자동 학습을 사용하여 7일마다 새 솔루션 버전을 생성합니다. 솔루션 버전을 수동으로 생성할 수 있습니다. 자세한 내용은 [자동 학습 구성](solution-config-auto-training.md) 섹션을 참조하세요.
+ 솔루션에 대한 자동 학습을 끄거나 수동으로 학습하려는 경우 솔루션 버전을 수동으로 생성할 수 있습니다. 솔루션 버전은 학습된 기계 학습 모델을 말합니다.** 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWSSDK를 사용하여 솔루션 버전을 생성할 수 있습니다. 솔루션 버전이 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS 상태인 경우, [StopSolutionVersionCreation](API_StopSolutionVersionCreation.md)작업을 사용하여 솔루션 버전 생성 프로세스를 중지할 수 있습니다. [솔루션 버전 생성 중지](stop-solution-version.md)을(를) 참조하세요.

오류로 인해 교육이 완료되지 않은 경우, 교육 비용은 청구되지 않습니다. 솔루션 버전이 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS 상태인 경우, 솔루션 버전 생성 프로세스를 중지할 수 있습니다. 솔루션 버전 생성을 중지하려면 솔루션 버전 세부 정보 페이지로 이동한 다음 **중지**를 선택합니다. 자세한 내용은 [솔루션 버전 생성 중지](stop-solution-version.md) 섹션을 참조하세요.

**Topics**
+ [솔루션 버전 생성(콘솔)](#create-solution-version-console)
+ [솔루션 버전 생성(AWS CLI)](#create-solution-version-cli)
+ [솔루션 버전 생성(AWS SDK)](#create-solution-version-sdk)

## 솔루션 버전 생성(콘솔)
<a name="create-solution-version-console"></a>

Amazon Personalize 콘솔을 사용하여 새 솔루션 버전을 수동으로 생성하려면 솔루션의 세부 정보 페이지에서 학습을 시작합니다.

**솔루션 버전을 생성하려면**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)에서 Amazon Personalize 콘솔을 열고 계정에 로그인합니다.

1. 데이터세트 그룹 페이지로 이동하여 새 솔루션이 포함된 데이터세트 그룹을 선택합니다.

1. 탐색 창의 **사용자 지정 리소스**에서 **솔루션 및 레시피**를 선택합니다.

1. **솔루션 및 레시피** 페이지에서 솔루션 버전을 생성하려는 솔루션을 선택합니다.

1. 솔루션 개요 페이지에서 **솔루션 버전 생성**을 선택하여 새 모델 학습을 시작합니다.

솔루션 세부 정보 페이지의 **솔루션 버전** 단원에서 교육 진행 상황을 추적할 수 있습니다. 교육이 완료되면 상태가 **활성으로** 표시되며, Personalize에서 제공하는 지표를 사용하여 교육을 평가할 수 있습니다. 자세한 내용은 [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md) 섹션을 참조하세요.

 솔루션 버전이 활성화 상태이면 추천을 받아서 사용할 준비가 된 것입니다. 활성 솔루션 버전을 사용하는 방법은 추천 사항을 받는 방법에 따라 달라집니다.
+  실시간 추천의 경우 Amazon Personalize 캠페인과 함께 활성 솔루션 버전을 배포해야 합니다. 캠페인을 사용하여 사용자를 위한 추천을 받을 수 있습니다. [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)을(를) 참조하세요.
+ 배치 추천 사항의 경우 배치 추론 작업 또는 배치 세그먼트 작업을 생성할 때 ACTIVE 솔루션 버전을 지정합니다. [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

## 솔루션 버전 생성(AWS CLI)
<a name="create-solution-version-cli"></a>

솔루션이 ACTIVE인 경우, 다음 명령을 실행하여 모델을 교육시킵니다. `solution arn`을 [Amazon Personalize에서 사용자 지정 솔루션 구성](customizing-solution-config.md)에서 제공하는 솔루션 리소스 이름(ARN)으로 대체하세요.

```
aws personalize create-solution-version \
  --solution-arn solution arn
```

솔루션 버전 ARN이 예를 들어, 다음과 같이 표시됩니다.

```
{
  "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/SolutionName/<version-id>"
}
```

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

```
aws personalize describe-solution-version \
  --solution-version-arn solution version arn
```

솔루션 버전의 속성과 학습 `status`가 표시됩니다. 처음에 상태는 CREATE PENDING으로 표시됩니다. 예를 들면 다음과 같이 표시됩니다.

```
{
  "solutionVersion": {
      "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/solutionName/<version-id>",
      ...,
      "status": "CREATE PENDING"
  }
}
```

`status`이 `ACTIVE`이면 교육이 완료된 것이므로, Personalize에서 제공하는 지표를 사용하여 교육을 평가할 수 있습니다. 자세한 내용은 [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md)단원을 참조하세요. 오류로 인해 교육이 완료되지 않은 경우, 교육 비용은 청구되지 않습니다.

솔루션 버전이 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS 상태인 경우, [StopSolutionVersionCreation](API_StopSolutionVersionCreation.md)작업을 사용하여 솔루션 버전 생성 프로세스를 중지할 수 있습니다. [솔루션 버전 생성 중지](stop-solution-version.md)을(를) 참조하세요.

 솔루션 버전이 활성화 상태이면 추천을 받아서 사용할 준비가 된 것입니다. 활성 솔루션 버전을 사용하는 방법은 추천 사항을 받는 방법에 따라 달라집니다.
+  실시간 추천의 경우 Amazon Personalize 캠페인과 함께 활성 솔루션 버전을 배포해야 합니다. 캠페인을 사용하여 사용자를 위한 추천을 받을 수 있습니다. [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)을(를) 참조하세요.
+ 배치 추천 사항의 경우 배치 추론 작업 또는 배치 세그먼트 작업을 생성할 때 ACTIVE 솔루션 버전을 지정합니다. [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

## 솔루션 버전 생성(AWS SDK)
<a name="create-solution-version-sdk"></a>

솔루션이 활성 상태이면 다음 코드를 사용하여 솔루션 버전을 생성하세요. [Amazon Personalize에서 사용자 지정 솔루션 구성](customizing-solution-config.md)에서 리소스 이름(ARN)을 지정합니다. [DescribeSolutionVersion](API_DescribeSolutionVersion.md) 작업을 사용하여 솔루션 버전의 상태를 검색합니다.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')
# Store the solution ARN
solution_arn = 'solution arn'
        
# Use the solution ARN to get the solution status.
solution_description = personalize.describe_solution(solutionArn = 'solution_arn')['solution']
print('Solution status: ' + solution_description['status'])

# Use the solution ARN to create a solution version.
print ('Creating solution version')
response = personalize.create_solution_version(solutionArn = solution_arn)
solution_version_arn = response['solutionVersionArn']
print('Solution version ARN: ' + solution_version_arn)

# Use the solution version ARN to get the solution version status.
solution_version_description = personalize.describe_solution_version(
    solutionVersionArn = solution_version_arn)['solutionVersion']
print('Solution version status: ' + solution_version_description['status'])
```

------
#### [ SDK for Java 2.x ]

```
public static String createPersonalizeSolutionVersion(PersonalizeClient personalizeClient, String solutionArn) {
        long maxTime = 0;
        long waitInMilliseconds = 30 * 1000; // 30 seconds
        String solutionStatus = "";
        String solutionVersionStatus = "";
        String solutionVersionArn = "";

        try {
            DescribeSolutionRequest describeSolutionRequest = DescribeSolutionRequest.builder()
                .solutionArn(solutionArn)
                .build();
            
            maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;

            // Wait until solution is active. 
            while (Instant.now().getEpochSecond() < maxTime) {

                solutionStatus = personalizeClient.describeSolution(describeSolutionRequest).solution().status();
                System.out.println("Solution status: " + solutionStatus);

                if (solutionStatus.equals("ACTIVE") || solutionStatus.equals("CREATE FAILED")) {
                    break;
                }
                try {
                    Thread.sleep(waitInMilliseconds);
                } catch (InterruptedException e) {
                    System.out.println(e.getMessage());
                }
            }
            
            // Once the solution is active, start creating a solution version.
            
            if (solutionStatus.equals("ACTIVE")) {

                CreateSolutionVersionRequest createSolutionVersionRequest = CreateSolutionVersionRequest.builder()
                    .solutionArn(solutionArn)
                    .build();
                
                CreateSolutionVersionResponse createSolutionVersionResponse = personalizeClient.createSolutionVersion(createSolutionVersionRequest);
                solutionVersionArn = createSolutionVersionResponse.solutionVersionArn();

                System.out.println("Solution version ARN: " + solutionVersionArn);

                DescribeSolutionVersionRequest describeSolutionVersionRequest = DescribeSolutionVersionRequest.builder() 
                    .solutionVersionArn(solutionVersionArn)
                    .build();
                
                maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;
                
                while (Instant.now().getEpochSecond() < maxTime) {

                    // Use the solution version ARN to get the solution version status.
                    solutionVersionStatus = personalizeClient.describeSolutionVersion(describeSolutionVersionRequest).solutionVersion().status();
                    System.out.println("Solution version status: " + solutionVersionStatus);
    
                    if (solutionVersionStatus.equals("ACTIVE") || solutionVersionStatus.equals("CREATE FAILED")) {
                        break;
                    }
                    try {
                        Thread.sleep(waitInMilliseconds);
                    } catch (InterruptedException e) {
                        System.out.println(e.getMessage());
                    }
                }
                return solutionVersionArn;
            }
        } catch(PersonalizeException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { CreateSolutionVersionCommand } from "@aws-sdk/client-personalize";
import { personalizeClient } from "./libs/personalizeClients.js";
// Or, create the client here.
// const personalizeClient = new PersonalizeClient({ region: "REGION"});

// Set the solution version parameters.
export const solutionVersionParam = {
  solutionArn: "SOLUTION_ARN" /* required */,
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateSolutionVersionCommand(solutionVersionParam),
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------



현재의 솔루션 버전 상태를 확인하려면 [DescribeSolutionVersion](API_DescribeSolutionVersion.md)작업을 호출하고 `CreateSolutionVersion`작업에서 반환된 솔루션 버전의 ARN을 전달합니다. `status`이 `ACTIVE`이면 교육이 완료된 것이므로, Personalize에서 제공하는 지표를 사용하여 교육을 평가할 수 있습니다. 자세한 내용은 [지표를 사용하여 Amazon Personalize 솔루션 버전 평가](working-with-training-metrics.md)단원을 참조하세요. 오류로 인해 교육이 완료되지 않은 경우, 교육 비용은 청구되지 않습니다.

솔루션 버전이 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS 상태인 경우, [StopSolutionVersionCreation](API_StopSolutionVersionCreation.md)작업을 사용하여 솔루션 버전 생성 프로세스를 중지할 수 있습니다. [솔루션 버전 생성 중지](stop-solution-version.md)을(를) 참조하세요.

 솔루션 버전이 활성화 상태이면 추천을 받아서 사용할 준비가 된 것입니다. 활성 솔루션 버전을 사용하는 방법은 추천 사항을 받는 방법에 따라 달라집니다.
+  실시간 추천의 경우 Amazon Personalize 캠페인과 함께 활성 솔루션 버전을 배포해야 합니다. 캠페인을 사용하여 사용자를 위한 추천을 받을 수 있습니다. [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)을(를) 참조하세요.
+ 배치 추천 사항의 경우 배치 추론 작업 또는 배치 세그먼트 작업을 생성할 때 ACTIVE 솔루션 버전을 지정합니다. [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

# 솔루션 버전 생성 중지
<a name="stop-solution-version"></a>

솔루션 버전의 상태가 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS인 경우 Personalize 콘솔 또는 [StopSolutionVersionCreation](API_StopSolutionVersionCreation.md)작업을 사용하여 솔루션 버전 생성을 중지(모델 학습 중지)할 수 있습니다. 중지된 후에는 솔루션 버전 생성을 재개할 수 없습니다. 솔루션 버전 생성이 중지된 시점까지 사용된 리소스에 대한 요금이 청구됩니다.

솔루션 버전 생성을 중지하면 모델 학습이 종료되지만 솔루션 버전이 삭제되지는 않습니다. Personalize 콘솔에서 [DescribeSolutionVersion](API_DescribeSolutionVersion.md)작업을 사용하여 솔루션 버전 세부 정보를 계속 볼 수 있습니다.

Personalize 콘솔, AWS Command Line Interface (AWS CLI) 또는 AWS SDKs.

**Topics**
+ [솔루션 버전 생성 중지(콘솔)](#stop-solution-version-console)
+ [솔루션 버전 생성 중지(AWS CLI)](#stop-solution-version-cli)
+ [솔루션 버전(AWS SDKs) 생성 중지](#stop-solution-version-sdk)

## 솔루션 버전 생성 중지(콘솔)
<a name="stop-solution-version-console"></a>

솔루션 버전의 상태가 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS인 경우 솔루션 버전 생성을 중지(모델 학습 중지)할 수 있습니다.

**솔루션 버전 생성을 중지하려면(콘솔)**

1. [https://console.aws.amazon.com/acm-pca/home](https://console.aws.amazon.com/personalize/home)에서 Personalize 콘솔을 열고 계정에 로그인합니다.

1. **데이터세트 그룹** 페이지에서 중지하려는 솔루션 버전이 포함된 데이터세트 그룹을 선택합니다.

1. 탐색 창에서 **솔루션 및 레시피**를 선택합니다.

1. **솔루션 및 레시피** 페이지에서 중지하려는 솔루션 버전의 솔루션을 선택합니다.

1. **솔루션 버전**에서 중지하려는 솔루션 버전을 선택합니다.

1. 솔루션 버전 세부 정보 페이지에서 **생성 중지**를 선택합니다. 솔루션 버전의 원래 상태에 따라 솔루션 버전 상태가 다음과 같이 변경됩니다.
   + CREATE\$1PENDING이 CREATE\$1STOPED로 변경됨.
   + CREATE\$1IN\$1PROGRESS가 CREATE\$1STOPPINGERS로 변경된 다음 CREATE\$1STOPPED로 변경됨.

## 솔루션 버전 생성 중지(AWS CLI)
<a name="stop-solution-version-cli"></a>

솔루션 버전의 상태가 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS인 경우 솔루션 버전 생성을 중지(모델 학습 중지)할 수 있습니다. AWS CLI에서 솔루션 버전 생성을 중지하려면 다음 `stop-solution-version-creation`명령을 사용합니다. `solution version arn`을 중지하려는 솔루션 버전의 Amazon 리소스 이름(ARN)으로 바꿉니다. 솔루션 버전 생성이 중지된 시점까지 사용한 리소스에 대한 요금이 청구됩니다.

```
aws personalize stop-solution-version-creation \
    --solution-version-arn solution version arn
```

`describe-solution-version` 명령을 사용하여 솔루션 버전의 교육 상태를 확인합니다.

```
aws personalize describe-solution-version \
    --solution-version-arn solution version arn
```

솔루션 버전의 원래 상태에 따라 솔루션 버전 상태가 다음과 같이 변경됩니다.
+ CREATE\$1PENDING이 CREATE\$1STOPED로 변경됨.

  
+ CREATE\$1IN\$1PROGRESS가 CREATE\$1STOPPINGERS로 변경된 다음 CREATE\$1STOPPED로 변경됨

## 솔루션 버전(AWS SDKs) 생성 중지
<a name="stop-solution-version-sdk"></a>

솔루션 버전의 상태가 CREATE\$1PENDING 또는 CREATE\$1IN\$1PROGRESS인 경우 솔루션 버전 생성을 중지(모델 학습 중지)할 수 있습니다. 다음 코드는 AWS SDK for Python (Boto3) 또는를 사용하여 솔루션 버전 생성을 중지하는 방법을 보여줍니다 AWS SDK for Java 2.x. 솔루션 버전 생성이 중지된 시점까지 사용된 리소스에 대한 요금이 청구됩니다.

------
#### [ SDK for Python (Boto3) ]

솔루션 버전 생성을 중지하려면 다음 `stop_solution_version_creation`메서드를 사용합니다. `solution_version_arn`을 중지하려는 솔루션 버전의 Amazon 리소스 이름(ARN)으로 바꿉니다. 메서드는 [DescribeSolutionVersion](API_DescribeSolutionVersion.md)작업을 사용하여 솔루션 버전의 상태를 검색합니다.

```
import boto3

personalize = boto3.client('personalize')

response = personalize.stop_solution_version_creation(
    solutionVersionArn = solution_version_arn
)

# Use the solution version ARN to get the solution version status.
solution_version_description = personalize.describe_solution_version(
    solutionVersionArn = solution_version_arn)['solutionVersion']
print('Solution version status: ' + solution_version_description['status'])
```

------
#### [ SDK for Java 2.x ]

솔루션 버전 생성을 중지하려면 다음 `stopSolutionVersionCreation`메서드를 사용합니다. 파라미터를 Personalize 서비스 클라이언트와 생성을 중지하려는 솔루션 버전의 Amazon 리소스 이름(ARN)을 전달합니다. 다음 코드는 [DescribeSolutionVersion](API_DescribeSolutionVersion.md)작업을 사용하여 솔루션 버전의 상태를 검색합니다.

```
public static void stopSolutionVersionCreation(PersonalizeClient personalizeClient, String solutionVersionArn) {
    String solutionVersionStatus = "";
    
    StopSolutionVersionCreationRequest stopSolutionVersionCreationRequest = StopSolutionVersionCreationRequest.builder()
        .solutionVersionArn(solutionVersionArn)
        .build();
    
    personalizeClient.stopSolutionVersionCreation(stopSolutionVersionCreationRequest);
    
    // Use the solution version ARN to get the solution version status.
    DescribeSolutionVersionRequest describeSolutionVersionRequest = DescribeSolutionVersionRequest.builder() 
        .solutionVersionArn(solutionVersionArn)
        .build();
                    
    solutionVersionStatus = personalizeClient.describeSolutionVersion(describeSolutionVersionRequest)
        .solutionVersion()
        .status();
    System.out.println("Solution version status: " + solutionVersionStatus);
}
```

------

솔루션 버전의 원래 상태에 따라 솔루션 버전 상태가 다음과 같이 변경됩니다.
+ CREATE\$1PENDING이 CREATE\$1STOPED로 변경됨.

  
+ CREATE\$1IN\$1PROGRESS가 CREATE\$1STOPPINGERS로 변경된 다음 CREATE\$1STOPPED로 변경됨.

# 지표를 사용하여 Amazon Personalize 솔루션 버전 평가
<a name="working-with-training-metrics"></a>

 오프라인 지표와 온라인 지표를 통해 솔루션 버전의 성능을 평가할 수 있습니다. 온라인 지표는 실시간 추천과의 사용자 상호작용에서 보게 되는 경험적 결과입니다.** 예를 들어 카탈로그를 탐색하는 사용자의 클릭률을 기록할 수 있습니다. 모든 온라인 지표를 생성하고 기록하는 것은 귀하의 책임입니다.

 오프라인 지표는 Personalize가 솔루션 버전을 학습시킬 때 생성하는 지표입니다.** 오프라인 지표를 사용하면 모델의 성능을 평가할 수 있습니다. 솔루션의 하이퍼파라미터를 수정하는 효과를 볼 수 있으며, 동일한 데이터세트 그룹의 *동일한 데이터*에 대해 서로 다른 레시피로 학습된 모델의 결과를 비교할 수 있습니다.

다양한 데이터로 학습된 다양한 솔루션 버전의 지표를 비교하지 마세요. 지표의 차이는 모델 성능이 아닌 데이터의 차이일 수 있습니다. 예를 들어 각 사용자에 대해 희소 `purchase` 이벤트 데이터가 있는 데이터세트 그룹과 강력한 `view` 이벤트 데이터가 있는 데이터세트 그룹이 있을 수 있습니다. `precision at K`와 같은 지표를 기반으로 보기 이벤트 데이터에 대해 학습된 솔루션 버전은 상호 작용 수가 늘어나기 때문에 성능이 더 나아진 것으로 잘못 보일 수 있습니다.

 Amazon Personalize는 성능 지표를 얻기 위해 입력된 상호 작용 데이터를 교육 세트, 테스트 세트, PERSONALIZED\$1ACTIONS의 경우 검증 세트로 분할합니다. 분리는 선택한 레시피 유형에 따라 달라집니다.
+  사용자\$1세분화 레시피의 경우 학습 세트는 각 사용자 상호작용 데이터의 80%로 구성되고 테스트 세트는 각 사용자 상호작용 데이터의 20%로 구성됩니다.
+  다른 모든 레시피 유형의 경우 학습 세트는 사용자의 90%와 이들의 상호작용 데이터로 구성됩니다. 테스트 세트는 나머지 10%의 사용자와 이들의 상호작용 데이터로 구성됩니다.

 그러면 Personalize가 학습 세트를 사용하여 솔루션 버전을 생성합니다. 학습이 완료되면 Personalize는 새 솔루션 버전에 테스트 세트의 각 사용자 데이터 중 가장 오래된 90%를 입력으로 제공합니다. 그런 다음 Personalize는 솔루션 버전에서 생성한 추천을 테스트 세트의 각 사용자 데이터 중 최신 10%의 실제 상호작용과 비교하여 지표를 계산합니다.

비교를 위한 기준을 생성하려면 가장 인기 있는 상위 K개 항목을 추천하는 [인기도-집계](native-recipe-popularity.md)레시피를 사용하는 것이 좋습니다.

**Topics**
+ [솔루션 버전 지표 검색](#working-with-training-metrics-metrics)
+ [지표 정의](#metric-definitions)
+ [예제](#working-with-training-metrics-example)
+ [추가 리소스](#additional-metrics-resources)

## 솔루션 버전 지표 검색
<a name="working-with-training-metrics-metrics"></a>

솔루션 버전을 만든 후에는 지표를 사용하여 성능을 평가할 수 있습니다. Personalize 콘솔,AWS Command Line Interface(AWS CLI) 및AWSSDKs.

**Topics**
+ [솔루션 버전 지표 검색(콘솔)](#retrieving-solution-version-metrics-console)
+ [솔루션 버전 지표 검색(AWS CLI)](#retrieve-metrics-cli)
+ [솔루션 버전 지표(AWSSDKs) 검색](#retrieve-metrics-sdks)

### 솔루션 버전 지표 검색(콘솔)
<a name="retrieving-solution-version-metrics-console"></a>

콘솔에서 추천 지표를 보려면 솔루션 버전의 세부 정보 페이지로 이동합니다.

1. [https://console.aws.amazon.com/acm-pca/home](https://console.aws.amazon.com/personalize/home)에서 Personalize 콘솔을 열고 계정에 로그인합니다.

1. **데이터세트 그룹** 페이지에서 사용자 지정 데이터세트 그룹을 선택합니다.

1. 탐색 창에서 **사용자 지정 리소스**를 선택한 후 **솔루션 및 레시피**를 선택합니다.

1. 솔루션을 선택합니다.

1. **솔루션 버전**에서 세부 정보 페이지를 보려는 솔루션 버전을 선택합니다. 지표가 하단 창의 **솔루션 버전 지표** 탭에 나열됩니다. 지표의 정의는 [지표 정의](#metric-definitions)단원을 참조하세요.

   이제 솔루션 버전을 평가했으므로 사용 사례에 가장 적합한 지표를 사용해서 솔루션 버전을 배포하여 캠페인을 생성합니다. 솔루션 배포에 대한 자세한 내용은 [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)단원을 참조하세요.

### 솔루션 버전 지표 검색(AWS CLI)
<a name="retrieve-metrics-cli"></a>

[GetSolutionMetrics](API_GetSolutionMetrics.md) 작업을 호출하여 특정 솔루션 버전에 대한 지표를 검색합니다. 다음 코드는 AWS CLI를 사용하여 지표를 검색하는 방법을 보여줍니다.

```
personalize get-solution-metrics --solution-version-arn solution version ARN
```

다음은 추가 최적화 목표가 있는 [사용자-개인 맞춤](native-recipe-new-item-USER_PERSONALIZATION.md)레시피를 사용하여 만든 솔루션 버전의 결과 예시입니다.

```
{
    "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/SolutionName/<version-id>",
    "metrics": {
        "coverage": 0.27,
        "mean_reciprocal_rank_at_25": 0.0379,
        "normalized_discounted_cumulative_gain_at_5": 0.0405,
        "normalized_discounted_cumulative_gain_at_10": 0.0513,
        "normalized_discounted_cumulative_gain_at_25": 0.0828,
        "precision_at_5": 0.0136,
        "precision_at_10": 0.0102,
        "precision_at_25": 0.0091,
        "average_rewards_at_k": 0.653
    }
}
```

각 지표에 대한 설명은 [지표 정의](#metric-definitions)단원을 참조하세요. 이제 솔루션 버전을 평가했으므로 사용 사례에 가장 적합한 지표를 사용해서 솔루션 버전을 배포하여 캠페인을 생성합니다. 솔루션 배포에 대한 자세한 내용은 [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)단원을 참조하세요.

### 솔루션 버전 지표(AWSSDKs) 검색
<a name="retrieve-metrics-sdks"></a>

[GetSolutionMetrics](API_GetSolutionMetrics.md) 작업을 호출하여 특정 솔루션 버전에 대한 지표를 검색합니다. 다음 코드를 사용하여 지표를 검색합니다.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

response = personalize.get_solution_metrics(
    solutionVersionArn = 'solution version arn')

print(response['metrics'])
```

------
#### [ SDK for Java 2.x ]

```
public static void getSolutionVersionMetrics(PersonalizeClient personalizeClient, String solutionVersionArn) {

    try {
        GetSolutionMetricsRequest request = GetSolutionMetricsRequest.builder()
                .solutionVersionArn(solutionVersionArn)
                .build();
        Map<String, Double> metrics = personalizeClient.getSolutionMetrics(request).metrics();
        metrics.forEach((key, value) -> System.out.println(key + " " + value));
    } catch (PersonalizeException e ) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
}
```

------

다음은 추가 최적화 목표가 있는 [사용자-개인 맞춤](native-recipe-new-item-USER_PERSONALIZATION.md)레시피를 사용하여 만든 솔루션 버전의 결과 예시입니다.

```
{
    "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>",
    "metrics": {
        "coverage": 0.27,
        "mean_reciprocal_rank_at_25": 0.0379,
        "normalized_discounted_cumulative_gain_at_5": 0.0405,
        "normalized_discounted_cumulative_gain_at_10": 0.0513,
        "normalized_discounted_cumulative_gain_at_25": 0.0828,
        "precision_at_5": 0.0136,
        "precision_at_10": 0.0102,
        "precision_at_25": 0.0091,
        "average_rewards_at_k": 0.653
    }
}
```

각 지표에 대한 설명은 [지표 정의](#metric-definitions)단원을 참조하세요. 이제 솔루션 버전을 평가했으므로 사용 사례에 가장 적합한 지표를 사용해서 솔루션 버전을 배포하여 캠페인을 생성합니다. 솔루션 배포에 대한 자세한 내용은 [캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포캠페인 생성](campaigns.md)단원을 참조하세요.

## 지표 정의
<a name="metric-definitions"></a>

Personalize가 솔루션 버전에 대해 생성하는 지표는 다음과 같은 용어를 사용하여 아래에 설명되어 있습니다.
+ 관련 추천은 사용자가 실제로 상호작용한 항목에 대한 추천입니다.** 이들 항목은 테스트 세트의 각 사용자 상호작용 데이터 중 최신 10%에서 가져온 것입니다.
+ 순위는 추천 목록 내에서 해당 추천 항목의 위치를 말합니다.** 위치 1(목록의 맨 위)이 사용자와 가장 관련 있는 것으로 간주됩니다.

각 지표의 경우 숫자가 높을수록(1에 가까울수록) 더 좋습니다. 더 자세히 알아보려면 [추가 리소스](#additional-metrics-resources)에 나열된 리소스를 참조하세요.

**비율**  
*적용 범위* 값은 Amazon Personalize가 데이터세트의 총 고유 레코드 수 중에서 추천할 수 있는 고유 항목(항목 추천), 작업(작업 추천) 또는 사용자(사용자 세그먼트 추천)의 비율을 나타냅니다.  
적용 범위 점수가 높을수록 Amazon Personalize에서 동일한 레코드보다 더 많은 카탈로그를 추천합니다. 사용자-개인 맞춤과 같이 항목 탐색이 포함된 레시피는 그렇지 않은 레시피(예: 유사-항목)보다 적용 범위 점수가 더 높습니다.

**평균 역수 순위 25**  
이 지표는 관련 항목 추천을 상위 순위에서 생성하는 모델의 능력을 보여줍니다.  
 사용자에 대한 항목 검색 결과를 생성하는 경우 *평균 역수 순위가 25*로 높은 모델을 선택할 수 있으며, 사용자가 목록에서 더 낮은 항목을 선택할 것으로 예상하지 않습니다. 예를 들어 사용자는 검색 결과에서 첫 번째 요리 레시피를 선택하는 경우가 많습니다. Amazon Personalize는 PERSONALIZED\$1ACTIONS 또는 USER\$1SEGMENTATION 레시피에 대해서는 이 지표를 생성하지 않습니다.  
 Personalize는 추천 요청에 대해 평균 역수 순위 점수를 사용하여 이 지표를 계산합니다. 각 역수 순위 점수는 `1 / the rank of the highest item interacted with by the user`로 계산되는데, 여기서 가능한 총 순위는 25개입니다. 해당 사용자가 상호작용하는 더 낮은 순위의 다른 항목은 무시됩니다. 사용자가 첫 번째 항목을 선택한 경우 점수는 1입니다. 항목을 선택하지 않은 경우 점수는 0입니다.  
 예를 들어 세 명의 사용자에게 각각 25개의 추천을 표시할 수 있습니다.  
+ 사용자 1이 4 순위의 항목과 10 순위의 항목을 클릭한 경우 역수 순위 점수는 1/4이 됩니다.******
+ 사용자 2가 2 순위의 항목, 4 순위의 항목, 12 순위의 항목을 클릭한 경우 역수 순위 점수는 1/2이 됩니다.******
+ 사용자 3이 6 순위의 단일 항목을 클릭한 경우 역수 순위 점수는 1/6이 됩니다.**
 모든 추천 요청의 평균 역수 순위(이 경우 3)는 `(1/4 + 1/2 + 1/6) / 3 = .3056`로 계산됩니다.  


**정규화된 할인 누적 이득(NDCG) K(5/10/25)**  
이 지표는 모델이 항목 또는 작업 추천의 순위를 얼마나 잘 매겼는지 알려줍니다. 여기서 K는 5, 10 또는 25개의 추천으로 구성된 표본 크기입니다. 이 지표는 순위가 가장 높은 항목 또는 작업 이외의 추천 순위에 가장 관심이 있는 경우에 유용합니다(자세한 내용은 `mean reciprocal rank at 25` 섹션 참조). 예를 들어 한 번에 최대 10가지의 영화를 캐루셀에 표시하는 애플리케이션이 있다면 `NDCG at 10`의 점수가 유용할 것입니다.  
Personalize는 테스트 세트의 각 사용자에 대한 순위 위치를 기반으로 추천에 가중치를 할당하여 NDCG를 계산합니다. 각 추천은 위치에 따라 계수만큼 할인됩니다(더 낮은 가중치가 부여됨). 최종 지표는 테스트 세트에 있는 모든 사용자의 평균 `NDCG at K`입니다. `NDCG at K`는 목록에서 더 아래 쪽에 있는 추천이 목록에서 더 위쪽에 있는 추천보다 관련성이 낮다고 가정합니다.  
Personalize에서는 `1/log(1 + position)`의 가중 계수를 사용하며 목록의 맨 위가 위치 `1`입니다.

**정밀도 K**  
이 지표는 K(5, 10 또는 25)개 추천의 표본 크기를 기반으로 한 모델 추천의 관련성을 알려줍니다.  
 Personalize는 테스트 세트의 각 사용자에 대한 상위 K개 추천 중 관련성이 있는 추천 수를 K로 나눈 값을 기반으로 이 지표를 계산합니다. 여기서 K는 5, 10 또는 25입니다. 최종 지표는 테스트 세트에 속한 모든 사용자의 평균입니다.  
예를 들어, 사용자에게 10개의 항목을 추천하고 사용자가 그 중 3개와 상호작용하는 경우 정밀도 K는 올바르게 예측된 항목 3개를 총 10개의 추천 항목으로 나눈 값, `3 / 10 = .30`이 됩니다.  
이 지표는 관련 항목의 정확한 추천을 보상합니다. 점수가 1에 가까울수록 모델의 정밀도가 높아집니다.

**precision**  
차선책-작업 레시피로 솔루션 버전을 교육하는 경우 Amazon Personalize는 `precision at K` 대신 `precision` 지표를 생성합니다. 이 지표는 모델이 사용자가 실제로 수행할 작업을 얼마나 잘 예측하는지 알려줍니다.  
 Amazon Personalize는 데이터 세트의 각 작업에 대해 해당 작업을 수행할 것으로 올바르게 예측된 사용자 수를 해당 작업이 추천된 총 횟수로 나누어 `precision`을 계산합니다. 그 후 Amazon Personalize는 데이터 세트의 모든 작업에 대한 평균을 계산합니다.  
예를 들어, 100명의 사용자에게 작업을 추천했는데 60명의 사용자가 해당 작업을 수행했고 40명의 사용자는 수행하지 않은 경우 해당 작업의 `precision`은 `60 / 100 = .60`입니다. 그러면 Amazon Personalize는 이 계산을 모든 작업에 적용하고 평균을 반환합니다.  
이 지표는 관련 작업의 정확한 추천을 보상합니다. 점수가 1에 가까울수록 모델의 정밀도가 높아집니다.

**average\$1rewards\$1at\$1k**  
최적화 목표를 가진 솔루션에 대한 솔루션 버전을 생성(모델을 학습)하면 Personalize가 `average_rewards_at_k`지표를 생성합니다. `average_rewards_at_k`의 점수는 목표 달성에 있어 솔루션 버전이 얼마나 잘 수행되는지를 나타냅니다. 이 지표를 계산하기 위해 Personalize는 다음과 같이 각 사용자에 대한 보상을 계산합니다.  
`rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations`  
최종 `average_rewards_at_k`는 1보다 작거나 같고 0보다 큰 10진수 값으로 정규화된 모든 `rewards_per_user`의 평균입니다. 값이 1에 가까울수록 추천에서 기대할 수 있는 사용자당 평균 이득이 더 커집니다.  
예를 들어 클릭으로 인한 수익을 극대화하는 것이 목표인 경우 Personalize는 가장 비용이 많이 드는 상위 25개 추천 항목 중에서 사용자가 클릭한 항목에서 발생한 총 수익을 사용자가 클릭한 모든 추천 항목의 수익으로 나누어 각 사용자 점수를 계산합니다. 그러면 Personalize는 모든 사용자 점수의 정규화된 평균을 반환합니다. `average_rewards_at_k`이 1에 가까울수록 추천을 통해 사용자당 얻을 수 있는 평균 수익이 더 커집니다.  
 자세한 내용은 [추가 목표에 맞게 솔루션 최적화](optimizing-solution-for-objective.md) 단원을 참조하십시오.

**normalized\$1discounted\$1cumulative\$1gain\$1with\$1event\$1weights\$1at\$1k**  
 이벤트 구성 기능을 가진 솔루션에 대한 솔루션 버전을 생성(모델을 학습)하면 Amazon Personalize가 `normalized_discounted_cumulative_gain_with_event_weights_at_k` 지표를 생성합니다. `normalized_discounted_cumulative_gain_with_event_weights_at_k`의 점수는 각 이벤트 유형에 대해 설정한 이벤트 가중치를 고려하여 솔루션 버전이 얼마나 잘 작동하는지 알려줍니다.  
 K에서 정규화된 할인 누적 이득(NDCG)과 유사하지만 각 올바른 예측에 대한 보상에 가중치가 적용됩니다. 반대로 K의 원래 NDCG에서는 올바른 예측이 모두 1의 가중치를 갖습니다. 예를 들어 가중치가 0.3인 '구매'와 가중치가 0.1인 '클릭'을 설정한 경우 '구매' 항목을 올바르게 예측하면 1.5의 보상을 받는 동시에 '클릭' 항목을 예측하면 0.5의 보상을 받습니다.  
 자세한 내용은 [이벤트 구성으로 솔루션 최적화](optimizing-solution-events-config.md) 단원을 참조하십시오.

**추세 예측 정확도**  
[지금-유행](native-recipe-trending-now.md) 레시피로 솔루션 버전을 학습시킨 경우 모델에서 추천하는 항목의 인기 증가율. 추세 예측 정확도가 높을수록(1에 가까울수록) 모델이 유행 항목을 더 정확하게 식별할 수 있습니다.  
 인기 가속화를 계산하기 위해 Personalize는 모든 추천 아이템의 인기도 증가율을 상위 25개 인기 항목의 총 인기도 증가율로 나눕니다. 이들 항목은 테스트 세트의 실제 상호작용에서 나온 것입니다.  
 데이터 분포와 추세 발견 빈도에 따라 추세 예측 정확도 값은 0.0이 될 수 있습니다.

**히트(K 히트)**  
사용자\$1세분화 레시피로 솔루션 버전을 학습시킨 경우, 실제 사용자와 일치하는 예측된 상위 관련 K개 결과의 평균 사용자 수. 실제 사용자는 테스트 세트의 항목과 실제로 상호작용한 사용자입니다. K는 관련성이 가장 높은 사용자 중 상위 1%입니다. 값이 클수록 예측의 정확도가 높아집니다.

**재현율(K 재현율)**  
사용자\$1세분화 레시피로 솔루션 버전을 학습시킨 경우, 실제 사용자와 일치하는 예측된 상위 연관성 상위 K개 결과에서 예측 사용자의 평균 비율. 실제 사용자는 테스트 세트의 항목과 실제로 상호작용한 사용자입니다. K는 관련성이 가장 높은 사용자 중 상위 1%입니다. 값이 클수록 예측의 정확도가 높아집니다.

**리콜**  
차선책-작업 레시피로 솔루션 버전을 교육하는 경우, 이 지표를 통해 솔루션 버전이 사용자가 상호 작용할 작업을 찾는 데 얼마나 효과적인지 알 수 있습니다.  
 Amazon Personalize는 데이터 세트의 각 작업에 대해 해당 작업을 수행할 것으로 올바르게 예측된 사용자 수를 테스트 세트에서 실제로 작업을 수행한 총 사용자 수로 나누어 `recall`을 계산합니다. 그 후 Amazon Personalize는 데이터 세트의 모든 작업에 대한 평균을 계산합니다.  
예를 들어, 테스트 세트에서 100명의 사용자가 작업을 수행하고 Amazon Personalize에서 이러한 사용자 중 50명이 작업을 수행할 것으로 예측한 경우 작업에 대한 `recall`은 `50 / 100 = .50`입니다. 그러면 Amazon Personalize는 이 계산을 모든 작업에 적용하고 평균을 반환합니다.

**곡선 아래 면적(AUC)**  
PERSONALIZED\$1ACTIONS 레시피로 솔루션 버전을 교육한 경우 해당 솔루션 버전의 수신기 작동 특성 곡선 아래 면적입니다. 이 지표는 사용자가 수행할 작업을 정확히 식별하여 솔루션 버전이 얼마나 잘 수행되는지를 보여줍니다.  
수신기 작동 특성 곡선은 솔루션 버전의 성능을 나타냅니다. 이 곡선은 서로 다른 임곗값에서 참 긍정(관련이 있다고 올바르게 예측된 작업) 및 거짓 긍정(관련이 있다고 잘못 예측된 작업) 비율을 표시합니다. 곡선 아래 면적(AUC)은 곡선을 기반으로 솔루션 버전의 성능을 요약한 점수입니다.  
 솔루션 버전의 AUC는 0에서 1 사이일 수 있습니다. 1에 가까울수록 모델이 사용자의 관련 작업을 더 잘 예측할 수 있습니다.

**항목 인기도**  
`aws-semantic-similarity` 레시피로 솔루션 버전을 훈련시킨 경우이 지표는 카탈로그의 다른 항목과 비교하여 항목이 받은 참여(좋아요, 보기, 공유 등)의 양을 측정합니다. 항목 인기도 점수가 높을수록(1에 가까울수록) 다른 항목에 비해 항목이 누적된 사용자 상호 작용이 더 많습니다.  
항목 인기를 계산하기 위해 Personalize는 각 항목과 상호 작용한 총 고유 사용자 수를 계산합니다(보기, 클릭, 구매 등의 이벤트를 통해). 그런 다음 각 항목의 원시 참여 수가 데이터세트의 모든 항목에서 정규화되어 점수가 0에서 1 사이가 됩니다. 점수가 0에 가까우면 참여도가 낮음을 나타내고, 점수가 1에 가까우면 카탈로그의 항목에 대한 평균 참여도가 높음을 나타냅니다.

**항목 신선도**  
`aws-semantic-similarity` 레시피로 솔루션 버전을 훈련시킨 경우이 지표는 다른 항목과 비교하여 항목이 카탈로그에 얼마나 최근에 추가되었는지 측정합니다. 항목 신선도 점수가 높을수록(1에 가까울수록) 항목이 더 최근에 생성되었습니다.  
Personalize는 항목 신선도를 계산하기 위해 항목 데이터 세트의 CREATION\$1TIMESTAMP를 사용하여 각 항목의 수명을 결정합니다. 수명은 훈련 시간과 항목의 생성 타임스탬프 간의 차이로 계산됩니다. 그런 다음 이러한 수명은 모든 항목에서 정규화되며 최신 항목은 1에 가까운 점수를 받습니다. 점수가 0에 가까우면 오래된 항목이 더 많음을 나타내고, 점수가 1에 가까우면 카탈로그의 평균적으로 새 항목이 더 많음을 나타냅니다.

**항목 유사성**  
`aws-semantic-similarity` 레시피로 솔루션 버전을 훈련시킨 경우이 지표는 콘텐츠, 속성 및 메타데이터를 기반으로 입력 항목(들)에 의미적으로 관련된 권장 항목이 얼마나 될지 측정합니다. 항목 유사성 점수가 높을수록(1에 가까울수록) 추천 항목이 참조 항목(들)의 특성과 더 가깝게 일치합니다.  
항목 유사성을 계산하기 위해 Personalize는 항목 메타데이터 및 속성에서 파생된 의미 체계 임베딩을 사용하여 각 권장 항목과 입력 항목(들) 간의 유사성 점수를 계산합니다. 점수가 0에 가까우면 평균적으로 카탈로그의 항목 간에 의미론적 유사성이 낮음을 나타내고, 점수가 1에 가까우면 평균적으로 카탈로그의 항목 간에 의미론적 유사성이 높음을 나타냅니다. 이 지표는 모델이 추천에서 의미론적 관계를 얼마나 잘 포착하고 있는지 이해하는 데 도움이 됩니다.

## 예제
<a name="working-with-training-metrics-example"></a>

다음은 솔루션 버전이 특정 사용자에 대해 추천 목록을 생성하는 간단한 예제입니다. 두 번째 추천과 다섯 번째 추천은 이 사용자에 대한 테스트 데이터의 레코드와 일치합니다. 이들 두 가지는 관련 추천입니다. `K`을 `5`로 설정하면 사용자에 대해 다음 지표가 생성됩니다.

**reciprocal\$1rank**  
계산: 1/2  
결과: 0.5000

**normalized\$1discounted\$1cumulative\$1gain\$1at\$15**  
계산: (1/log(1 \$1 2) \$1 1/log(1 \$1 5)) / (1/log(1 \$1 1) \$1 1/log(1 \$1 2))  
결과: 0.6241

**precision\$1at\$15**  
계산: 2/5  
결과: 0.4000

## 추가 리소스
<a name="additional-metrics-resources"></a>

A/B 테스트를 통한 솔루션 버전 평가에 대한 자세한 내용은 [A/B 테스트를 사용하여 Personalize에서 생성한 추천의 효율성 측정](https://aws.amazon.com/blogs/machine-learning/using-a-b-testing-to-measure-the-efficacy-of-recommendations-generated-by-amazon-personalize/) 단원을 참조하세요. 추천자 시스템을 위한 다양한 유형의 지표를 자세히 알아보려면 다음 외부 리소스를 참조하세요.
+ [MRR 대 MAP 대 NDCG: 순위 인식 평가 지표 및 사용 시기](https://medium.com/swlh/rank-aware-recsys-evaluation-metrics-5191bba16832/)
+  [할인된 누적 이득: 알아야 할 순위 지표](https://medium.com/@maeliza.seymour/discounted-cumulative-gain-the-ranking-metrics-you-should-know-about-e1d1623f8cd9) 
+  [추천자 시스템의 k 재현율 및 정밀도](https://medium.com/@bond.kirill.alexandrovich/precision-and-recall-in-recommender-systems-and-some-metrics-stuff-ca2ad385c5f8) 
+  [추천자 시스템의 순위 평가 지표](https://towardsdatascience.com/ranking-evaluation-metrics-for-recommender-systems-263d0a66ef54) 
+  [수신기 작동 특성](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) 

# 캠페인을 사용하여 Amazon Personalize 솔루션 버전 배포
<a name="campaigns"></a>

사용자 지정 리소스가 포함된 실시간 추천의 경우, [솔루션 버전 수동 생성](creating-a-solution-version.md)을 완료하고 나면 캠페인과 함께 솔루션 버전을 배포할 준비가 된 것입니다.

 캠페인에서는 프로비저닝 트랜잭션 용량이 포함된 솔루션 버전(학습된 모델)을 배포하여 실시간 추천을 생성합니다.** 캠페인을 생성한 후 [GetRecommendations](API_RS_GetRecommendations.md)또는 [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md)API 작업을 사용하여 추천을 얻을 수 있습니다. 배치 항목 추천 또는 사용자 세그먼트를 받는 경우, 캠페인을 생성할 필요가 없습니다. 자세한 내용은 [배치 항목 추천 받기](getting-batch-recommendations.md) 또는 [배치 사용자 세그먼트 가져오기](getting-user-segments.md)을 참조하세요.

캠페인을 생성할 때 다음을 구성할 수 있습니다.
+ 솔루션의 최신 솔루션 버전을 사용하도록 캠페인을 자동으로 업데이트하도록 구성할 수 있습니다. 자세한 내용은 [자동 캠페인 업데이트](#create-campaign-automatic-latest-sv-update)을 참조하세요.
+ 추천에서 항목 메타데이터를 활성화할 수 있습니다. 자세한 내용은 [추천에서 항목 메타데이터](#create-campaign-return-metadata) 섹션을 참조하세요.
+ 캠페인에 대해 초당 프로비저닝된 최소 트랜잭션을 지정할 수 있습니다. 이는 Amazon Personalize에서 프로비저닝한 캠페인의 기준 트랜잭션 처리량입니다. 캠페인이 활성 상태일 때의 최소 청구 요금을 설정합니다. 자세한 내용은 [초당 최소 프로비저닝 트랜잭션 수 및 자동 스케일링](#min-tps-auto-scaling) 섹션을 참조하세요.

Amazon Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 캠페인을 생성할 수 있습니다. 기존 캠페인의 설정을 변경하려면(예: 추천에서 메타데이터 활성화) 캠페인을 업데이트해야 합니다. 자세한 내용은 [Amazon Personalize 캠페인의 구성 업데이트](update-campaigns.md) 섹션을 참조하세요.

 캠페인이 활성화되어 있는 동안 캠페인 비용이 발생합니다. 불필요한 비용을 방지하려면 완료 시 캠페인을 삭제해야 합니다. 캠페인 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

**Topics**
+ [자동 캠페인 업데이트](#create-campaign-automatic-latest-sv-update)
+ [초당 최소 프로비저닝 트랜잭션 수 및 자동 스케일링](#min-tps-auto-scaling)
+ [추천에서 항목 메타데이터](#create-campaign-return-metadata)
+ [캠페인 생성(콘솔)](#create-campaign-console)
+ [캠페인 생성(AWS CLI)](#create-campaign-cli)
+ [캠페인(AWSSDK) 만들기](#create-campaign-sdk)

## 자동 캠페인 업데이트
<a name="create-campaign-automatic-latest-sv-update"></a>

캠페인을 생성할 때 자동 캠페인 업데이트를 활성화할 수 있습니다. 자동 업데이트를 사용하면 캠페인이 자동으로 업데이트되어 솔루션의 최신 자동 또는 수동으로 학습된 솔루션 버전을 배포합니다. 이렇게 하면 캠페인을 최신 상태로 유지하기가 더 쉬워집니다.

예를 들어 솔루션에서 [자동 학습](solution-config-auto-training.md)을 사용하여 7일마다 새 솔루션 버전을 생성하는 경우 캠페인은 매주 학습에 최신 솔루션 버전을 사용하도록 자동으로 업데이트됩니다. 자동 캠페인 업데이트를 사용하지 않는 경우 캠페인을 수동으로 업데이트하여 훈련된 최신 모델을 배포해야 합니다.
+ Amazon Personalize 콘솔을 사용하여 캠페인을 생성할 때 자동 캠페인 업데이트를 활성화하려면 **캠페인 세부 정보**에서 **솔루션의 최신 솔루션 버전을 사용하도록 자동 업데이트**를 선택합니다. 캠페인 세부 정보 페이지에서 최신 업데이트의 타임스탬프를 찾을 수 있습니다.

  자세한 내용은 [캠페인 생성(콘솔)](#create-campaign-console) 섹션을 참조하세요.
+ [CreateCampaign](API_CreateCampaign.md) API 작업을 사용할 때 자동 캠페인 업데이트를 활성화하려면 `SolutionVersionArn` 파라미터에 솔루션의 Amazon 리소스 이름(ARN)을 `SolutionArn/$LATEST` 형식으로 지정합니다. `campaignConfig`에서 `enableMetadataWithRecommendations`을 `true`로 설정합니다.

  최신 캠페인 업데이트의 타임스탬프를 가져오려면 [DescribeCampaign](API_DescribeCampaign.md) API 작업을 사용하고 응답의 `latestCampaignUpdate` 세부 정보를 확인할 수 있습니다.

  자동 업데이트를 활성화하는 방법을 보여주는 코드 샘플은 [캠페인 생성(AWS CLI)](#create-campaign-cli) 또는 [캠페인(AWSSDK) 만들기](#create-campaign-sdk) 섹션을 참조하세요.

## 초당 최소 프로비저닝 트랜잭션 수 및 자동 스케일링
<a name="min-tps-auto-scaling"></a>

**중요**  
 `minProvisionedTPS`가 높으면 비용이 증가합니다. `minProvisionedTPS`(기본값)의 경우 1부터 시작하는 것이 좋습니다. Amazon CloudWatch 지표를 사용하여 사용량을 추적하고 필요에 따라 `minProvisionedTPS`를 늘리세요.

 Amazon Personalize 캠페인을 생성할 때 캠페인에 대한 초당 최소 프로비저닝 트랜잭션 수(`minProvisionedTPS`)를 지정할 수 있습니다. 이는 Amazon Personalize에서 프로비저닝한 캠페인의 기준 트랜잭션 처리량입니다. 캠페인이 활성 상태일 때의 최소 청구 요금을 설정합니다. 트랜잭션은 단일 `GetRecommendations` 또는 `GetPersonalizedRanking` 요청으로 이루어집니다. 기본 `minProvisionedTPS` 값은 1입니다.

 TPS가 `minProvisionedTPS` 이상으로 증가할 경우 Amazon Personalize는 프로비저닝 용량을 자동으로 확장 및 축소하지만, `minProvisionedTPS` 이하로는 확장 및 축소하지 않습니다. 용량이 증가 중에 잠시 동안의 지연으로 거래 손실이 발생할 수 있습니다. 트래픽이 감소하면 용량은 `minProvisionedTPS`로 돌아옵니다.

프로비저닝된 최소 TPS에 대한 요금이 부과되며, 요청이 `minProvisionedTPS`를 초과하는 경우 실제 TPS에 대한 요금이 부과됩니다. 실제 TPS는 추천을 요청한 총 건수입니다. 낮은 `minProvisionedTPS`로 시작하여 CloudWatch 지표를 사용하여 사용량을 추적한 다음 필요에 따라 `minProvisionedTPS`를 늘리는 것이 좋습니다.

캠페인 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

## 추천에서 항목 메타데이터
<a name="create-campaign-return-metadata"></a>

**중요**  
User-Personalization-v2 또는 Personalized-Ranking-v2 레시피를 사용하는 경우 메타데이터에 대한 추가 비용이 발생하지 않습니다. 다른 모든 레시피와 모든 도메인 사용 사례의 경우 추가 비용이 발생합니다. 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

추천을 받으면 Amazon Personalize가 추천 결과에 항목 메타데이터를 포함하도록 할 수 있습니다. 요청에서 포함할 항목 데이터세트의 열을 선택할 수 있습니다. Amazon Personalize는 추천 응답의 각 항목에 대해 이 데이터를 반환합니다.

메타데이터를 통해 사용자 인터페이스에서 추천을 강화할 수 있습니다(예: 캐러셀에 영화 장르 추가). 또는 이를 사용하여 추천 품질을 시각적으로 평가할 수도 있습니다. 앱에서 생성형 AI를 사용하는 경우 메타데이터를 AI 프롬프트에 연결하여 관련성이 더 높은 콘텐츠를 생성할 수 있습니다. Amazon Personalize를 생성형 AI와 함께 사용하는 방법에 대한 자세한 내용은 [Amazon Personalize 및 생성형 AI](personalize-with-gen-ai.md) 섹션을 참조하세요.

### 메타데이터 활성화
<a name="enabling-metadata"></a>

추천에 메타데이터를 추가하려면 메타데이터 열이 포함된 항목 데이터 세트가 있어야 합니다. 교육 시 메타데이터를 사용할 필요는 없습니다. 데이터 세트 생성에 대한 내용은 [스키마 및 데이터세트 생성](data-prep-creating-datasets.md) 섹션을 참조하세요. 데이터 업데이트에 대한 자세한 내용은 [학습 후 데이 세트의 데이터 업데이트](updating-datasets.md) 섹션을 참조하세요.

 User-Personalization-v2 또는 Personalized-Ranking-v2 레시피를 사용하는 경우 새 캠페인에는 추천 결과와 함께 항목 메타데이터를 자동으로 포함할 수 있는 옵션이 있습니다. 캠페인에 대한 메타데이터를 수동으로 활성화하지 않았습니다. 다른 모든 레시피 및 도메인 사용 사례의 경우 메타데이터 옵션을 활성화해야 합니다.
+ Amazon Personalize 콘솔에서 메타데이터를 활성화하려면 캠페인을 생성할 때 **캠페인 세부 정보**의 **추천 결과에서 항목 메타데이터 반환**을 선택합니다. 자세한 내용은 [캠페인 생성(콘솔)](#create-campaign-console) 섹션을 참조하세요.
+ AWS SDK 또는 AWS CLI를 사용하여 메타데이터를 활성화하려면 [CreateCampaign](API_CreateCampaign.md) API 작업을 사용하고 `campaignConfig`에서 `enableMetadataWithRecommendations`를 `true`로 설정합니다. 자세한 내용은 [캠페인 생성(AWS CLI)](#create-campaign-cli) 또는 [캠페인(AWSSDK) 만들기](#create-campaign-sdk)을 참조하세요.

## 캠페인 생성(콘솔)
<a name="create-campaign-console"></a>

**중요**  
 캠페인이 활성화되어 있는 동안 캠페인 비용이 발생합니다. 불필요한 비용을 방지하려면 완료 시 캠페인을 삭제해야 합니다. 캠페인 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

솔루션 버전 상태가 활성이면 Personalize 캠페인을 통해 솔루션을 배포할 준비가 된 것입니다.

**캠페인을 생성하려면(콘솔)**

1. [https://console.aws.amazon.com/acm-pca/home](https://console.aws.amazon.com/personalize/home)에서 Personalize 콘솔을 열고 계정에 로그인합니다.

1. 배포하려는 솔루션 버전이 포함된 데이터세트 그룹을 선택합니다.

1. 탐색 창의 **사용자 지정 리소스**에서 **캠페인**을 선택합니다.

1. **캠페인** 페이지에서 **캠페인 생성**을 선택합니다.

1. **새 캠페인 생성 페이지에서 캠페인 세부 정보에 대해 다음 정보를 제공합니다******.
   + **캠페인 이름** – 캠페인 이름을 입력합니다. 여기에 입력하는 텍스트는 캠페인 대시보드 및 세부 정보 페이지에 표시됩니다.
   + **솔루션** – 방금 만든 솔루션을 선택합니다.
   + **솔루션의 최신 솔루션 버전을 사용하도록 자동 업데이트** - 캠페인이 최신 활성 솔루션 버전을 자동으로 사용하도록 하려면 이 옵션을 선택합니다. 이 옵션을 선택하지 않으면 새 솔루션 버전을 배포할 때마다 캠페인을 수동으로 업데이트해야 합니다. 자세한 내용은 [자동 캠페인 업데이트](#create-campaign-automatic-latest-sv-update) 섹션을 참조하세요.
   + **솔루션 버전 ID** - 자동 캠페인 업데이트를 사용하여 최신 솔루션 버전을 사용하지 않는 경우 배포하려는 솔루션 버전의 ID를 선택합니다.
   + **초당 최소 프로비저닝된 트랜잭션(API에서 minProvisionedTPS라고 함)** – Amazon Personalize에서 지원하는 초당 최소 프로비저닝 트랜잭션을 설정합니다. 값이 높으면 요금이 인상됩니다. 1(기본값)부터 시작하는 것이 좋습니다. Amazon CloudWatch 지표를 사용하여 사용량을 추적하고 필요에 따라 `minProvisionedTPS`를 늘리세요. 자세한 내용은 [초당 최소 프로비저닝 트랜잭션 수 및 자동 스케일링](#min-tps-auto-scaling) 섹션을 참조하세요.
   + **추천 결과에서 항목 메타데이터 반환** - 추천 결과에 메타데이터를 포함하려면 이 옵션을 선택합니다. 활성화한 경우 추천을 가져올 때 항목 데이터세트의 열을 지정할 수 있습니다. 자세한 내용은 [추천에서 항목 메타데이터](#create-campaign-return-metadata) 섹션을 참조하세요.

1. User-Personalization 레시피를 사용한 경우, **캠페인 구성**에서 **탐색 가중치** 및 **탐색 항목 연령 컷오프** 값을 선택적으로 입력할 수 있습니다. 자세한 내용은 [사용자-개인 맞춤](native-recipe-new-item-USER_PERSONALIZATION.md) 섹션을 참조하세요.

1. **태그**의 경우, 원하는 태그를 추가할 수 있습니다. Personalize 리소스 태그 지정에 대한 자세한 내용은 [Personalize 리소스에 태그 지정](tagging-resources.md)단원을 참조하세요.

1. **캠페인 생성**을 선택합니다.

1. 캠페인 세부 정보 페이지에서 캠페인 상태가 **활성**일 때 캠페인을 사용하여 추천을 받고 노출 수를 기록할 수 있습니다. 자세한 내용은 [Amazon Personalize에서 추천 받기](getting-recommendations.md)단원을 참조하세요.

   캠페인 상태가 활성이면 캠페인 준비가 완료된 것입니다. 솔루션 버전을 재교육하거나 캠페인 설정을 변경하려면 캠페인을 업데이트해야만 합니다. 자세한 내용은 [Amazon Personalize 캠페인의 구성 업데이트](update-campaigns.md) 섹션을 참조하세요.

## 캠페인 생성(AWS CLI)
<a name="create-campaign-cli"></a>

**중요**  
 캠페인이 활성화되어 있는 동안 캠페인 비용이 발생합니다. 불필요한 비용을 방지하려면 완료 시 캠페인을 삭제해야 합니다. 캠페인 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

솔루션 버전 상태가 활성이면 Amazon Personalize 캠페인을 통해 솔루션을 배포할 준비가 된 것입니다. AWS CLI를 통해 캠페인을 생성하려면 `create-campaign` 명령을 사용합니다.

다음 코드 샘플은 캠페인을 생성하는 방법을 보여줍니다. User-Personalization 레시피를 사용하는 솔루션의 최신 솔루션 버전을 배포합니다. 생성하는 캠페인은 향후 솔루션 버전을 사용하도록 자동으로 업데이트됩니다. 코드에서 다음 구성을 사용합니다.
+ `solution-version-arn`이 `solution ARN/$LATEST` 형식이고 `syncWithLatestSolutionVersion`이 `True`인 솔루션의 최신 솔루션 버전을 사용하도록 캠페인을 자동으로 업데이트하도록 구성합니다. 코드를 사용하려면 `solution ARN`을 솔루션의 Amazon 리소스 이름(ARN)으로 바꿉니다.

  자동 `syncWithLatestSolutionVersion`을 비활성화하려면 솔루션 버전 ARN(`/$LATEST` 제외)만 지정하고 `syncWithLatestSolutionVersion`을 `False`로 설정합니다..
+ `enableMetadataWithRecommendations` 옵션을 `True`로 설정합니다. 이렇게 하면 추천 결과에 항목 데이터세트의 항목 메타데이터를 포함하는 추천 요청 옵션을 활성화할 수 있습니다. 이 옵션을 비활성화하려면 `False`로 설정합니다. 자세한 내용은 [추천에서 항목 메타데이터](#create-campaign-return-metadata) 섹션을 참조하세요.
+ `min-provisioned-tps`를 1(기본값)로 설정합니다. `minProvisionedTPS`(기본값)의 경우 1부터 시작하는 것이 좋습니다. Amazon CloudWatch 지표를 사용하여 사용량을 추적하고 필요에 따라 `minProvisionedTPS`를 늘리세요. 자세한 내용은 [초당 최소 프로비저닝 트랜잭션 수 및 자동 스케일링](#min-tps-auto-scaling) 섹션을 참조하세요.

모든 파라미터의 전체 목록은 [CreateCampaign](API_CreateCampaign.md) 섹션을 참조하세요.

```
aws personalize create-campaign \
--name campaign-name \
--solution-version-arn solution-arn/\$LATEST \
--min-provisioned-tps 1 \
--campaign-config "{"\"syncWithLatestSolutionVersion"\": "true", "\"enableMetadataWithRecommendations"\": "true"}"
```

캠페인 상태가 활성이면 캠페인 준비가 완료된 것입니다. 현재 상태를 확인하려면 [DescribeCampaign](API_DescribeCampaign.md)을 직접적으로 호출하고 `status`필드가 `ACTIVE`인지 확인합니다.

솔루션 버전을 재훈련했는데 캠페인이 최신 솔루션 버전을 사용하도록 자동으로 업데이트되지 않거나 캠페인 설정을 변경하려면 캠페인을 업데이트해야 합니다. 자세한 내용은 [Amazon Personalize 캠페인의 구성 업데이트](update-campaigns.md) 섹션을 참조하세요.

Amazon Personalize에서는 생성한 캠페인을 나열하는 [ListCampaigns](API_ListCampaigns.md)과 같은 캠페인 관리용 작업을 제공합니다. 캠페인은 [DeleteCampaign](API_DeleteCampaign.md)을 호출하여 삭제할 수 있습니다. 캠페인을 삭제하더라도 캠페인의 일부인 솔루션 버전은 삭제되지 않습니다.

캠페인을 생성한 후에 캠페인을 사용하여 추천을 생성할 수 있습니다. 자세한 내용은 [Amazon Personalize에서 추천 받기](getting-recommendations.md) 섹션을 참조하세요.

## 캠페인(AWSSDK) 만들기
<a name="create-campaign-sdk"></a>

**중요**  
 캠페인이 활성화되어 있는 동안 캠페인 비용이 발생합니다. 불필요한 비용을 방지하려면 완료 시 캠페인을 삭제해야 합니다. 캠페인 비용에 대한 자세한 내용은 [Amazon Personalize 요금](https://aws.amazon.com/personalize/pricing/)을 참조하세요.

솔루션 버전 상태가 활성이면 Amazon Personalize 캠페인을 통해 솔루션을 배포할 준비가 된 것입니다. AWS SDK를 사용하여 캠페인을 생성하려면 [CreateCampaign](API_CreateCampaign.md) API 작업을 사용합니다.

다음 코드 샘플은 캠페인을 생성하는 방법을 보여줍니다. 코드는 User-Personalization 레시피를 사용하는 솔루션의 최신 솔루션 버전을 배포합니다. 생성하는 캠페인은 향후 솔루션 버전을 사용하도록 자동으로 업데이트됩니다. 코드에서 다음 구성을 사용합니다.
+ `solutionVersionArn`이 `solution ARN/$LATEST` 형식이고 `syncWithLatestSolutionVersion`이 `True`인 솔루션의 최신 솔루션 버전을 사용하도록 캠페인을 자동으로 업데이트하도록 구성합니다. 코드를 사용하려면 `solution ARN`을 솔루션 버전의 Amazon 리소스 이름(ARN)으로 바꿉니다.

  자동 `syncWithLatestSolutionVersion`을 비활성화하려면 솔루션 버전 ARN(`/$LATEST` 제외)만 지정하고 `syncWithLatestSolutionVersion`을 `False`로 설정합니다..
+ `enableMetadataWithRecommendations` 옵션을 `True`로 설정합니다. 이렇게 하면 추천 결과에 항목 데이터세트의 항목 메타데이터를 포함하는 추천 요청 옵션을 활성화할 수 있습니다. 이 옵션을 비활성화하려면 `False`로 설정합니다. 자세한 내용은 [추천에서 항목 메타데이터](#create-campaign-return-metadata) 섹션을 참조하세요.
+ `minProvisionedTPS`를 1(기본값)로 설정합니다. `minProvisionedTPS`의 경우 1(기본값)부터 시작하는 것이 좋습니다. Amazon CloudWatch 지표를 사용하여 사용량을 추적하고 필요에 따라 `minProvisionedTPS`를 늘리세요. 자세한 내용은 [초당 최소 프로비저닝 트랜잭션 수 및 자동 스케일링](#min-tps-auto-scaling) 섹션을 참조하세요.

모든 파라미터의 전체 목록은 [CreateCampaign](API_CreateCampaign.md) 섹션을 참조하세요.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

response = personalize.create_campaign(
    name = 'campaign name',
    solutionVersionArn = 'solution ARN/$LATEST',
    minProvisionedTPS = 1,
    campaignConfig = {"syncWithLatestSolutionVersion": True, "enableMetadataWithRecommendations": True}
)

arn = response['campaignArn']

description = personalize.describe_campaign(campaignArn = arn)['campaign']
print('Name: ' + description['name'])
print('ARN: ' + description['campaignArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { CreateCampaignCommand, PersonalizeClient } from
  "@aws-sdk/client-personalize";

// create personalizeClient
const personalizeClient = new PersonalizeClient({ region: "REGION" });

// set the campaign parameters
export const createCampaignParam = {
  solutionVersionArn: "SOLUTION_ARN/$LATEST" /* required */,
  name: "NAME" /* required */,
  minProvisionedTPS: 1 /* optional */,
  campaignConfig: {   /* optional */
    syncWithLatestSolutionVersion: true,
    enableMetadataWithRecommendations: true,
  },
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateCampaignCommand(createCampaignParam)
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

캠페인 상태가 활성이면 캠페인 준비가 완료된 것입니다. 현재 상태를 확인하려면 [DescribeCampaign](API_DescribeCampaign.md)을 직접적으로 호출하고 `status` 필드가 `ACTIVE`인지 확인합니다.

솔루션 버전을 수동으로 재교육하거나 캠페인 설정을 변경하려면 캠페인을 업데이트해야만 합니다. 자세한 내용은 [Amazon Personalize 캠페인의 구성 업데이트](update-campaigns.md) 섹션을 참조하세요.

Amazon Personalize에서는 생성한 캠페인을 나열하는 [ListCampaigns](API_ListCampaigns.md)과 같은 캠페인 관리용 작업을 제공합니다. 캠페인은 [DeleteCampaign](API_DeleteCampaign.md)을 호출하여 삭제할 수 있습니다. 캠페인을 삭제하더라도 캠페인의 일부인 솔루션 버전은 삭제되지 않습니다.

캠페인을 생성한 후에 캠페인을 사용하여 추천을 생성합니다. 자세한 내용은 [Amazon Personalize에서 추천 받기](getting-recommendations.md)단원을 참조하세요.

# Amazon Personalize 캠페인의 구성 업데이트
<a name="update-campaigns"></a>

캠페인의 [최소 프로비저닝 TPS](campaigns.md#min-tps-auto-scaling)를 변경하거나, 새 솔루션 버전을 수동으로 배포하거나, 추천 사항에 메타데이터를 포함하는 옵션을 켜는 등 캠페인의 구성을 수정하려면 캠페인을 수동으로 업데이트해야 합니다.

 다음은 수동 캠페인 업데이트가 필요하지 않습니다.
+ 캠페인이 자동 캠페인 업데이트를 사용하는 경우 최신 솔루션 버전을 자동으로 또는 수동으로 배포하기 위해 업데이트할 필요가 없습니다. 자세한 내용은 [자동 캠페인 업데이트](campaigns.md#create-campaign-automatic-latest-sv-update) 섹션을 참조하세요.
+  User-Personalization-v2, User-Personalization 또는 Next-Best-Action을 사용하면 Amazon Personalize는 추천에 새 항목 또는 작업을 포함하도록 2시간마다 최신 솔루션 버전을 자동으로 업데이트합니다. 캠페인에서 업데이트된 솔루션 버전을 자동으로 사용합니다.

Personalize 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWSSDK를 사용하여 캠페인을 수동으로 업데이트합니다.

**참고**  
추천에 메타데이터를 포함하는 옵션을 켜기 위해 캠페인을 업데이트하려면 메타데이터 열이 포함된 항목 데이터세트가 있어야 합니다. 교육 시 메타데이터를 사용할 필요는 없습니다.  
캠페인에서 이전에 User-Personalization-v2 또는 Personalized-Ranking-v2를 사용한 솔루션 버전을 배포했고 이전 버전의 레시피로 전환하는 경우 메타데이터를 포함하는 옵션이 기본적으로 꺼져 있습니다. 캠페인을 업데이트할 때 이 옵션을 활성화할 수 있습니다. 자세한 내용은 [추천에서 항목 메타데이터](campaigns.md#create-campaign-return-metadata) 섹션을 참조하세요.

**Topics**
+ [캠페인 업데이트(콘솔)](#update-campaign-console)
+ [캠페인 업데이트(AWS CLI)](#update-campaign-cli)
+ [캠페인 업데이트(AWS SDK)](#update-campaign-sdk)

## 캠페인 업데이트(콘솔)
<a name="update-campaign-console"></a>

수동으로 재학습된 솔루션 버전을 배포하거나 캠페인 구성을 변경하려면 캠페인을 업데이트해야 합니다.

**캠페인을 업데이트하려면(콘솔)**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home)에서 Amazon Personalize 콘솔을 열고 계정에 로그인합니다.

1.  업데이트하려는 캠페인의 데이터세트 그룹을 선택합니다.

1. 탐색 창에서 **캠페인**을 선택합니다.

1. **캠페인** 페이지에서 업데이트할 캠페인을 선택합니다.

1. 캠페인 세부 정보 페이지에서 **업데이트**를 선택합니다.

1. **캠페인 업데이트** 페이지에서 내용을 변경합니다. 예를 들어, 재학습된 솔루션 버전을 배포하는 경우 **솔루션 버전 ID**의 경우 새 솔루션 버전의 식별 번호를 선택합니다.

1. **업데이트**를 선택합니다. Personalize가 캠페인을 업데이트하도록 새 솔루션 버전과 변경된 구성을 사용합니다.

## 캠페인 업데이트(AWS CLI)
<a name="update-campaign-cli"></a>

새 솔루션 버전을 배포하거나, 캠페인의 [최소 프로비저닝 TPS](campaigns.md#min-tps-auto-scaling)을 변경하거나, 캠페인 구성을 변경하려면 캠페인을 업데이트해야 합니다. AWS CLI의 새 솔루션 버전을 사용하도록 캠페인을 업데이트하려면 다음 `update-campaign`명령을 사용합니다.

`campaign arn`을 업데이트하려는 캠페인의 리소스 이름(ARN)으로 바꿉니다. `new solution version arn`을 배포하려는 솔루션 버전으로 바꿉니다.

```
aws personalize update-campaign \
--campaign-arn campaign arn \
--solution-version-arn new solution version arn \
--min-provisioned-tps 1
```

## 캠페인 업데이트(AWS SDK)
<a name="update-campaign-sdk"></a>

새 솔루션 버전을 배포하거나, 캠페인의 [최소 프로비저닝 TPS](campaigns.md#min-tps-auto-scaling)을 변경하거나, 캠페인 구성을 변경하려면 캠페인을 업데이트해야 합니다. Python용 SDK(Boto3) 또는 Java 2.x용 SDK를 사용하여 캠페인을 업데이트하려면 다음 코드를 사용합니다. 파라미터의 전체 목록은 [UpdateCampaign](API_UpdateCampaign.md)단원을 참조하세요.

------
#### [ SDK for Python (Boto3) ]

새 솔루션 버전을 배포하려면 다음 `update_campaign`메서드를 사용합니다. `campaign arn`을 업데이트하려는 캠페인의 리소스 이름(ARN)으로 바꾼 다음 `new solution version arn`을 새 솔루션 버전 ARN으로 바꾼 다음 필요에 따라 `minProvisionedTPS`을 변경합니다.

```
import boto3

personalize = boto3.client('personalize')

response = personalize.update_campaign(
    campaignArn = 'campaign arn',
    solutionVersionArn = 'new solution version arn',
    minProvisionedTPS = 1,
)

arn = response['campaignArn']

description = personalize.describe_campaign(campaignArn = arn)['campaign']
print('Name: ' + description['name'])
print('ARN: ' + description['campaignArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

새 솔루션 버전을 사용하도록 캠페인을 업데이트하려면 다음 `updateCampaign`메서드를 사용합니다. Personalize 서비스 클라이언트, 새 솔루션 버전의 리소스 이름(ARN) 및 [최소 프로비저닝 TPS](campaigns.md#min-tps-auto-scaling)을 파라미터로 전달합니다.

```
public static void updateCampaign(PersonalizeClient personalizeClient, 
                                String campaignArn,
                                String solutionVersionArn, 
                                Integer minProvisionedTPS) {

    try {    
        // build the updateCampaignRequest
        UpdateCampaignRequest updateCampaignRequest = UpdateCampaignRequest.builder()
            .campaignArn(campaignArn)
            .solutionVersionArn(solutionVersionArn)
            .minProvisionedTPS(minProvisionedTPS)
            .build();
        
        // update the campaign
        personalizeClient.updateCampaign(updateCampaignRequest);
        
        DescribeCampaignRequest campaignRequest = DescribeCampaignRequest.builder()
              .campaignArn(campaignArn)
              .build();
    
        DescribeCampaignResponse campaignResponse = personalizeClient.describeCampaign(campaignRequest);
        Campaign updatedCampaign = campaignResponse.campaign();
        
        System.out.println("The Campaign status is " + updatedCampaign.status());
    
    } catch (PersonalizeException e) {
        System.err.println(e.awsErrorDetails().errorMessage());
        System.exit(1);
    }
}
```

------