기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Personalize 도메인 추천자 평가
오프라인 및 온라인 지표를 통해 추천자의 성능을 평가할 수 있습니다. 온라인 지표는 실시간 추천과의 사용자 상호작용에서 보게 되는 경험적 결과입니다. 예를 들어 카탈로그를 탐색하는 사용자의 클릭률을 기록할 수 있습니다. 모든 온라인 지표를 생성하고 기록하는 것은 귀하의 책임입니다.
오프라인 지표는 추천자를 생성할 때 Amazon Personalize가 생성하는 지표입니다. 오프라인 지표를 사용하면 추천자 지원 모델의 성능을 평가할 수 있습니다. 추천자의 구성을 수정하는 효과를 볼 수 있으며, 다른 사용 사례로 훈련된 추천자의 결과를 동일한 데이터세트 그룹의 동일한 데이터와 비교할 수 있습니다.
다양한 데이터로 학습된 다양한 추천자의 지표를 비교하지 마세요. 지표의 차이는 모델 성능이 아닌 데이터의 차이일 수 있습니다. 예를 들어 각 사용자에 대해 희소 purchase
이벤트 데이터가 있는 데이터세트 그룹과 강력한 view
이벤트 데이터가 있는 데이터세트 그룹이 있을 수 있습니다. precision at K
와 같은 지표를 기반으로 보기 이벤트 데이터에 대해 학습된 추천자는 상호작용 수가 늘어나기 때문에 성능이 더 나아진 것으로 잘못 보일 수 있습니다.
성능 지표를 얻기 위해 Personalize는 입력 상호작용 데이터를 학습 세트와 테스트 세트로 분리합니다. 학습 세트는 90%의 사용자와 이들의 상호작용 데이터로 구성됩니다. 테스트 세트는 나머지 10%의 사용자와 이들의 상호작용 데이터로 구성됩니다.
그러면 Personalize는 학습 세트를 사용하여 추천자를 생성합니다. 학습이 완료되면 Personalize는 새 추천자에 테스트 세트의 각 사용자 데이터 중 가장 오래된 90%를 입력으로 제공합니다. 그런 다음 Personalize는 해당 추천자가 생성한 추천을 테스트 세트에 있는 각 사용자 데이터의 최신 10%에서 얻은 실제 상호작용과 비교하여 지표를 계산합니다.
지표 검색
추천자가 활성화되면 Personalize 콘솔에서 해당 추천자에 대한 지표를 보거나 DescribeRecommender작업을 호출하여 지표를 검색할 수 있습니다.
지표 보기(콘솔)
콘솔에서 추천자 지표를 보려면 해당 추천자의 세부 정보 페이지로 이동합니다.
-
https://console.aws.amazon.com/personalize/home
에서 Amazon Personalize 콘솔을 열고 계정에 로그인합니다. -
데이터세트 그룹 페이지에서 도메인 데이터세트 그룹을 선택합니다.
-
탐색 창에서 추천자를 선택합니다.
-
추천자 목록에서 해당 지표를 확인할 추천자를 선택합니다.
지표 검색(AWS CLI)
다음 코드는 AWS CLI을 사용하여 추천자의 지표를 가져오는 방법을 보여줍니다.
aws personalize describe-recommender \ --recommender-arn
recommender arn
다음은 VIDEO_ON_DEMAND 도메인의 가장 적합한 추천 제품 사용 사례에 대해 생성된 추천자의 지표 출력 예제입니다.
{ "recommender": { "recommenderArn": "arn:aws:personalize:region:acct-id:recommender/recommenderName", "datasetGroupArn": "arn:aws:personalize:region:acct-id:dataset-group/dsGroupName", "name": "name123", "recipeArn": "arn:aws:personalize:::recipe/aws-vod-top-picks", "modelMetrics": { "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, } "recommenderConfig": {}, "creationDateTime": "2022-05-06T10:11:24.589000-07:00", "lastUpdatedDateTime": "2022-05-06T10:34:33.270000-07:00", "status": "ACTIVE", } }
지표 검색(AWS SDK)
다음 코드는 Python용 SDK(Boto3)를 사용하여 추천자에 대한 지표를 가져오는 방법을 보여줍니다.
import boto3 personalize = boto3.client('personalize') response = personalize.describe_recommender( recommenderArn = '
recommender_arn
' ) print(response['recommender']['modelMetrics'])
다음은 VIDEO_ON_DEMAND 도메인의 가장 적합한 추천 제품 사용 사례에 대해 생성된 추천자의 지표 출력 예제입니다.
{ "recommender": { "recommenderArn": "arn:aws:personalize:region:acct-id:recommender/recommenderName", "datasetGroupArn": "arn:aws:personalize:region:acct-id:dataset-group/dsGroupName", "name": "name123", "recipeArn": "arn:aws:personalize:::recipe/aws-vod-top-picks", "modelMetrics": { "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, } "recommenderConfig": {}, "creationDateTime": "2022-05-06T10:11:24.589000-07:00", "lastUpdatedDateTime": "2022-05-06T10:34:33.270000-07:00", "status": "ACTIVE", } }
지표 정의
Personalize가 추천자에 대해 생성하는 지표는 다음과 같은 용어를 사용하여 아래에 설명되어 있습니다.
-
관련 추천은 사용자가 실제로 상호작용한 항목에 대한 추천입니다. 이들 항목은 테스트 세트의 각 사용자 상호작용 데이터 중 최신 10%에서 가져온 것입니다.
-
순위는 추천 목록 내에서 해당 추천 항목의 위치를 말합니다. 위치 1(목록의 맨 위)이 사용자와 가장 관련 있는 것으로 간주됩니다.
각 지표의 경우 숫자가 높을수록(1에 가까울수록) 더 좋습니다. 더 자세히 알아보려면 추가 리소스에 나열된 리소스를 참조하세요.
- 비율
-
비율 값은 상호작용 및 항목 데이터세트의 고유 항목 총 수 중에서 Personalize가 추천할 수 있는 고유 항목의 비율을 나타냅니다. 비율 점수가 높을수록 Personalize는 여러 사용자에게 동일한 몇 가지 항목을 반복해서 추천하는 대신 해당 품목을 더 많이 추천한다는 의미입니다. 가장 적합한 추천 제품(VIDEO_ON_DEMAND) 및 추천 제품(ECOMMERCE) 등 특성 항목 탐색이 포함된 사용 사례가 그렇지 않은 경우보다 비율이 더 높습니다.
- 평균 역수 순위 25
-
이 지표는 관련 추천을 상위 순위에서 생성하는 모델의 능력을 보여줍니다. 사용자에게 관련성이 높은 검색 결과를 생성하고 있지만 사용자가 목록에서 더 아래 쪽의 항목을 선택하지 않을 것으로 예상한다면 평균 역수 순위 25가 높은 모델을 선택할 수 있습니다. 예를 들어 사용자는 검색 결과에서 첫 번째 요리 레시피를 선택하는 경우가 많습니다.
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를 계산합니다. 각 추천은 위치에 따라 계수만큼 할인됩니다(더 낮은 가중치가 부여됨). 최종 지표는 테스트 세트에 있는 모든 사용자의 평균입니다. 정규화된 할인 누적 이득 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에 가까울수록 모델의 정밀도가 높아집니다.
예제
다음은 특정 사용자를 위한 추천 목록을 생성하는 추천자의 간단한 예입니다. 두 번째 추천과 다섯 번째 추천은 이 사용자에 대한 테스트 데이터의 레코드와 일치합니다. 이들 두 가지는 관련 추천입니다. K
을 5
로 설정하면 사용자에 대해 다음 지표가 생성됩니다.
- 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
추가 리소스
추천자 시스템을 위한 다양한 유형의 지표를 자세히 알아보려면 다음 외부 리소스를 참조하세요.