Karl
← The 20-year story

A4 · Homeplus · 2024

Two-Tower Recommender

개인화 상품 추천 모델

Amazon Personalize 기반 추천을 자체 모델로 전환하기 위해, 사용자 특성·구매 이력·동반 구매 패턴을 학습하는 PyTorch Two-Tower 개인화·연관상품 추천 모델을 개발하고 검증했습니다.

2
User Tower · Item Tower
Personalize
관리형 서비스 → 자체 모델 검증
FastAPI
추론 API로 학습 · 서비스 분리

Architecture

구매 이력
사용자 특성
동반 구매 쌍
Polars
전처리
User Tower
Item Tower
SageMaker
Training
FastAPI
Inference
Commerce Service
학습 영역과 서비스 영역을 추론 API로 분리했습니다.

01 Problem

Amazon Personalize 기반 추천 서비스를 자체 모델로 전환할 수 있는지 검증할 필요가 있었습니다.

사용자-상품 구매 관계뿐 아니라 동반 구매 상품의 연관성까지 학습해, 개인화 추천과 교차판매(Cross-selling)용 연관상품 추천을 함께 다루고자 했습니다.

02 Role

  • 사용자 특성 및 구매 이력 기반 Feature 구성
  • 사용자-상품 관계 및 동반 구매 상품 쌍을 활용한 학습 데이터셋 구축
  • PyTorch 기반 Two-Tower 추천 모델 구현
  • Polars 기반 데이터 전처리 및 AWS SageMaker 모델 학습
  • 구매 연관성과 추천 적합성에 대한 시나리오 기반 정성 평가
  • FastAPI 기반 추론 API 설계 및 구현

03 Approach

  1. 01구매 관계와 동반 구매 패턴으로 학습 데이터 구성

    사용자 특성으로 User Feature를 만들고, 실제 구매 이력으로 사용자-상품 관계를 구성했습니다.

    같은 구매에서 함께 선택된 상품 쌍을 추출해 상품 간 동반 구매 관계를 학습 데이터에 반영했고, Polars로 전처리했습니다.

  2. 02PyTorch Two-Tower 모델

    User Tower와 Item Tower가 각각 사용자와 상품의 Embedding을 학습하고, 두 Embedding 간 유사도로 추천 후보를 산출합니다.

  3. 03학습 영역과 추론 API의 분리

    AWS SageMaker에서 학습하고, 학습된 모델을 FastAPI 기반의 추론 API에서 사용하도록 구성했습니다. 학습 영역과 기존 애플리케이션을 분리해 ML 환경이 업무 서비스에 의존하지 않게 했습니다.

  4. 04구매 시나리오 기반 품질 검증

    추천 결과를 대상으로 구매 맥락과 상품 연관성을 사람이 직접 확인하는 정성 평가를 수행해, 실제 커머스 추천 시나리오에 활용 가능한지 검증했습니다.

04 Stack

  • Python
  • PyTorch
  • Polars
  • AWS SageMaker
  • FastAPI
  • ECS
  • ECR
  • CodePipeline

05 Outcome

개인화·연관상품 추천 모델
사용자 특성과 구매 행동을 반영하는 PyTorch Two-Tower 모델 개발
구매 관계 기반 데이터셋
사용자-상품 상호작용과 동반 구매 패턴을 활용한 데이터셋 구성
추천 기능 검증
구매 시나리오 기반 Human Evaluation으로 연관성·적합성 검토
ML 개발 Pipeline
Polars 전처리와 SageMaker 학습·평가 과정 구현
서비스 연계 구조
FastAPI 기반 추론 API로 학습 환경과 업무 애플리케이션 분리