Amazon Web Services 한국 블로그
Pulselive, 개인화된 온라인 스포츠 콘텐츠로 고객 참여 확대 사례
이 게시물은 Pulselive의 Mark Wood가 작성한 게스트 게시물입니다. Pulselive는 영국에 기반을 둔 기업으로서, 스포츠 부문의 주요 브랜드의 디지털 파트너이며, 본 게시물은 AWS의 공식 입장과 다를 수 있습니다.
Pulselive는 공식 크리켓 월드컵 웹 사이트 또는 영국 프리미어 리그의 iOS 및 Android 앱을 비롯하여 스포츠 팬들이 이들 없이는 살 수 없을 정도의 경험을 만들어냅니다.
고객이 당사를 평가하는 주요 사항 중 하나는 동영상과 같은 디지털 콘텐츠에 대한 팬 참여도입니다. 하지만 최근까지 각 팬이 본 동영상은 개인화되지 않은 가장 최근에 게시된 목록을 기반으로 했습니다.
스포츠 조직은 팬이 누구이고 무엇을 원하는지를 파악하기 위해 노력하고 있습니다. 각 팬에 대해 수집할 수 있는 풍부한 디지털 행동 데이터는 이들이 얼마나 독특하고 당사 콘텐츠에 어떻게 참여하는지를 알려줍니다. 사용 가능한 데이터와 기계 학습(ML)의 증가에 따라 Pulselive는 고객에게 맞춤형 콘텐츠를 추천해 달라는 요청을 받았습니다.
이 게시물에서는 Amazon Personalize를 새로운 추천 엔진으로 플랫폼에 추가한 경험과 동영상 소비를 20% 늘린 방법을 공유합니다.
Amazon Personalize 기반 구현 사례
시작하기 전에 Pulselive는 두 가지 주요 과제가 있었습니다. 즉, 직원 중에 데이터 사이언티스트가 없었기 때문에 기계 학습 경험이 거의 없는 엔지니어가 쉽게 이해하여 측정 가능한 결과를 산출할 수 있는 솔루션을 찾아야 했습니다. Amazon SageMaker(여전히 학습 시간이 오래 걸림) 또는 Amazon Personalize와 같은 도구를 사용하여 (비용이 많이 드는) 외부 회사를 통해 지원할 것을 고려했습니다.
궁극적으로 다음과 같은 몇 가지 이유로 Amazon Personalize를 선택했습니다.
- 기술적으로나 재정적으로 진입 장벽이 낮았습니다.
- A/B 테스트를 신속하게 수행하여 추천 엔진의 가치를 입증할 수 있었습니다.
- 기존 사이트의 중단을 최소화하면서 간단한 PoC(개념 증명)를 만들 수 있었습니다.
- Amazon Personalize에서 어떤 일들이 진행되는지를 명확하게 이해하는 것보다 그 영향과 결과 개선이 더 우려되었습니다.
다른 기업과 마찬가지로, 당사도 일상 업무에 미치는 부정적인 영향을 감당할 여력이 없었지만, 솔루션이 당사 환경에 적합하다는 확신이 필요했습니다. 따라서 며칠 만에 가동하여 실행할 수 있는 PoC에서 A/B 테스트를 시작했습니다.
Amazon 시제품 제작 팀과 협력하여 첫 번째 통합을 위한 다양한 옵션을 웹 사이트를 최소한만 변경하고 A/B 테스트를 쉽게 수행할 수 있는 옵션으로 좁혔습니다. 사용자에게 동영상 목록이 표시되는 모든 위치를 조사한 후 다음에 시청할 동영상 목록의 순위를 다시 매기는 것이 개인화된 콘텐츠를 구현하는 가장 빠른 방법이라는 것을 확인했습니다. 이 프로토타입에서는 AWS Lambda 함수와 Amazon API Gateway를 사용하여 더 많은 동영상에 대한 요청을 가로채고 Amazon Personalize GetPersonalizedRanking API를 사용하여 순위를 다시 매기는 새로운 API를 제공했습니다.
성공으로 판단하기 위해 총 동영상 조회수 또는 완료율이 통계적으로 유의미하게 개선되었음을 입증해야 했습니다. 이렇게 하기 위해 여러 종목의 스포츠가 열리는 날은 바쁘게 보내고 경기가 없는 날은 휴식을 보장할 수 있도록 충분히 긴 기간 동안 테스트해야 했습니다. 다양한 사용 패턴을 테스트하여 경기가 최근에 진행되었는지 여부나 하루 중 시간대에 따라 달라지는 행동을 제거하려고 했습니다. 초기 데이터를 수집하기 위해 2주의 기간을 설정했습니다. 모든 사용자가 실험에 참여했으며 대조군 또는 테스트 그룹에 무작위로 할당되었습니다. 실험을 가능한 한 간단하게 유지하기 위해 모든 동영상을 실험에 포함했습니다. 다음 다이어그램은 솔루션의 아키텍처를 보여줍니다.
시작하기 위해 실험의 시작점으로 사용할 Amazon Personalize 솔루션을 구축해야 했습니다. Amazon Personalize에서 솔루션을 정의하고 사용자에게 동영상을 추천하는 캠페인을 생성하려면 사용자 항목 상호 작용 데이터 집합이 필요합니다. 몇 주 동안 사용한 각 동영상 보기에 대한 타임스탬프, 사용자 ID 및 동영상 ID가 포함된 CSV 파일을 생성하여 이러한 요구 사항을 충족했습니다. Amazon Personalize에 상호 작용 기록을 간단히 업로드한 후 AWS 관리 콘솔에서 권장 사항을 즉시 테스트할 수 있었습니다. 모델을 교육하기 위해 최근 30,000개의 상호 작용이 포함된 데이터 집합을 사용했습니다.
시청한 총 동영상과 동영상 완료율에 대한 지표를 비교하기 위해 Amazon DynamoDB에 모든 동영상 상호 작용을 기록하는 두 번째 API를 구축했습니다. 이 두 번째 API는 PutEvents API를 통해 새로운 상호 작용에 대해 Amazon Personalize에 알리는 문제를 해결하여 기계 학습 모델을 최신 상태로 유지하는 데 도움이 되었습니다.
실험에서 모든 동영상 조회수와 모든 사용자의 동영상 조회를 유도한 프롬프트를 추적했습니다. 비디오 프롬프트에는 직접 연결(예: 소셜 미디어에서 연결), 웹 사이트의 다른 부분에서 연결, 동영상 목록에서 연결하는 링크가 포함됩니다. 사용자가 동영상 페이지를 볼 때마다 해당 사용자가 대조군 또는 테스트 그룹에 속해 있는지 여부에 따라 현재 동영상 목록 또는 순위가 다시 매겨진 새 목록이 표시됩니다. 테스트 그룹의 전체 사용자 중 5%를 대상으로 실험을 시작했습니다. 당사의 접근 방식에서 아무런 문제가 없어서 동영상 소비가 명확하게 감소되거나 API 오류가 증가하지 않을 때 이 수치를 50%를 늘리고 데이터 수집을 시작했으며, 나머지 사용자는 대조군 역할을 했습니다.
실험을 통한 데이터 학습
2주간의 A/B 테스트를 마치고 DynamoDB에서 수집한 KPI를 가져와서 여러 KPI에서 테스트한 두 가지 변형을 비교했습니다. 이 초기 실험에서는 몇 가지 간단한 KPI를 사용했지만 다른 조직의 KPI는 다를 수 있습니다.
첫 번째 KPI는 세션당 사용자별 동영상 조회수입니다. 초기 가설에서는 동영상 목록의 순위를 다시 매기더라도 의미 있는 변화가 나타나지 않을 것으로 가정했지만, 사용자당 조회수가 20% 증가한 것을 측정되었습니다. 다음 그래프는 각 그룹의 동영상 조회수를 요약하여 보여줍니다.
총 조회수를 측정하는 이외에 사용자가 동영상을 끝까지 시청하는지 확인하고 싶었습니다. 사용자가 시청한 동영상에 대해 25% 구간마다 이벤트를 전송하여 결과를 추적했습니다. 각 동영상의 평균 완료율은 동영상이 Amazon Personalize에서 추천되었는지 원래 목록 보기에서 추천되었는지 여부에 따라 크게 변하지 않는 것으로 나타났습니다. 시청한 동영상 수와 함께 개인화된 추천 동영상 목록을 제공할 때 각 사용자에 대한 전체 시청 시간이 증가한 것으로 나타났습니다.
또한 사용자의 ‘추천 동영상’ 표시줄에서 각 동영상의 위치와 사용자가 선택한 항목을 추적했습니다. 이를 통해 개인화된 목록의 순위와 게시 순서 목록을 비교할 수 있었습니다. 두 변형 간에 큰 차이가 없었으며, 사용자가 전체 목록을 보기 위해 스크롤하는 대신 화면에 표시된 동영상을 선택할 가능성이 높다는 것을 알 수 있었습니다.
실험 결과를 분석한 이후에 Amazon Personalize를 향후 동영상 순위를 매기는 기본 방법으로 사용하도록 고객에게 추천했습니다.
배운 점
당사는 실험을 통해 자체 솔루션을 구현할 때 도움이 될 수 있는 다음과 같은 교훈을 얻었습니다.
- 사용자 항목 상호 작용에 대한 기록 데이터를 수집합니다. 약 30,000개의 상호 작용을 사용했습니다.
- 최근 기록 데이터에 중점을 둡니다. 당장에는 가능한 한 많은 기록 데이터를 얻는 것이 유리하지만 최근의 상호 작용이 이전 상호 작용보다 더 중요합니다. 상호 작용 기록에 대한 대용량 데이터 집합을 보유한 경우 오래된 상호 작용을 필터링하여 데이터 집합의 크기와 훈련 시간을 줄일 수 있습니다.
- SSO 솔루션을 사용하거나 세션 ID를 생성하여 모든 사용자에게 일관성있고 고유한 ID를 제공할 수 있는지 확인합니다.
- 사이트 또는 앱에서 기존 목록의 순위를 다시 매기거나 권장 항목 목록을 표시하여 A/B 테스트를 실행할 수 있는 지점을 찾습니다.
- Amazon Personalize를 호출하고 새 항목 목록을 가져오도록 API를 업데이트합니다.
- A/B 테스트를 배포하고 실험에서 사용자 비율을 점진적으로 늘립니다.
- 실험 결과를 이해할 수 있도록 계측하고 측정합니다.
결론 및 이후 단계
Amazon Personalize를 통해 기계 학습의 세계에 첫 발을 내딛게 되어 가슴이 벅찹니다. 훈련된 모델을 워크플로에 통합하는 전체 프로세스는 매우 간단했습니다. Amazon Personalize를 구현한 것보다 실험의 유용성을 입증하기 위해 적합한 KPI와 데이터 캡처하는 데 훨씬 더 많은 시간을 할애했습니다.
앞으로 다음과 같은 사항을 개선할 예정입니다.
- 개발 팀에게 콘텐츠 목록이 제공되는 모든 곳에서 Amazon Personalize를 사용할 수 있는 기회를 제공함으로써 워크플로 전반에 걸쳐 Amazon Personalize를 훨씬 더 자주 통합합니다.
- 추천 항목을 포함하기 위해 순위를 다시 지정하는 것 이상으로 사용 사례를 확장합니다. 그러면 각 사용자에게 더 인기가 있는 오래된 항목을 앞으로 불러올 수 있습니다.
- 모델을 얼마나 자주 재교육해야 하는지 실험합니다. 실시간으로 모델에 새로운 상호 작용을 삽입하는 것은 최신 상태로 유지하는 좋은 방법이지만, 가장 효과적인 방법은 모델을 매일 재교육하는 것입니다.
모든 고객에게 Amazon Personalize를 사용하여 모든 형태의 가장 관련 있는 콘텐츠를 추천함으로써 팬 - 참여도를 높일 수 있는 옵션을 탐색합니다.
- 추천 필터를 사용하여 각 요청에 사용할 수 있는 파라미터의 범위를 확장합니다. 곧 좋아하는 선수의 동영상을 포함할 수 있도록 필터링과 같은 추가 옵션을 타겟팅할 예정입니다.
작성자 소개
Mark Wood는 Pulselive의 제품 솔루션 담당 이사입니다. Mark는 Pulselive에서 6년 이상 근무했으며, 회사에서 근무하는 동안 기술 이사 및 소프트웨어 엔지니어 직책을 역임했습니다. Pulselive에 입사하기 전에는 Roke의 수석 엔지니어와 Querix의 개발자로 근무했습니다. Mark는 사우샘프턴 대학교에서 컴퓨터 공학 수학을 전공했습니다.