추천 시스템 프로젝트를 진행할 때는 비즈니스 능력, 데이터 사이언스 능력, 데이터 엔지니어링 능력이 필요하다. 따라서 이를 한 명이서 하기 보다는, 담당 부서가 협력하여 진행하는 경우가 많다.
기업이나 팀 상황에 따라 다를 수 있다.
먼저, '회원 수를 2배로 늘린다' 등의 비즈니스상의 목적을 명확히 한다. 이 부분은 기업의 비즈니스 지표(KPI)에 맞춰 정하는 것이 좋다. KPI의 목표와 현재의 차이를 확인한 뒤 현재 서비스의 과제를 정리하고, 적절한 조치를 검토한다.
KPI를 달성하기 위해 어떤 부분을 보완해야 할지 정의하는 방법에는 두 가지가 있다.
이러한 방법을 통해 현재 상태의 과제 정확도를 높이고, 비즈니스 목표를 달성하기 위한 각 과제의 중요도를 결정한다.
각 과제를 해결하는 방법과 그것을 실현하기 위한 비용을 검토하고, ROI(Return On Investiment, 비용 대비 효과)가 높은 것부터 실행한다. 중요도가 높고 구현 비용이 낮은 과제를 먼저 해결한다.
또한 추천시스템이 정말 도입이 필요한지 검토해본다. 많은 경우 검색 시스템이나 디자인을 변경/개선만으로도 클릭률이나 전환율(conversion rate)을 높인 경우가 많다.
마지막으로, 적절한 추천 알고리즘을 선택해야 한다. 유사도라고 할지라도 아이템에 따라 효과적인 방법이 다르므로, 사용자가 가장 원하는 유사도가 무엇인지 파악한 후 구현한다.
추천 시스템 개발에 필요한 데이터는 주로 두 가지이다.
현재 사내에 어떤 데이터가 축적되어있는지 정리하고, 그 데이터로 추천 시스템을 구축할 수 있는지 검토한다. 특히 초기 서비스 단계에서는 사용자 - 아이템 인터랙션 정보가 없는 경우가 많으므로, 아이템 정보를 사용한 시스템 구축부터 검토해야 할 때가 많다.
다음으로 데이터를 사용할 수 있는 형태로 정리한다. 정리할 양이 많으면 크라우드 소싱(crowd sourcing) 등의 방식을 활용할 수 있다. 그리고 부적절한 정보를 제거한다.
위와 같이 필요한 데이터가 적절하게 존재하는지 확인한 후 추천 시스템을 사용할 수 있도록 전처리를 해야 한다.
어떤 추천 알고리즘을 사용할지 결정한다. 이때 알고리즘 계산 시간, 필요한 데이터, 요구되는 예측 정확도 등 다양한 관점에서 비즈니스 목표에 적합한 것을 선택한다.
ML 모델은 처음에는 적은 비용으로도 일정 정확도까지 도달할 수 있다. 하지만, 이후부터는 비용을 들여도 정확도 향상 정도가 점점 낮아져, 막대한 비용이 들기도 한다. 따라서 초기에는 먼저 간단한 알고리즘부터 구현하는 것이 좋다.
추천 시스템의 학습과 튜닝을 수행하고, 과거 데이터를 사용하여 추천 시스템의 좋고 나쁨을 검증한다.
추천 정확도 검증 시에는 Recall, Precision 등의 ML 지표도 중요하지만, 실제로 어떤 아이템을 넣었을 때 어떤 아이템이 나오는지 직접 확인하고 그 결과가 납득되는지 확인해야 한다.
Recall(재현율), Precision(정밀도)에 대한 위키백과 정의는 여기를 참고한다.
검증 시, 데이터 편향(bias)에 주의한다. 이는 데이터 분포가 특정한 한 카테고리에 많이 치우쳐 있음을 의미한다. 예를 들어, 평점은 주로 상품에 호감을 가진 사람이 입력하므로 별 1~5개가 균등하게 존재하지 않고 5개가 많다는 편향이 있다.
이러한 편향들을 제거한 후 추천 시스템을 만들어 평가해야 한다.
만들어진 추천 알고리즘을 실제 시스템에 조합한다. 이때, 다음과 같은 사항들이 고민되어야 한다.
1. 추천 알고리즘의 학습
2. 예측 변경 빈도
3. 신규 아이템이나 사용자에 대한 추천 방안
4. 추천에 연관된 데이터 파이프라인 설계
추천이 시스템에 구현된 형태는 다음의 두 가지가 있다.
1. 배치(batch) 추천
2. 실시간(realtime) 추천
정해진 시점에 해당 시점의 정보를 기반으로 추천 목록을 업데이트 하여 사용자에게 제공하는 방식.
추천 목록은 (1)추천 모델 학습, (2)추천 모델에 의한 예측의 2단계 처리를 거쳐 작성된다.
사용자 수가 많은 경우, 한 사람의 추천 목록을 만드는 데 드는 시간을 판단하여 추천 리스트 작성 시간을 줄여야 한다.
사용자의 직전 행동 이력을 즉시 반영해 추천 목록을 만드는 방식이다. 이를 위해서는 데이터 동기나 실시간 연산 등 폭넓은 엔지니어링 기술이 필요하다.
추천 기능을 출시하고 그것이 실제로 효과가 있는지 검증한다. 이때, A/B 테스트를 통해 일부 사용자에게만 추천 기능을 제공해 추천했을 때와 그렇지 않은 겨우의 구입 금액이나 체류 시간을 검증한다. A/B 테스트가 어렵다면 출시 전후를 비교할 수 있지만, 시계열에 따른 트렌드 등의 요소를 고려해 평가해야 한다.
단, 추천 시스템 도입 후 매출이 발생하더라도 성공으로 간주하기는 어렵다. 추천 시스템을 경유해 매출이 증가하더라도, 전체적인 매출은 줄어들 수 있다. 추천 시스템 안에서의 이동이 증가하더라도, 검색 사용이 줄어들어 매출이 오히려 감소하는 경우도 있다.
출시 후 사용자 행동을 분석함으로써 처음 수립한 가설을 검증할 수 있다. 매출이나 클릭이 증가하지 않았다면 사용자 행동 로그 분석이나 인터뷰 등을 통해 원인을 조사한다. 이후 이를 개선하여 다시 출시하는 프로세스를 반복한다.
출처: 추천시스템 입문: 개인화된 콘텐츠 제공을 위한 추천 시스템 설계부터 UI/UX, 구현 기법, 평가까지(가자마 마사히로 등 3인, 한빛 미디어)