추천 시스템 아키텍처

추천 시스템 아키텍처는 사용자 행동, 아이템 특성, 또는 둘의 조합을 활용하여 개인화된 제안을 제공하는 기계학습 시스템의 설계 패턴이다.

설명

추천 시스템(Recommendation System)은 Netflix, Amazon, Spotify 같은 플랫폼의 핵심 기술이다. 세 가지 주요 아키텍처 패턴이 있으며, 각각 장단점과 활용 시나리오가 다르다.

1. Collaborative Filtering (협업 필터링)

원리: 사용자의 과거 선택이 유사한 사용자는 미래에도 유사한 선택을 할 것이라는 가정

두 가지 접근:

  • User-based: “당신과 비슷한 취향의 사용자가 좋아한 아이템”을 추천
  • Item-based: “당신이 좋아한 아이템과 유사한 아이템” 추천

장점:

  • 아이템의 특성을 알 필요 없음
  • 새로운 도메인에 빠르게 적용 가능

단점:

  • Cold Start Problem: 신규 사용자/아이템에 데이터 부족
  • 확장성: 사용자×아이템 매트릭스가 매우 커짐
  • Sparsity: 평가 데이터가 매우 희소(sparse)

2. Content-Based Filtering (콘텐츠 기반 필터링)

원리: 아이템의 특성(장르, 태그, 설명)을 분석하여, 사용자가 과거 선호한 특성의 아이템을 추천

구조:

  1. 아이템의 특성 벡터 생성 (features: 장르, 배우, 감독, 길이 등)
  2. 사용자 프로필 구성 (그들이 선호한 특성들의 가중합)
  3. 유사도 계산 및 추천

장점:

  • Cold Start Problem 해결 용이 (신규 아이템도 특성만 있으면 추천 가능)
  • 설명 가능한 추천 (“이 영화는 당신이 선호한 장르입니다”)

단점:

  • Limited Diversity: 사용자 취향과 유사한 아이템만 추천 → 새로운 발견 부족
  • Feature Engineering: 아이템 특성을 수작업으로 정의해야 함

3. Hybrid Systems (하이브리드)

원리: Collaborative Filtering + Content-Based를 결합하여 각각의 약점 보완

구조:

  • 인기 아이템: Collaborative Filtering (신뢰성 높음)
  • 뉘앙스 아이템: Content-Based Filtering (특성 기반)
  • 새 사용자: Content-Based (데이터 충분할 때까지)

장점:

  • Cold Start Problem 대부분 해결
  • 다양한 추천 (novelty 증가)
  • 정확성 + 확장성 동시 달성

최적 구성:

Collaborative Filtering (top 80% 인기도) 
    +
Content-Based Filtering (long-tail 아이템, 신규 사용자)
    ↓
Union/Ensemble → 최종 순위

배경 / 역사

Collaborative Filtering은 Amazon의 1990년대 특허 (item-based CF)로부터 시작되었다. 2010년대 Netflix Prize 이후 Deep Learning 기반 방법들이 등장했으며, 2020년대에는 대규모 데이터와 GPU의 등장으로 Neural CF, Graph Neural Networks 등이 주류가 되었다.

실전 적용

  • recommendation-algorithms — 각 알고리즘의 구현 및 비용
  • DAP 맥락: 상품추천 모델 (Python + Airflow) 운영 시 이 세 패턴 중 선택

구현 체크리스트

  • 문제 정의: 어떤 종류의 추천인가? (상품/콘텐츠/사람)
  • 데이터 수집: 사용자 행동, 아이템 특성, 메타데이터 통합
  • 타입 선택: Cold Start 빈도, 도메인 특성, 운영 비용 고려
  • 알고리즘 선택: K-NN / Matrix Factorization / Deep Learning / Association Rules
  • 평가 지표 수립: Precision, Recall, RMSE, Hit Rate, NDCG
  • A/B 테스트: 온라인 학습 전 실제 사용자 반응 측정
  • 온라인 학습: 지속적 갱신, Diversity 유지, Cold Start 사용자 처리

관련 개념

소스