Amazon Personalize
Amazon Personalize는 하루 종일 작동하는 나만의 Amazon 머신 러닝 추천 시스템과 같습니다. 20년 이상의 추천 경험을 바탕으로, Amazon Personalize는 실시간 개인화된 제품 및 콘텐츠 추천과 타겟 마케팅 프로모션을 통해 고객 참여를 향상시킬 수 있도록 지원합니다.
이 통합은 Amazon Personalize에서 유지 관리합니다.
통합 소개
머신 러닝과 사용자가 직접 정의하는 알고리즘을 활용하여 Amazon Personalize는 웹사이트와 애플리케이션에 고품질 추천을 제공하는 모델을 훈련하는 데 도움을 줍니다. 이러한 모델을 사용하면 사용자의 과거 행동을 기반으로 추천 목록을 생성하고, 관련성에 따라 항목을 정렬하며, 유사성에 기반하여 다른 항목을 추천할 수 있습니다. Amazon Personalize API에서 가져온 목록을 Braze 연결된 콘텐츠에 활용하여 개인화된 Braze 추천 캠페인을 실행할 수 있습니다. Amazon Personalize와 통합하면 고객은 모델 훈련에 사용되는 매개변수를 자유롭게 제어하고, 알고리즘의 출력을 최적화하는 선택적 비즈니스 목표를 정의할 수 있습니다.
이 참조 문서에서는 Amazon Personalize가 제공하는 사용 사례, Amazon Personalize에서 다루는 데이터, 서비스 구성 방법, 그리고 Braze와의 통합 방법을 이해하는 데 도움을 드립니다.
사전 요구사항
| 요구사항 | 설명 |
|---|---|
| Amazon Web Service 계정 | 이 파트너십을 활용하려면 AWS 계정이 필요합니다. AWS 계정이 있으면 Amazon Personalize 콘솔, AWS 명령줄 인터페이스(AWS CLI) 또는 AWS SDK를 통해 Amazon Personalize에 액세스할 수 있습니다. |
| 정의된 사용 사례 | 모델을 생성하기 전에 이 통합의 사용 사례를 결정해야 합니다. 일반적인 사용 사례는 다음 목록을 참조하세요. |
| 데이터세트 | Amazon Personalize 추천 모델에는 인터랙션, 사용자, 아이템의 세 가지 유형의 데이터세트가 필요합니다. 각 데이터세트의 요구사항은 아래 세부 정보를 참조하세요. |
사용 사례
모델을 생성하기 전에 이 통합의 사용 사례를 결정해야 합니다. 일반적인 사용 사례는 다음과 같습니다:
- 이전 인터랙션을 기반으로 사용자에게 아이템을 추천하여 진정한 개인화된 경험을 제공합니다.
- 각 사용자에 맞춤화된 아이템 목록 또는 검색 결과를 제공하여 사용자와의 관련성에 따라 아이템을 표시함으로써 참여를 높입니다.
- 유사한 아이템에 대한 추천을 찾아 사용자가 새로운 것을 발견할 수 있도록 돕습니다.
다음 가이드에서는 사용자 개인화된 추천 레시피에 초점을 맞추겠습니다.
데이터세트
Amazon Personalize 추천 모델을 시작하려면 세 가지 유형의 데이터세트가 필요합니다:
- 인터랙션
- 사용자와 아이템 간의 과거 인터랙션을 저장합니다
USER_ID,ITEM_ID,EVENT_TYPE및TIMESTAMP값이 필요하며, 선택적으로 이벤트에 대한 메타데이터를 허용합니다
- 사용자
- 사용자에 대한 메타데이터를 저장합니다
USER_ID값과 성별, 나이, 로열티 멤버십 등의 메타데이터 필드(문자열 또는 숫자) 하나 이상이 필요합니다
- 아이템
- 아이템에 대한 메타데이터를 저장합니다
ITEM_ID와 아이템을 설명하는 메타데이터 필드(텍스트, 범주형 또는 숫자) 하나 이상이 필요합니다
사용자 추천 레시피의 경우, 최소 25명의 고유 사용자가 각각 2회 이상의 인터랙션을 기록한 최소 1000개의 인터랙션 데이터 포인트가 포함된 인터랙션 데이터세트를 제공해야 합니다. 이러한 데이터세트는 S3에 저장된 CSV 파일을 사용하여 일괄 업로드하거나 API를 통해 점진적으로 업로드할 수 있습니다.
모델 생성
1단계: 학습
데이터셋을 가져오면 솔루션을 생성할 수 있습니다. 솔루션은 Amazon Personalize 레시피(알고리즘) 중 하나를 사용하여 모델을 학습시킵니다. 이 예제에서는 USER_PERSONALIZATION 레시피를 사용합니다. 솔루션을 학습시키면 솔루션 버전(학습된 모델)이 생성되며, 모델의 성능 측정기준을 기반으로 평가할 수 있습니다.
Amazon Personalize에서는 모델이 학습에 사용하는 하이퍼파라미터를 조정할 수 있습니다. 예를 들면 다음과 같습니다.
- Amazon Personalize 콘솔의 “사용자 이력 길이 백분위수” 파라미터를 사용하면 학습에 포함할 사용자 이력의 백분위수를 조정할 수 있습니다.
min_user_history_length_percentile: 이력 길이가 매우 짧은 사용자의 일정 비율을 제외합니다. 이를 통해 인기 아이템을 제거하고 더 깊은 기저 패턴을 기반으로 추천을 구축하는 데 도움이 될 수 있습니다.max_user_history_length_percentile: 이력 길이가 매우 긴 사용자를 학습에 포함할 비율을 조정합니다.
은닉 차원의 수는 복잡한 데이터셋에서 더 정교한 패턴을 감지하는 데 도움이 되며, 시간역전파(BPTT) 기법은 일련의 이벤트가 발생하여 높은 가치의 행동으로 이어진 후 초기 이벤트에 대한 보상을 조정합니다.
또한, Amazon Personalize는 서로 다른 값으로 여러 버전의 솔루션을 동시에 실행하여 자동 하이퍼파라미터 튜닝을 제공합니다. 튜닝을 사용하려면 솔루션을 생성할 때 HPO 수행을 활성화하세요.
2단계: 평가 및 비교
솔루션의 학습이 완료되면 평가하고 서로 다른 버전을 비교할 수 있습니다. 각 솔루션 버전에는 계산된 측정기준이 표시됩니다. 사용할 수 있는 측정기준 중 일부는 다음과 같습니다.
- 정규화 할인 누적 이득: 추천된 아이템 순서를 실제 아이템 목록과 비교하고, 목록에서의 위치에 따라 각 아이템에 가중치를 부여합니다.
- 정밀도 @k: 올바르게 추천된 아이템 수를 전체 추천 아이템 수로 나눈 값으로,
k는 아이템의 수입니다. - 평균 역순위: 첫 번째로 가장 높은 순위의 추천에 초점을 맞추며, 첫 번째 일치하는 추천이 나타나기 전까지 얼마나 많은 추천 아이템이 표시되는지 계산합니다.
- 커버리지: 고유 추천 아이템 수가 데이터셋의 전체 고유 아이템 수에서 차지하는 비율입니다.
추천 가져오기
만족스러운 솔루션 버전을 생성한 후에는 추천을 활용할 차례입니다. 추천에 접근하는 방법은 두 가지가 있습니다:
- 실시간 캠페인
캠페인은 최소 트랜잭션 처리량이 정의된 배포된 솔루션 버전입니다. 트랜잭션은 추천 출력을 가져오기 위한 단일 API 호출이며, TPS(초당 트랜잭션 수)로 정의되고 최솟값은 1입니다. 캠페인은 부하가 증가할 경우 리소스를 확장하지만 최솟값 이하로 내려가지는 않습니다. 콘솔, AWS CLI 또는 코드 내 AWS SDK를 통해 추천을 쿼리할 수 있습니다. - 배치 작업
배치 작업은 추천을 S3 버킷으로 내보냅니다. 이 작업은 추천을 내보낼 사용자 ID 목록이 포함된 JSON 파일을 입력으로 받습니다. 그런 다음 올바른 권한과 출력 대상을 지정하면 작업을 실행할 준비가 됩니다. 실행 시간은 데이터셋의 크기와 추천 목록의 길이에 따라 달라집니다.
필터
필터를 사용하면 항목의 ID, 이벤트 유형 또는 메타데이터를 기반으로 항목을 제외하여 추천 출력을 조정할 수 있습니다. 또한 나이나 로열티 멤버십 상태 등 메타데이터를 기반으로 사용자를 필터링하고, 사용자가 이미 상호작용한 항목이 추천되지 않도록 할 수 있습니다.
Braze와 결과 통합하기
생성된 모델과 추천 캠페인을 통해 Content Cards와 연결된 콘텐츠를 사용하여 사용자 대상 Braze 캠페인을 실행할 준비가 되었습니다. Braze 캠페인을 실행하기 전에, API를 통해 이러한 추천을 제공할 수 있는 서비스를 만들어야 합니다. 워크숍 문서의 3단계를 따라 AWS 서비스를 사용하여 서비스를 배포할 수 있습니다. 또한 추천을 제공하는 독립적인 자체 백엔드 서비스를 배포할 수도 있습니다.
콘텐츠 카드 캠페인 사용 사례
목록에서 첫 번째 추천 항목을 사용하여 콘텐츠 카드 캠페인을 실행해 보겠습니다.
다음 예시에서는 user_id 파라미터와 함께
GET http://<service-endpoint.com>/recommendations?user_id=user123 엔드포인트를 쿼리하여 추천 항목 목록을 반환받습니다:
[
{
"id": "abc123",
"url": "http://productpage.com/product/abc123",
"name": "First Item",
"price": 39.99,
"image": "http://pp.cdn.com/abvh3321pjb1j"
},
{
"id": "xyz987",
"url": "http://productpage.com/product/xyz987",
"name": "Great Item",
"price": 19.99,
"image": "http://pp.cdn.com/234bjl1gioj1b2b"
},
...
]
Braze 대시보드에서 새 콘텐츠 카드 캠페인을 생성합니다. 메시지 텍스트 필드에서 API를 쿼리하고 응답을 recommendations 변수에 저장하는 연결된 콘텐츠 Liquid 블록을 만듭니다:
{% connected_content https:/<service-endpoint.com>/recommendations?user_id={{${user_id}}} :save recommendations %}
그런 다음 결과 배열의 첫 번째 항목을 참조하여 사용자에게 콘텐츠를 표시할 수 있습니다:
This seems like a great fit for you:
{% recommendations[0].name %}
{% recommendations[0].price %}
제목, 이미지를 포함하고 URL을 연결하면, 완성된 콘텐츠 카드는 다음과 같은 모습이 됩니다:
