Spotify 의 협업 필터링 (Collaborative Filtering) 구현

Source

  • Evernote/Article Scraps/Collaborative Filtering at Spotify.md

Summary

이 문서는 Spotify 의 음악 추천 시스템에서 협업 필터링을 적용하는 방식을 설명하는 프레젠테이션 초안입니다. 핵심 내용은 다음과 같습니다:

  1. 기본 개념: 사용자-아이템 상호작용 데이터를 기반으로 유사한 항목을 찾는 협업 필터링의 원리를 설명합니다.
  2. 데이터 처리: 시간 정보를 제거하고 상호작용 횟수만 집계하여 대규모 행렬을 구성합니다.
  3. 알고리즘 접근:
    • 초기에는 피어슨 상관계수 등 전통적인 유사도 계산을 언급하지만 병렬화 어려움을 지적합니다.
    • **행렬 분해 (Matrix Factorization)**를 주요 해결책으로 제시합니다. 특히 PLSA(Probabilistic Latent Semantic Analysis) 및 Hu, Koren, Volinsky(2008) 의 암묵적 피드백 기반 협업 필터링 알고리즘을 참조합니다.
    • 잠재 벡터 (Latent Vectors) 를 학습하여 사용자-아이템 점수를 내적 (Dot Product) 으로, 아이템 간 유사도를 코사인 유사도로 빠르게 계산합니다.
  4. 실무 적용: Artist Radio 등 다양한 도메인에 적용하며, 스킵/추천 데이터 기반의 앙상블 모델 최적화와 A/B 테스트의 중요성을 강조합니다.

Key Points

  • Spotify 는 협업 필터링을 통해 사용자-아이템 상호작용 행렬을 분석하여 추천을 생성합니다.
  • 대규모 데이터 처리를 위해 행렬 분해 (Matrix Factorization) 기법을 사용합니다.
  • PLSA 및 암묵적 피드백 (Implicit Feedback) 기반 알고리즘을 활용하여 잠재 벡터를 학습합니다.
  • 학습된 벡터를 통해 사용자-아이템 점수 (내적) 와 아이템 간 유사도 (코사인) 를 효율적으로 계산합니다.
  • 추천 모델의 성능 개선을 위해 A/B 테스트와 실제 사용자 피드백 (스킵, 추천 등) 을 반영합니다.