본문 바로가기
TIL - 외/추천시스템

[추천시스템] 추천 시스템 개론

by chaemj97 2023. 4. 11.
728x90

추천 시스템

  • 추천 시스템이란?
    • 정보 필터링(IF) 기술의 일종, 특정 사용자가 관심을 가질 만한 정보를 추천하는 것
    • 사용자의 행동 데이터와 아이템 데이터를 분석하여 현재 사용자에게 가장 적절한 아이템을 추천하는 시스템
    • 활용 사례
      • 영화,드라마,음악 추천
      • 구인 구직 매칭 등등
  • 추천 시스템 목적
    • 사용자가 정보를 수집하고 찾는 시간을 효과적으로 감소시키는 것
    • 기존에 알지 못했지만 사용자가 관심을 가질만한 콘텐츠를 접하게 하여 선택의 폭을 넓혀주는 것
      • 개인화된 추천을 통한 만족도 극대화
  • Push and Pull(추천과 검색)
    • Push : 사용자가 관심을 가질 만한 정보를 시스템이 밀어내듯이 제공
    • Pull : 사용자의 의도에 맞는 항목을 찾고 추천하는 문제
    • 대부분의 추천 시스템은 Push와 Pull 의 중간에 위치

 

추천 시스템 평가 방법

오프라인 평가(배포 전)

  • Offline Test 데이터 분할 방법
    • 수집된 데이터를 Train, Valid, Test set 3가지로 분할하여 모델 성능 평가 시 활용
    • 상황에 맞는 적잘한 분할 전략이 필요
      1. Leave One Last
        • 사용자당 마지막 구매를 Test set으로, 마지막에서 2번째를 Valid set으로 분할
        • 장점
          • 학습 시 많은 데이터 사용
        • 단점
          • 사용자당 마지막 구매로만 평가하므로 테스트 성능이 전체적인 성능을 반영한다고 보기 어려움
          • Data Leakage :  train data 외의 정보가 모델을 만드는데 사용될 때 발생
      2. Temporal User/Global Split
        • 시간을 이용한 분할 전략
        • User
          • 사용자 별로 시간 순서에 따라 일정 비율로 데이터 분할 (Leave One Last와 유사)
            • Data leakage 문제
        • Global
          • 각 유저 간에 공유되는 시점을 고정하여 특정 시점 이후에 이뤄진 모든 상호작용을 test set으로 분할
          • 학습 및 검증에 사용할 수 있는 상호작용이 적은 문제
      3. Random Split
        • 각 사용자 별로 interaction을 시간 순서에 관계없이 random 하게 아이템을 선택하여 분할
        • Data leakage 문제
      4. User Split
        • 사용자가 겹치지 않게 사용자를 기준으로 분할
        • Cold-start 문제에 대응하는 모델 생성 가능
        • User-free 모델에만 사용 가능
        • Data leakage 문제
      5. K-Fold Cross Validation
        • Train set 내에서 k개의 Fold로 분할한 뒤, 한 Fold씩 Validation set으로 활용하여 검증
      6. Time Series Cross Validation
        • 시계열 데이터의 경우 일반적인 CV 수행 시 미래 데이터를 학습하여 과거를 예측하는 문제가 있음
        • Fold 분할 시 시간을 고려

 

  • Offline Test 평점 예측 알고리즘 평가 방법
    • 랭킹 문제
      • Precision@K
        • Top-K의 결과로 Precision을 계산
        • 추천한 K개의 아이템 가운데 실제 유저가 관심있는 아이템의 비율
      • Recall@K
        • Top-K의 결과로 Recall을 계산
        • 유저가 관심있는 전체 아이템 가운데 우리가 추천한 아이템 비율
      • Average Precision(AP@K)
        • Precision@1 ~ Precision@K 평균
          • rel(i)를 곱한 후 평균 : item i와의 relevance score을 의미
      • Mean Average Precision@K (MAP@K)
      • Relevance
        • 유저가 추천된 아이템을 얼마나 선호하는지
        • Cumulative Gain (CG)
          • rel(i)의 합
        • Discounted Cumulative Gain (DCG)
          • rel(i) / log2(i+1) 의 합
          • 분모 점점 커지므로 1,2 위 아이템을 잘 추천해야 값이 커진다.
        • Ideal DCG (IDCG)
          • rel(i)^OPT / log2(i+1) 의 합
          • rel(i)^OPT : 유저가 선호하는 순서대로
        • Normalized DCG (NDCG)
          • DCG / IDCG
      • Hit-rate
        • 전체 사용자 수 대비 적중한 사용자 수 
    • 평점 예측 문제 

  • Offline 측정 지표의 문제점
    • 앞의 Offline 측정 지표는 기본적인 평가 측정 방법이나 한계점 존재
      • 정확성 개선과 실제 시스템 성능 향상을 연관  짓기 어려움
      • 서비스 만족도를 높인다고 보기 어려움
  • 특성 평가 지표
    • Coverage : 전체 아이템 중 추천 시스템이 추천하는 아이템 비율
    • Novelty : 새로운 아이템 추천
    • Personalization : 개인화된 추천
    • Serendipity : 의외의 아이템 추천
    • Diversity : 얼마나 다양한 아이템이 추천되는지

 

온라인 버킷 테스트 (A/B Test)

  • 실시간으로 들어오는 트래픽을 대조군(A)와 실험군(B)로 나눠서 성능을 비교하는 테스트
  • 현실적인 버킷 테스트
    • 유저를 두 그룹으로 분할하여 각각 A안과 B안을 보여주고 평균 비교
    • 두 그룹의 특성이 모든 면에서 비슷해야 함
    • 그룹이 나뉘는 시점도 비슷해야 함
      • 트래픽을 반으로 나눠서 사용
728x90
반응형

댓글