지표를 사용한 Amazon Personalize 솔루션 버전 평가 - Personalize

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

지표를 사용한 Amazon Personalize 솔루션 버전 평가

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

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

서로 다른 데이터로 학습된 여러 솔루션 버전의 메트릭을 비교하지 마세요. 메트릭의 차이는 모델 성능보다는 데이터의 차이로 인한 것일 수 있습니다. 예를 들어 각 사용자에 대한 희소 이벤트 데이터가 있는 데이터셋 그룹과 강력한 purchase view 이벤트 데이터를 포함하는 데이터셋 그룹이 있을 수 있습니다. 다음과 같은 precision at K 측정치를 기반으로 볼 때 뷰 이벤트 데이터를 기반으로 학습된 솔루션 버전은 상호 작용 횟수가 많기 때문에 성능이 더 좋은 것으로 잘못 나타날 수 있습니다.

Amazon Personalize는 성능 지표를 얻기 위해 입력된 상호 작용 데이터를 교육 세트, 테스트 세트, PERSONALIZED_ACTIONS의 경우 검증 세트로 분할합니다. 분리는 선택한 레시피 유형에 따라 달라집니다.

  • 사용자_세분화 레시피의 경우 학습 세트는 각 사용자 상호작용 데이터의 80%로 구성되고 테스트 세트는 각 사용자 상호작용 데이터의 20%로 구성됩니다.

  • 다른 모든 레시피 유형의 경우 학습 세트는 사용자의 90%와 이들의 상호작용 데이터로 구성됩니다. 테스트 세트는 나머지 10%의 사용자와 이들의 상호작용 데이터로 구성됩니다.

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

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

솔루션 버전 지표 검색

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

솔루션 버전 지표 검색(콘솔)

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

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

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

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

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

  5. 솔루션 버전에서 세부 정보 페이지를 보려는 솔루션 버전을 선택합니다. 지표가 하단 창의 솔루션 버전 지표 탭에 나열됩니다. 지표의 정의는 지표 정의단원을 참조하세요.

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

솔루션 버전 지표 검색(AWS CLI)

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

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

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

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

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

솔루션 버전 지표 (SDK) 검색AWS

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

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); } }

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

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

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

지표 정의

Personalize가 솔루션 버전에 대해 생성하는 지표는 다음과 같은 용어를 사용하여 아래에 설명되어 있습니다.

  • 관련 추천은 사용자가 실제로 상호작용한 항목에 대한 추천입니다. 이들 항목은 테스트 세트의 각 사용자 상호작용 데이터 중 최신 10%에서 가져온 것입니다.

  • 순위는 추천 목록 내에서 해당 추천 항목의 위치를 말합니다. 위치 1(목록의 맨 위)이 사용자와 가장 관련 있는 것으로 간주됩니다.

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

비율

커버리지 값은 Amazon Personalize가 데이터 세트의 총 고유 레코드 수 중에서 추천할 수 있는 고유 항목 (항목 권장 사항), 작업 (작업 권장 사항) 또는 사용자 (사용자 세그먼트 권장 사항) 의 비율을 나타냅니다.

적용 범위 점수가 높을수록 Amazon Personalize에서 동일한 레코드보다 더 많은 카탈로그를 추천합니다. 사용자-개인 맞춤과 같이 항목 탐색이 포함된 레시피는 그렇지 않은 레시피(예: 유사-항목)보다 적용 범위 점수가 더 높습니다.

평균 역수 순위 25

이 지표는 관련 항목 추천을 상위 순위에서 생성하는 모델의 능력을 보여줍니다.

사용자에 대한 항목 검색 결과를 생성하는 경우 평균 역수 순위가 25로 높은 모델을 선택할 수 있으며, 사용자가 목록에서 더 낮은 항목을 선택할 것으로 예상하지 않습니다. 예를 들어 사용자는 검색 결과에서 첫 번째 요리 레시피를 선택하는 경우가 많습니다. Amazon Personalize는 PERSONALIZED_ACTIONS 또는 USER_SEGMENTATION 레시피에 대해서는 이 지표를 생성하지 않습니다.

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명의 사용자는 수행하지 않은 경우 해당 작업의 precision60 / 100 = .60입니다. 그러면 Amazon Personalize는 이 계산을 모든 작업에 적용하고 평균을 반환합니다.

이 지표는 관련 작업의 정확한 추천을 보상합니다. 점수가 1에 가까울수록 모델의 정밀도가 높아집니다.

average_rewards_at_k

최적화 목표를 가진 솔루션에 대한 솔루션 버전을 생성(모델을 학습)하면 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에 가까울수록 추천을 통해 사용자당 얻을 수 있는 평균 수익이 더 커집니다.

자세한 정보는 추가 목표에 맞게 솔루션 최적화을 참조하세요.

추세 예측 정확도

지금-유행 레시피로 솔루션 버전을 학습시킨 경우 모델에서 추천하는 항목의 인기 증가율. 추세 예측 정확도가 높을수록(1에 가까울수록) 모델이 유행 항목을 더 정확하게 식별할 수 있습니다.

인기 가속화를 계산하기 위해 Personalize는 모든 추천 아이템의 인기도 증가율을 상위 25개 인기 항목의 총 인기도 증가율로 나눕니다. 이들 항목은 테스트 세트의 실제 상호작용에서 나온 것입니다.

데이터 분포와 추세 발견 빈도에 따라 추세 예측 정확도 값은 0.0이 될 수 있습니다.

히트(K 히트)

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

재현율(K 재현율)

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

리콜

차선책-작업 레시피로 솔루션 버전을 교육하는 경우, 이 지표를 통해 솔루션 버전이 사용자가 상호 작용할 작업을 찾는 데 얼마나 효과적인지 알 수 있습니다.

Amazon Personalize는 데이터 세트의 각 작업에 대해 해당 작업을 수행할 것으로 올바르게 예측된 사용자 수를 테스트 세트에서 실제로 작업을 수행한 총 사용자 수로 나누어 recall을 계산합니다. 그 후 Amazon Personalize는 데이터 세트의 모든 작업에 대한 평균을 계산합니다.

예를 들어, 테스트 세트에서 100명의 사용자가 작업을 수행하고 Amazon Personalize에서 이러한 사용자 중 50명이 작업을 수행할 것으로 예측한 경우 작업에 대한 recall50 / 100 = .50입니다. 그러면 Amazon Personalize는 이 계산을 모든 작업에 적용하고 평균을 반환합니다.

곡선 아래 면적(AUC)

PERSONALIZED_ACTIONS 레시피로 솔루션 버전을 교육한 경우 해당 솔루션 버전의 수신기 작동 특성 곡선 아래 면적입니다. 이 지표는 사용자가 수행할 작업을 정확히 식별하여 솔루션 버전이 얼마나 잘 수행되는지를 보여줍니다.

수신기 작동 특성 곡선은 솔루션 버전의 성능을 나타냅니다. 이 곡선은 서로 다른 임곗값에서 참 긍정(관련이 있다고 올바르게 예측된 작업) 및 거짓 긍정(관련이 있다고 잘못 예측된 작업) 비율을 표시합니다. 곡선 아래 면적(AUC)은 곡선을 기반으로 솔루션 버전의 성능을 요약한 점수입니다.

솔루션 버전의 AUC는 0에서 1 사이일 수 있습니다. 1에 가까울수록 모델이 사용자의 관련 작업을 더 잘 예측할 수 있습니다.

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

reciprocal_rank

계산: 1/2

결과: 0.5000

normalized_discounted_cumulative_gain_at_5

계산: (1/log(1 + 2) + 1/log(1 + 5)) / (1/log(1 + 1) + 1/log(1 + 2))

결과: 0.6241

precision_at_5

계산: 2/5

결과: 0.4000

추가 리소스

A/B 테스트를 통한 솔루션 버전 평가에 대한 자세한 내용은 A/B 테스트를 사용하여 Personalize에서 생성한 추천의 효율성 측정 단원을 참조하세요. 추천자 시스템을 위한 다양한 유형의 지표를 자세히 알아보려면 다음 외부 리소스를 참조하세요.