제퍼넷 로고

Amazon Personalize를 사용하여 실시간 맞춤형 추천 구현 | 아마존 웹 서비스

시간

기본적으로 머신러닝(ML) 기술은 데이터를 학습하여 예측을 합니다. 기업은 ML 기반 개인화 서비스와 함께 데이터를 사용하여 고객 경험을 향상시킵니다. 이 접근 방식을 통해 기업은 데이터를 사용하여 실행 가능한 통찰력을 얻고 수익과 브랜드 충성도를 높이는 데 도움을 줄 수 있습니다.

아마존 개인화 ML을 통해 디지털 혁신을 가속화하여 개인화된 추천을 기존 웹사이트, 애플리케이션, 이메일 마케팅 시스템 등에 더 쉽게 통합할 수 있습니다. Amazon Personalize를 사용하면 개발자가 ML 전문 지식 없이도 맞춤형 개인화 엔진을 신속하게 구현할 수 있습니다. Amazon Personalize는 필요한 인프라를 프로비저닝하고 데이터 처리, 기능 식별, 가장 적절한 알고리즘 사용, 모델 교육, 최적화 및 호스팅을 포함하여 전체 기계 학습(ML) 파이프라인을 관리합니다. API를 통해 결과를 받고 최소 비용이나 사전 약정 없이 사용한 만큼만 비용을 지불합니다.

포스트 Amazon Personalize를 사용하여 실시간에 가까운 맞춤형 추천 설계 Amazon Personalize를 사용하여 실시간에 가까운 맞춤형 추천을 설계하는 방법을 보여줍니다. AWS에서 특별히 구축한 데이터 서비스. 이 게시물에서는 Amazon Personalize를 사용하여 실시간 개인화된 추천 시스템의 참조 구현을 안내합니다.

솔루션 개요

실시간 개인화 추천 솔루션은 다음을 사용하여 구현됩니다. 아마존 개인화, Amazon Simple Storage Service(Amazon S3), Amazon Kinesis 데이터 스트림, AWS 람다아마존 API 게이트웨이.

아키텍처는 다음과 같이 구현됩니다.

  1. 데이터 준비 – 시작 데이터 세트 그룹 생성, 스키마 및 데이터 세트 항목, 상호 작용 및 사용자 데이터를 나타냅니다.
  2. 모델 훈련 – 데이터를 가져온 후 사용 사례에 맞는 레시피를 선택한 다음 솔루션을 만들다 모델을 훈련시키다 솔루션 버전을 생성합니다. 솔루션 버전이 준비되면 솔루션 버전에 대한 캠페인을 생성할 수 있습니다.
  3. 실시간에 가까운 추천 받기 – 캠페인이 있으면 애플리케이션에서 캠페인에 대한 통화를 통합할 수 있습니다. 여기가 추천 받기 or GetPersonalized랭킹 API는 Amazon Personalize에서 실시간에 가까운 추천을 요청하도록 만들어졌습니다.

자세한 내용은 Amazon Personalize를 사용하여 실시간에 가까운 맞춤형 추천 설계.

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

실시

시간이 지남에 따라 영화 데이터베이스와의 상호 작용을 기반으로 최종 사용자에게 실시간 영화 추천을 제공하는 사용 사례를 통해 이 구현을 시연합니다.

솔루션은 다음 단계를 사용하여 구현됩니다.

  1. 전제조건(데이터 준비)
  2. 개발 환경 설정
  3. 솔루션 배포
  4. 솔루션 버전 만들기
  5. 캠페인 만들기
  6. 이벤트 추적기 만들기
  7. 추천 받기
  8. 실시간 상호작용 수집
  9. 실시간 추천 검증
  10. 대청소

사전 조건

시작하기 전에 다음 전제 조건이 있는지 확인하십시오.

  • 훈련 데이터 준비 – 다음을 사용하여 데이터를 준비하고 S3 버킷에 업로드합니다. 명령. 이 특정 사용 사례에서는 상호 작용 데이터와 항목 데이터를 업로드하게 됩니다. 상호 작용은 기록하고 훈련 데이터로 가져오는 이벤트입니다. Amazon Personalize는 주로 상호 작용 데이터 세트로 가져온 상호 작용 데이터를 기반으로 권장 사항을 생성합니다. 클릭, 시청, 좋아요 등 다양한 이벤트 유형을 기록할 수 있습니다. Amazon Personalize에서 생성된 모델은 사용자의 과거 상호 작용을 기반으로 제안할 수 있지만, 모델이 사용자 또는 항목 간의 연관성에 대한 데이터를 보유하고 있으면 이러한 제안의 품질이 향상될 수 있습니다. 사용자가 항목 데이터 세트에서 드라마로 분류된 영화에 참여한 경우 Amazon Personalize는 동일한 장르의 영화(항목)를 제안합니다.
  • 개발 환경 설정 - 설치 AWS 명령줄 인터페이스(AWS CLI).
  • Amazon 계정으로 CLI 구성 - AWS CLI 구성 귀하의 AWS 계정 정보로.
  • AWS CDK(AWS Cloud Development Kit) 설치 및 부트스트랩

솔루션 배포

솔루션을 배포하려면 다음을 수행합니다.

  • 복제 데스크탑의 새 폴더에 저장소를 복사합니다.
  • 배포 AWS 환경에 스택을 추가합니다.

솔루션 버전 만들기

솔루션은 Amazon Personalize 레시피, 사용자 정의 매개변수 및 하나 이상의 솔루션 버전(훈련된 모델)의 조합을 의미합니다. 이전 단계에서 CDK 프로젝트를 배포하면 사용자 개인화 레시피가 포함된 솔루션이 자동으로 생성됩니다. 솔루션 버전은 훈련된 기계 학습 모델을 나타냅니다. 만들기 솔루션 버전 구현을 위해.

캠페인 만들기

캠페인은 실시간 추천 생성을 위해 프로비저닝된 트랜잭션 용량을 갖춘 솔루션 버전(학습된 모델)을 배포합니다. 만들기 운동 구현을 위해.

이벤트 추적기 만들기

Amazon Personalize는 실시간 이벤트 데이터만, 기록 이벤트 데이터만 또는 둘 다를 기반으로 추천을 제공할 수 있습니다. 실시간 이벤트를 기록하여 상호 작용 데이터를 구축하고 Amazon Personalize가 사용자의 가장 최근 활동을 학습할 수 있도록 하십시오. 이렇게 하면 데이터를 최신 상태로 유지하고 Amazon Personalize 권장 사항의 관련성을 향상시킵니다. 이벤트를 기록하려면 먼저 이벤트 추적기를 생성해야 합니다. 이벤트 추적기는 새 이벤트 데이터를 데이터 세트 그룹의 상호 작용 데이터 세트로 보냅니다. 생성 및 이벤트 트래커 구현을 위해.

추천 받기

이 사용 사례에서 상호 작용 데이터 세트는 영화 ID로 구성됩니다. 결과적으로 사용자에게 제시되는 추천은 과거 상호 작용을 통해 결정된 개인 선호도와 가장 밀접하게 일치하는 영화 ID로 구성됩니다. 당신은 사용할 수 있습니다 getRecommendations 관련 정보를 전송하여 사용자를 위한 맞춤 추천을 검색하는 API userID, 사용자와 캠페인 ARN에 필요한 권장 사항에 대한 결과 수입니다. Amazon Personalize 콘솔 메뉴에서 캠페인 ARN을 찾을 수 있습니다.

예를 들어 다음 요청은 다음을 수행하는 사용자에 대한 추천 5개를 검색합니다. userId 429:

curl --location 'https://{your-api-id}.execute-api.{your-region}.amazonaws.com/prod/getRecommendations?campaignArn={campaignArn}&userId=429&numResults=5'

요청의 응답은 다음과 같습니다.

{ "$metadata": { "httpStatusCode": 200, "requestId": "7159c128-4e16-45a4-9d7e-cf19aa2256e8", "attempts": 1, "totalRetryDelay": 0 }, "itemList": [ { "itemId": "596", "score": 0.0243044 }, { "itemId": "153", "score": 0.0151695 }, { "itemId": "16", "score": 0.013694 }, { "itemId": "261", "score": 0.013524 }, { "itemId": "34", "score": 0.0122294 } ], "recommendationId": "RID-1d-40c1-8d20-dfffbd7b0ac7-CID-06b10f"
}

API 호출에서 반환되는 항목은 Amazon Personalize가 과거 상호 작용을 기반으로 사용자에게 추천하는 영화입니다.

이 컨텍스트에 제공된 점수 값은 1.0에서 XNUMX 사이의 부동 소수점 숫자를 나타냅니다. 이러한 값은 현재 캠페인 및 이 사용 사례의 관련 레시피에 해당합니다. 이는 포괄적인 데이터 세트에 있는 모든 항목에 할당된 종합 점수를 기반으로 결정됩니다.

실시간 상호작용 수집

이전 예에서는 영화 데이터베이스와의 과거 상호 작용을 기반으로 ID가 429인 사용자에 대한 추천을 얻었습니다. 실시간 추천을 위해서는 항목과의 사용자 상호 작용이 Amazon Personalize에 실시간으로 수집되어야 합니다. 이러한 상호 작용은 Amazon Personalize를 통해 추천 시스템으로 수집됩니다. 이벤트 트래커. 상호작용 유형이라고도 합니다. EventType는 상호작용 데이터 데이터세트에서 동일한 이름의 열로 제공됩니다(EVENT_TYPE). 이 예에서 이벤트는 "watch" 또는 "click" 유형일 수 있지만 애플리케이션의 필요에 따라 고유한 유형의 이벤트를 가질 수 있습니다.

이 예시에서는 아이템이 포함된 사용자의 이벤트를 생성하는 노출된 API가 이벤트 수에 해당하는 “interactions” 매개변수를 수신합니다(interactions)의 사용자(UserId) 단일 요소(itemId) 지금 바로. 그만큼 trackingId 매개변수는 Amazon Personalize 콘솔과 Event Tracker 요청 생성에 대한 응답에서 찾을 수 있습니다.

이 예는 다음을 보여줍니다. putEvent 요청: 현재 타임스탬프를 사용하여 사용자 ID '1'에 대해 항목 ID가 '185'인 클릭 유형의 상호 작용 429개를 생성합니다. 프로덕션에서는 'sentAt'를 사용자 상호작용 시간으로 설정해야 합니다. 다음 예에서는 이 게시물에 대한 API 요청을 작성할 때 이를 에포크 시간 형식의 시점으로 설정합니다. 이벤트는 API 게이트웨이를 통해 Amazon Kinesis Data Streams로 전송되므로 stream-name 및 PartitionKey 매개변수를 전송해야 합니다.

curl --location 'https://iyxhva3ll6.execute-api.us-west-2.amazonaws.com/prod/data' --header 'Content-Type: application/json' --data '{ "stream-name": "my-stream","Data": {"userId" : "429", "interactions": 1, "itemId": "185", "trackingId" : "c90ac6d7-3d89-4abc-8a70-9b09c295cbcd", "eventType": "click", "sentAt":"1698711110"},"PartitionKey":"userId"}'

다음과 유사한 확인 응답을 받게 됩니다.

{ "Message": "Event sent successfully", "data": { "EncryptionType": "KMS", "SequenceNumber": "49..........1901314", "ShardId": "shardId-xxxxxxx" }
}

실시간 추천 검증

상호 작용 데이터 세트가 업데이트되었으므로 새로운 상호 작용을 고려하도록 권장 사항이 자동으로 업데이트됩니다. 실시간으로 업데이트된 추천을 검증하려면 동일한 사용자 ID 429에 대해 getRecommendations API를 다시 호출할 수 있으며 결과는 이전 결과와 달라야 합니다. 다음 결과는 ID가 594인 새 권장 사항을 보여 주며 ID가 16, 596, 153 및 261인 권장 사항의 점수가 변경되었습니다. 이러한 항목은 새로운 영화 장르('애니메이션|어린이|드라마|판타지|뮤지컬')를 추천 상위 5개로 가져왔습니다.

의뢰:

curl --location 'https://{your-api-id}.execute-api.{your-region}.amazonaws.com/prod/getRecommendations?campaignArn={campaignArn} &userId=429&numResults=5'

응답 :

{ "$metadata": { "httpStatusCode": 200, "requestId": "680f2be8-2e64-47d7-96f7-1c4aa9b9ac9d", "attempts": 1, "totalRetryDelay": 0 }, "itemList": [ { "itemId": "596", "score": 0.0288085 }, { "itemId": "16", "score": 0.0134173 }, { "itemId": "594", "score": 0.0129357 }, { "itemId": "153", "score": 0.0129337 }, { "itemId": "261", "score": 0.0123728 } ], "recommendationId": "RID-dc-44f8-a327-482fb9e54921-CID-06b10f"
}

응답에는 Amazon Personalize에서 제공하는 권장 사항이 실시간으로 업데이트되었음을 ​​보여줍니다.

정리

불필요한 비용을 피하려면 다음을 사용하여 솔루션 구현을 정리하세요. 자원 정리.

결론

이 게시물에서는 Amazon Personalize를 사용하여 실시간 개인화된 추천 시스템을 구현하는 방법을 보여주었습니다. 실시간 상호 작용을 수집하고 권장 사항을 얻기 위한 Amazon Personalize와의 상호 작용은 컬이라는 명령줄 도구를 통해 실행되었지만 이러한 API 호출은 비즈니스 애플리케이션에 통합되어 동일한 결과를 도출할 수 있습니다.

사용 사례에 맞는 새로운 레시피를 선택하려면 다음을 참조하세요. 실시간 개인화. Amazon Personalize의 권장 사항이 미치는 영향을 측정하려면 다음을 참조하세요. 추천의 영향 측정.


저자에 관하여

크리스티안 마르케스 수석 클라우드 애플리케이션 설계자입니다. 그는 엔터프라이즈급 소프트웨어, 고부하 분산 시스템, 클라우드 네이티브 애플리케이션을 설계, 구축 및 제공하는 데 있어 광범위한 경험을 보유하고 있습니다. 그는 백엔드 및 프런트엔드 프로그래밍 언어뿐 아니라 DevOps 방식의 시스템 설계 및 구현 경험도 있습니다. 그는 고객이 혁신적인 클라우드 솔루션을 구축 및 보호하고 비즈니스 문제를 해결하고 비즈니스 목표를 달성하도록 적극적으로 지원합니다.

아난드 코만두루 AWS의 선임 클라우드 설계자입니다. 그는 2021년에 AWS Professional Services 조직에 합류했으며 고객이 AWS 클라우드에서 클라우드 네이티브 애플리케이션을 구축하도록 돕습니다. 그는 20년 이상의 소프트웨어 구축 경험이 있으며 그가 가장 좋아하는 Amazon 리더십 원칙은 "리더의 말이 많이 옳습니다."

spot_img

최신 인텔리전스

spot_img