Julie의 Tech 블로그

추천시스템 - (4) 이커머스 추천 문제 본문

Tech/RecSys

추천시스템 - (4) 이커머스 추천 문제

Julie's tech 2022. 1. 2. 22:57
728x90

본 글은 이커머스 시장에서의 추천 시스템을 어떻게 구현하는지 개괄적으로 살펴볼 것이다.

이커머스에는 여러 종류가 있다. 쿠팡 / 11번가 / G마켓은 종합 커머스이고, 무신사는 패션 커머스에 해당한다.

하지만 이커머스의 추천은 대체로 유사하게 흘러간다. 대략적으로 틀을 잡으면 아래와 같다.

1. 홈 : 개인화 추천, 인기 상품 추천, 성별/연령 기반 추천

2. 검색 : 검색어 추천(인기 검색어 등), 검색어와 연관 상품 추천

3. 상품상세 페이지 : 주로 대체 상품 추천 (연관 상품 추천도 있음)

4. 장바구니 페이지 : 보완 상품 추천

어떤 추천을 할 것인가라는 문제를 풀기 위한 방식으로 모델을 분류해볼 수 있다.

예를 들어 모델 알고리즘으로는 대표적으로 CBF(Context-based Filtering), CF(Collarboative Filtering) 방식이 있고,

추천 결과의 output 모양에 따라 Top K만 추천하는 모델 혹은 전체 output에 대해 rating을 매기는 모델이 있다.

이러한 모델을 우리가 풀고자 하는 문제에 따라 잘 선별해야할 것이다.

하지만 모델을 선별하기에 앞서, 추천 시스템을 도입하기 위한 가장 중요한 전제조건은 모델에 학습하기 위한 충분한 데이터가 있어야한다.

첫 번째는 상품에 대한 메타 정보이다.

상품에 대한 메타 정보란, 상품코드가 아닌 상품의 가격(경쟁력), 선호 연령대, 브랜드, 카테고리, 최신성, Seasonality이다.

두 번째는 상품들에 대한 고객의 반응 정보일 것이다.

찜을 했다던지, 클릭을 해봤다던지, 장바구니에 담거나 구매하기 버튼을 누른 것이 대표적인 반응 지표로 사용될 수 있다.

이러한 데이터들은 추천시스템에서 흔히 Implicit Feedback이라고 한다.

이러한 데이터가 마련이 되었을 때, 모델을 잘 선택해서 설계하여 개발해야한다.

모델은 이커머스 플랫폼의 특성에 따라 선별이 될 것이다. 일반적으로 간단한 모델인 CF를 많이 도입한다.

이 중에서도 일반적으로 사용자수가 상품 수보다 훨씬 더 많기 때문에 User-based보다는 Item-based CF를 많이 사용한다.

User-based CF도 구현은 가능하지만, 상품 풀이 고정적이지 않고 지속적으로 변할 뿐더러 연산량이 크기 때문에 성능 이슈가 발생할 수 있다.

추천 결과를 어떻게 노출하여 고객들에게 전달할 것인지에 대해서도 고민해볼 수 있다.

가장 최선인 1개의 결과만을 노출할 수도 있고, 혹은 사전에 우리가 정하는 K개 상품만 노출할 수도 있다. 곁들여 결과에 대한 설명도 붙일 수 있다.

각 선택지에 대한 장단점은 각기 다르게 존재한다. 예를 들어 설명을 붙이게 될 경우 사용자가 결과에 대해 신뢰할 수는 있지만, 설명이 도리어 모델 결과 선택에 크게 작용하여 학습과정에 반응데이터의 의미를 흐릴 수 있다.

즉 요약하자면, 추천시스템을 구성하고 도입하기까지 아래와 같은 단계로 요약할 수 있다.

1. [추천 기획] 어떤 영역에 어떤 모델을 도입하여 어떤 문제를 풀고 싶은지 정의, 어떤 결과로 모델의 결과를 전달할 것인지 결정

2. [데이터 수집] 모델 학습에 필요한 사용자 / 상품에 대한 메타 정보를 수집

3. [모델 개발] 알고리즘을 선별하여 모델을 개발 및 배포

4. [UI/UX반영] 모델의 결과가 고객에게 잘 노출이 되었는지, 노출과 반응 데이터를 다시 수집하여 모델 학습에 사용할 수 있는지 확인

추천시스템의 구조도는 아래와 같다.

1) 상품 판매 내역과 같이 고객의 반응 데이터를 수집 + 상품 및 고객에 대한 메타 정보 수집

2) 추천 모델에 학습하기 위해 사용될 데이터로 전처리

3) 전처리 데이터를 모델에 넣어 학습한 뒤 최신 데이터로 추론

4) 고객의 최근 구매 데이터 및 최신 상품 메타 데이터(재고, 이슈여부 등)를 이용하여 추론 결과를 적절히 필터링

5) 최종 추천 결과 생성 및 고객 노출


추천 알고리즘 중 가장 간단한 Best와 연관 상품 추천 알고리즘에 대해서만 간단하게 살펴보자.

Best는 말 그대로 주어진 조건에 따라 가장 최대의 실적을 내는 상품들을 보여주면 되는데, 조건에 따라 여러 종류로 나뉠 수 있다.

- 전체 베스트, 시간에 따른 베스트, 필터 결과에 따른 베스트(카테고리, 브랜드 등)

스코어 방법에 따라서도 나뉘는데, 클릭, 구매, 유입 대비 전환율 등으로 이루어진다.

이 경우 간단하게 데이터에 쿼리하는 SQL문으로도 데이터를 추출할 수 있을 것이다. 따로 복잡한 모델을 설계하지 않아도 되기 때문이다.

다음은 연관 상품 추천이다. 연관 상품은 연관성을 어떻게 보느냐에 따라 다를 수 있다.

예를 들어 동일상품을 본 사용자를 연관성이 있다고 볼 경우 사용자 기반 연관성 모델이 될 것이고,

동일 세션 내에 본 아이템들을 연관성이 있다고 볼 경우 아이템 기반 연관성 모델이 될 것이다.

연관성 스코어를 매기는 데에는 Association Rules에서 사용하는 Support, Confidence 값이 될 수 있다. 혹은 흔히 사용하는 유사도 함수도 적용이 가능하다. (Cosine Similarity)

두 알고리즘 모두 스코어를 단순히 count하게 되면 인기 상품이나 노출이 많이 된 상품들로 결과가 쏠릴 수 있다.

이럴 경우 로그를 취하거나 최댓값을 한정하는 등 값을 조절해주게 된다. 보통 일반적으로 로그 함수를 사용하며, normalize된 스코어를 활용하여 노출 결과를 만들게 된다.


본 글은 이커머스 몰에서의 추천 시스템을 개괄적으로 살펴보았고, 각 알고리즘 별로 어떤 것들이 있는지 간단히 살펴보았다.

다음 글은 다른 주제에서 어떻게 추천 시스템을 도입하여 문제를 해결하였는지 살펴보는 글이 될 것이다.

반응형