4 분 소요


image

추천 서비스의 목표

페이지와 사용자의 맥락에 따라 다양하게 노출될 수 있는 이런 추천 서비스는 최종적으로 무엇을 목표로 할까요? 추천 서비스는 사용자가 편하게 상품을 탐색하도록 하고 이를 구매로 연결해 줘야 합니다. 정리해보면 다음과 같습니다.

  • 원하는 상품이 바로 보인다.
  • 많은 상품을 노출한다.
  • 많이 클릭하게 만들어서 구매로 연결된다.
  • 사이트에 다시 방문하게 한다.


image

왜 추천 서비스가 중요한가

일반적으로 사용자는 사이트에서 어떤 목적을 가지고 방문해 검색이나 카테고리 페이지를 활용합니다. 추천 서비스는 사용자가 이런 액션을 취하기 전에도 사용자가 원하는 상품을 적재 적소에 보여줄 수 있습니다. 만약 이것이 성공한다면 사용자는 좀 더 편하게 상품을 탐색할 수 있을 것입니다. 사용자의 액션과 현재 문맥을 분석하면 사용자가 뭘 원하는지 미리 파악할 수 있습니다.

  • 현재 보고 있는 상품의 정보
  • 사용자의 액션 (검색, 클릭, 구매)
  • 사용자가 랜딩한 정보

사용자의 액션을 분석하여, 사용자가 필요한 상품을 바로 보여줄 수 있으며, 사용자의 만족도를 높일 수 있습니다. 이를 CTR, 구매 전환율 지표로 확인이 가능합니다. 사용자에게 가능한 한 많은 상품을 보게 할 수 있고, 이런 것들이 모여 사용자를 재방문하게 합니다.

추천은 사이트 내부에서 진행되는 광고와 비슷합니다. 사용자를 사이트에 오게 하려면 광고를 진행하게 됩니다. 한번의 클릭이나 설치를 만드는 광고는 비용이 매우 비쌉니다. 이렇게 진입한 사용자가 한번 방문한 것으로 그치지 않아야 합니다. 될 수 있으면 많은 상품을 보여주고, 가능한 많은 상품을 클릭하게 하며, 다음에도 재 방문하게 만드는 것이 매우 중요합니다. 만약 광고의 CTR보다 사이트 내 상품들의 CTR이 낮다면 광고로 써야하는 금액은 쉽게 줄어들지 않을 것입니다. 추천이나 검색의 품질을 높여서 더욱 많은 클릭이 발생하도록 만들어야 합니다.


추천 지표로 효과를 확인하기

추천의 효과는 데이터로 확인할 수 있습니다. 추천의 목표에 제시된 항목들은 전부 지표로 확인할 수 있습니다. 이중 핵심 지표는 CTR과 구매 전환률입니다.

  • CTR (뷰 대비 클릭 비율)
  • 구매 전환률(Conversion rate): 상품 클릭 후 구매가 발생한 비율
  • 경유 거래액 비중: 전체 대비 추천으로 인한 거래액의 비중
  • 노출 Coverage Rate: 전체 상품 대비 추천 서비스가 노출하는 상품 비율
  • Page View Attribution %: 전체 상품 페이지 진입에 대한 추천의 기여율
  • Retention Rate: 사이트 재 방문율

이런 지표를 한번에 올리기는 쉽지 않습니다. 꾸준한 개선을 통해 이런 지표들을 점진적으로 올릴 수 있습니다. A/B Test를 통해 개선된 버전을 이런 지표를 통해 확인하여 교체 여부를 검토할 수 있습니다.


추천 지표를 올릴 수 있는 좋은 시도

추천 서비스의 개선은 한가지만으로 이뤄지기는 쉽지 않습니다. 단순히 추천 모델만을 변경한다고 반드시 퀄리티가 좋아지지는 않습니다. 데이터, 서비스 전반과 전체 아키텍처를 고려할 필요가 있습니다. 여러 요소가 있겠지만, 사용자 개인에게 적합하도록, feedback을 실시간으로 반영하도록 할수록 지표의 큰 향상을 기대할 수 있습니다.

추천 개인화 (Personalized Product Recommendations)

개인화란 개인 마다 다른 추천을 보여주는 것을 말합니다. 사용자마다 취향, 목적, 처해있는 상황이 전부 다릅니다. 사용자에게 각각에게 적합한 상품을 보여주는 것은 지표 향상에 크게 기여합니다.

개인화가 되려면 각 사용자의 액션이 저장 관리되어야 하고 추천에서 사용될 수 있도록 아키텍처가 구성되어야 합니다.

실시간 Feedback 반영

유저가 클릭 한 상품, 검색어 등 여러 액션이 실시간으로 처리되어 추천에 반영되면 될수록 사용자의 반응은 좋아집니다. 일반적으로 추천과 같은 빅데이터 기반 서비스는 배치로 개발되어 하루 주기로 변경되는 경우가 많습니다. 데이터를 실시간으로 처리하도록 하여 빠르게 반영하면 지표의 향상에 큰 기여를 합니다.

이를 위해서는 실시간 스트리밍 아키텍처가 구현되어 데이터를 실시간 파이트라인 및 실시간 분석하여 추천 서비스에 포함할 필요가 있습니다.


추천 시스템 아키텍처


추천 서비스의 중요 구성 요소

추천 서비스를 만드는 데 있어서 중요한 구성 요소는 다음과 같이 정리해 볼 수 있습니다. 모든 구성요소가 전부 중요하며 상호 연결되어 있습니다.

  • 확장성 있는 서비스를 위한 추천 아키텍쳐
  • 추천 모델
  • 유저 액션 데이터의 안정적인 수집
  • 서비스를 잘 반영하는 Features
  • 실시간 데이터 분석

위 요소들 중 추천 아키텍쳐에 대해 자세히 알아봅시다. 또한 추천 모델과 유저 데이터 수집에 대해서도 간략하게 정리해보겠습니다.


추천 아키텍쳐 (Recommendation System Architecture)

추천 서비스를 제공하기 위한 전반적인 아키텍처는 다음과 같습니다.


image

크게는 실시간 프로세싱과 배치 프로세싱을 통해 데이터가 가공되고, 가공된 데이터가 추천 서비스 레이어에서 클라이언트 쪽에 서비스 됩니다.

  • 배치 프로세싱: 소스 데이터로부터 피쳐 생성, 추천 모델 작업을 수행하며 최종적으로 추천을 위한 데이터를 만드는 작업을 합니다.
  • 실시간 스트리밍 프로세싱: 소스 데이터로부터 실시간으로 데이터를 스트리밍하여 처리합니다. 실시간 분석 결과를 빠르게 처리 가능한 메모리 스토리지에 저장합니다. 데이터를 오래 보관하지 않으며 가장 최근의 유저 액션이나 실시간 분석 결과를 저장하고 추천 api 서버에서 쿼리합니다.
  • 추천 데이터 서비스: 배치, 스트리밍 데이터 그리고 때로는 검색 데이터를 합쳐 최종적으로 클라이언트에 데이터를 제공합니다. 내부적으로 데이터를 합쳐서 스코어링을 하거나 유저 선호도, 카테고리 선호도 등 선호도를 계산하여 실시간 추천 모델을 제공합니다.

모든 작업을 자동화하고 퀄리티를 관리하기 위한 다음과 같은 부분이 포함됩니다.


데이터 아키텍쳐

데이터 관점의 구조로 각 모듈이 처리하는 데이터는 다음과 같습니다.


image

  • 데이터 마트: 상품 정보, 예약 정보, 회원 정보 등 메인 DB로부터 동기화된 데이터와 클라이언트로부터 수집된 로그를 잘 정리된 형태로 저장합니다.
  • 추천 모델-배치 데이터: 각 모델의 데이터를 표준 포맷으로 저장합니다. 표준 포맷을 준수한다면 어떤 방식으로 생성된 데이터라도 하나의 추천 서비스로서 제공될 수 있습니다.
  • 실시간 분석-스트리밍 데이터: 상품 클릭, 구매 등 실시간 유저 액션과 실시간 통계를 저장합니다. 유저별 히스토리 스코어링, 카테고리 선호도, 랜드마크 선호도 등을 구하는데 사용될 수 있습니다.
  • 추천 Provider: 실시간 데이터와 배치 데이터를 결합하여 섹션에 추천 데이터를 제공합니다. 실시간 스코어링, 데이터 병합, 필터링, 중복제거 등의 내부 연산 및 실시간 분석 기능을 수행합니다. MAB와 같이 실시간 AB를 통해 알고리즘을 선택하는 것도 Provider에서 수행할 수 있습니다.
  • 노출: UI에서 추천을 보여주는 페이지의 영역으로 Provider의 결과를 받아 상품정보를 매핑하여 보여줍니다. 여러 추천이 한 페이지에서 동시에 노출 될 수 있습니다.

추천 모델, Provider, 섹션과의 관계

모델, 데이터, api가 늘어나도 확장성 있는 아키텍처를 유지하려면 각 모듈들의 개념을 잘 정리하는 것이 좋습니다. 각 모듈의 관계를 다음과 같이 정의할 수 있습니다. 이와 같은 정의는 추천 메타데이터에 저장됩니다.


image

  • 페이지: 앱, 웹의 한 페이지를 의미합니다. 페이지 내에 여러 추천이 나갈 수 있습니다.
  • 위젯: UI 상에 추천이 나가는 자리, 보통은 제목과 상품 사진으로 구성된 상품 카드로 표시됩니다. 하나의 UI페이지에 여러 추천 위젯이 노출될 수 있습니다.
  • Provider: 추천 api서버에서 최종적으로 내보내는 서비스를 말합니다. 여러 섹션에 같은 provider가 제공될 수 있습니다. 하나의 추천 Provider가 여러 추천 모델을 내부 연산에 사용할 수 있습니다.
  • 모델: 내부적으로 사용하는 VT와 같은 추천 모델/알고리즘을 말합니다. 하나의 모델은 여러 버전으로 관리됩니다. 최종 데이터는 표준에 맞게 처리되어 다양한 모델을 추가, 업그레이드 할 수 있습니다.

댓글남기기