node2vec

1 개의 포스트

“함께 구매하면 좋은 상품” 추천 모델 고도화 | 우아한형제들 기술블로그 (새 탭에서 열림)

배달의민족은 장보기·쇼핑 서비스에서 고객의 구매 의도를 더욱 정확하게 파악하기 위해 기존의 단순 임베딩 유사도 기반 추천에서 벗어나 구매 맥락을 반영한 2단계 추천 모델로 고도화했습니다. 기존 모델의 한계였던 대체재 편향 문제와 시퀀스 정보의 부재를 해결하기 위해 그래프 기반 임베딩과 트랜스포머(Transformer) 아키텍처를 결합한 것이 핵심입니다. 이를 통해 고객이 장바구니에 담은 상품들의 순서와 관계를 학습하여, 단순 유사 상품이 아닌 실제 함께 구매할 가능성이 높은 보완재 중심의 추천 성과를 거두었습니다. ### 기존 Item2Vec 모델의 한계와 문제점 * **대체재 편향 발생**: 기존 모델은 주문 내 동시 출현 빈도를 기반으로 임베딩을 생성하여, 비슷한 구매 패턴을 가진 상품들이 가깝게 배치되었습니다. 이로 인해 우유를 담았을 때 시리얼 같은 보완재 대신 다른 브랜드의 우유가 추천되는 등 추천의 다양성이 떨어졌습니다. * **시퀀스 맥락 소실**: 상품을 장바구니에 담는 순서에는 고객의 의도가 담겨 있지만, 기존 방식은 단순히 '함께 있었다'는 정보만 활용했습니다. 예를 들어 '라면을 담고 고기를 추가한 경우'와 '고기를 담고 라면을 추가한 경우'의 차이를 구분하지 못해 정교한 추천이 어려웠습니다. * **크로스 셀링의 어려움**: 임베딩 유사도에만 의존하다 보니 동일 카테고리 내의 상품 추천에 치중하게 되었고, 장바구니 추천의 핵심 목표인 '다른 카테고리 상품 제안(Cross-selling)'을 달성하기에 한계가 있었습니다. ### Stage 1: 그래프 기반 상품 및 카테고리 임베딩 * **Node2Vec 도입**: 주문 빈도가 낮은 롱테일 상품의 데이터 희소성 문제를 해결하기 위해 Node2Vec을 활용했습니다. 이는 그래프 구조에서 Random Walk를 통해 상품 간의 구조적 관계를 효과적으로 학습하게 해줍니다. * **그래프 구조 설계**: 상품 노드와 카테고리 노드를 함께 구성했습니다. 특히 상품 간 연결(Edge)에는 단순 빈도가 아닌 '연관 규칙(Association Rule)' 기반의 가중치를 부여하여, 인기 상품에만 편중되지 않고 실제 연관성이 높은 상품들이 강하게 연결되도록 했습니다. * **콜드 스타트 방안**: 신규 상품이나 주문 이력이 적은 상품은 카테고리 노드와의 연결을 통해 초기 임베딩을 확보할 수 있도록 설계하여 시스템의 견고함을 높였습니다. ### Stage 2: Transformer 기반 시퀀스 추천 * **맥락 이해**: Stage 1에서 생성된 고품질의 임베딩을 입력값으로 사용하여, 트랜스포머 모델이 장바구니에 담긴 상품들의 순서(Sequence)를 분석합니다. * **다음 상품 예측(Next Item Prediction)**: 고객이 현재 장바구니에 담은 일련의 상품 리스트를 바탕으로, 다음에 담을 가능성이 가장 높은 상품을 예측하는 방식으로 학습을 진행했습니다. * **동적 추천 성능**: 이 과정을 통해 고객이 요리를 위해 재료를 담는 과정인지, 혹은 간식거리를 쇼핑하는 중인지 등의 실시간 맥락을 반영한 개인화된 추천이 가능해졌습니다. 단순히 "어떤 상품과 어떤 상품이 자주 팔리는가"를 넘어 "어떤 순서로 구매 결정이 이루어지는가"를 모델링하는 것이 추천 시스템 고도화의 핵심입니다. 그래프 임베딩을 통해 상품 간의 관계를 정의하고, 트랜스포머를 통해 고객의 시퀀스 맥락을 읽어내는 2단계 구조는 데이터 희소성 극복과 추천의 정확도라는 두 마리 토끼를 잡을 수 있는 실용적인 접근법이 될 수 있습니다.