Artificial Intelligence/Recommendation System

추천 시스템 이론 (1) : 추천 시스템의 평가 지표와 인기도 기반 추천

__Vivacé__ 2023. 2. 13. 01:46

소비자들이 소비하는 방법

1. search

  • 의도가 담긴 ‘query’ 가 사용됨
  • Pull : 사용자가 의도를 가지고 item을 검색해서 가져오는 방식
  • keyword와 연관성이 높은 상품만 user에게 노출

 

2. recommend

  • 사용자의 흥미, 의도를 고려해 사용자도 모르는 본인에 취향에 맞는 item을 추천
  • 과거 : 유저가 접할 수 있는 상품, 컨텐츠가 제한적 현재 : 웹/모바일 환경이 다양한 상품, 컨텐츠 등장 -> 정보를 찾는 데 오래걸림
  • 최근에는 정보를 찾는데 시간이 오래 걸림
  • → 유저가 원하는 바를 어떤 키워드로 찾아야 하는지 모를 수 있음 : RS의 필요성

Long-Tail Recommendation 그림

  • threshold / 좋은 RS는 diversity를 추구해야 한다.
    • 오른쪽으로 이동 시 recommendation diversity 증가 / RS가 지향하는 바
    • 그러나 bad result 생성 가능성이 있음

 

  • 사례
    • 유튜브 동영상 추천
      • 조회수 급상승 → 해당 영상과 관련이 있거나, 업로드 되어 있는 채널의 영상 추천
        • SNS 친구 추천
          • 수십억 유저들 사이에서 내가 알만한 사람들을 추천

추천 시스템에서 사용하는 정보

  1. 유저 관련 정보 (성별, 나이, ...)
    • User profiling
      • 추천 대상 유저에 관련된 정보를 다양한 방법으로 구축하는 행위
      • (서비스의 다양한 영역에서 같이 응용됨)
      • identifier
        • User profiling을 통해 생성되는 가장 기본적인 정보
        • (회원가입을 통해 얻어지는 정보들, 광고 추천의 경우에는 ‘디바이스 ID’ 등을 사용)
      • Demographic information
        • 성별, 연령, 지역, 관심사 (유저로부터 직접 수집하는 것이 정확)
        • 직접 얻기 어렵기 때문에, estimation 방식으로 얻기도 함
      • User behavior information
        • 페이지 방문 기록, 아이템 평가, 구매 등의 피드백 기록 등

 

  1. 아이템 관련 정보 (item 출신 연도, category, ...)
    • 추천 아이템의 종류광고 / 커머스 : 광고 소재, 상품 추천
    • 미디어 : 영화, 음악, 동영상 추천
    • 포탈 : 뉴스, 블로그,웹툰 등 컨텐츠 추천
    • ‘추천 아이템의 종류’에 따라 사용할 수 있는 정보가 달라짐 - item의 metadata
      • 예시상품 : 상품 카테고리, 브랜드, 출시일, 상품 이미지 등
      • 음악 : 아티스트, 작곡가, 장르, 음악 신호 자체
      • 영화 : 장르, 출연 배우 및 감독, 영화 소개글, 개봉 년도 등
    • 아이템 ID 외에는 추천 아이템마다 다르기 때문에, 공통으로 아이템 ID를 사용

 

 

  • 유저 - 아이템 interaction 정보 (특정 유저 - 어떤 아이템 소비, ...)
    • 유저가 오프라인 혹은 온라인에서 아이템과 상호작용 할 때 로그로 남음
    • 추천 시스템을 학습하는 모델의 feedback data로 사용
      • Explicit Feedback
        • 유저에게 아이템에 대한 만족도를 직접 물어본 경우
        • 영화에 대한 1~5점 사이의 평점
      • Implicit Feedback
        • 유저가 아이템을 클릭하거나 구매한 경우
        • 쿠팡에서 유저가 상품을 구매 (Implicit Feedback = Y or 1로 저장)
    • Implicit Feedback이 압도적으로 많아 이것을 주로 사용

추천 시스템의 목적

특정 유저에게 적합한 아이템을 추천 / 특정 아이템에게 적합한 유저를 추천

→ 유저 - 아이템 상호 작용을 평가할 Score가 필요하다

 

 

추천을 위한 score

추천 문제는 랭킹 또는 예측

  • 랭킹(Ranking) : 유저에게 적합한 아이템 Top K개를 추천하는 문제
    • Top K개를 선정하기 위한 기준(or score)이 필요
    • 유저(X)가 아이템(Y)에 가지는 정확한 선호도를 구할 필요는 없음
      • 유저의 1~5점 평가 점수를 이용해도, 1~100으로 scale을 변경해output을 내도 무방 (어차피 상위 K개를 고를 것)
      • 평가 지표 : Precision@K, Recall@K, MAP@K, nDCG@K

 

  • 예측(Prediction) : 유저가 아이템을 가질 선호도를 정확하게 예측 (평점 or 클릭/구매 확률)
    • Explicit Feedback : 철수가 아이언맨에 대해 내릴 평점 값을 예측
    • Implicit Feedback : 영희가 아이폰12를 조회하거나 구매할 확률 값을 예측
    • 유저 - 아이템 행렬을 채우는 문제
      • 평가 지표 : MAE, RMSE, AUC 등

추천 시스템의 평가 지표

  • 비즈니스 / 서비스 관점
    • 추천 시스템 적용으로 인해 매출 or PV(Page View)의 증가
    • 추천 아이템으로 인해 유저의 CTR(클릭 수 / 노출 수)의 상승
  • 품질 관점
    • 연관성(Relevance) : 추천된 아이템이 유저에게 관련이 있는가?
      • 40대 남자에게 생리대를 추천하는 건..
    • 다양성(Diversity) : 추천된 Top-K 아이템에 얼마나 다양한 아이템에 추천되는가?
      • 최근에 노트북 검색했다고 추천되는 아이템들이 주구장창 노트북만..
    • 새로움(Novelty): 얼마나 새로운 아이템이 추천되고 있는가?
      • 서비스 방문 후 바로 refresh했을 때 똑같은 아이템이 계속 추천되면 별로다
    • 참신함(Serendipity): 유저가 기대하지 못한 뜻밖의 아이템이 추천되는가?
      • Relevance와 충돌할 수 있음

 


Model Test method

1. Offline Test

  • 새로운 추천 모델을 검증하기 위해 가장 우선적으로 수행되는 단계
  • 이 test에서 좋은 성능을 보여야 online serving에 투입되지만, case by case
    • Serving bias : online에서는 user의 log가 data로 쌓임
    • → model을 재학습해 새로운 model로 추천 (model이 바뀜)
  • 성능 지표
  • 우리가 추천한 아이템 개수: 5(=K) 추천한 아이템 중 유저가 관심있는 아이템 개수: 2 유저가 관심있는 아이템의 전체 개수: 3 Precision@5 =2/5 Recall@5 = 2/3

 

 

 

랭킹 문제 (ML 문제에서의 metric과 동일)

 

  •  Precision@K
    • 우리가 추천한 K개 아이템 가운데 실제 유저가 관심있는 아이템의 비율

 

  • Recall@K
    • 유저가 관심있는 전체 아이템 가운데 우리가 추천한 아이템의 비율

  

  • MAP@K (Mean Average Precision)
    • 모든 유저에 대한 Average Precision 값의 평균

 

  • AP@KUnlike Precision@K, 관련 아이템을 더 높은 순위에 추천하면 점수가 상승
    • Precision@1 부터 Presicion@K 까지의 평균값

 

  • Hit Rate
    • Hit / User
    • 유저마다 Top-k recommendation에서 Hit한게 존재하면 Hit += 1

 

  • NDCG@K
    • 추천 시스템에 가장 많이 사용되는 지표 중 하나
    • 원래는 검색(Information Retrieval)에서 등장한 지표
    • Top K 리스트를 만들고, 유저가 선호하는 아이템을 비교
    • 추천의 순서에 가중치를 두고 성능을 평가, 1에 가까울수록 좋음
    • Unlike MAP, 연관성을 binary가 아닌 scalar로 사용 가능
    • → 유저에게 얼마나 더 관련 있는 아이템을 상위로 노출시키는 지 알 수 있음
    • 관련 식
      • Cumulative Gain (CG) : 상위 K개 아이템에 대하여 관련도를 합한 것
      • Discounted Cumulative Gain (DCG) : 순서에 따라 Cumulative Gain을 Discount함
      • Ideal DCG (IDCG) : 이상적인 추천이 일어났을 때의 DCG값 / DCG 값중 가장 큼
      • Normalized DCG (NDCG) : 추천 결과에 따라 구해진 DCG를 IDCG로 나눈 값

 

A, B, C, D, E 는 item 종류 / 소괄호 안 숫자는 아이템이 갖고 있는 관련도를 의미

 

 

2. Online Test

  • Online A/B test
    • Offline Test에서 검증된 가설이나 모델을 이용해 실제 추천 결과를 serving하는 단계
    • RS 변경 전후의 성능 비교가 아니라, 동시에 대조군과 실험군의 성능을 평가 → (실험 환경을 최대한 동일하게 / 시간도 동일하게 두기 위함)

Online Test 그림

  • traffic을 반을 나눠 각 추천 시스템에 전달 → 얻어지는 결과로 의사결정
  • 대부분 현업에서의 의사결정은, 모델 성능이 아닌 비즈니스/서비스 지표

 


인기도 기반 추천

  • 인기도의 척도
    • 조회수, 평균 평점, 리뷰 개수, 좋아요/싫어요 수 등
    • 예시
    • 네이버 쇼핑 랭킹 순, 다음 뉴스, 댓글 추천, 레딧 Hot 추천

 

  • 인기도 기반 추천의 Score
    • 조회수가 가장 많은 아이템을 추천 (Most Popular)
    • → 뉴스 추천 등
     

   // Simple formula
   
   (upvote - downvote) - time_elasped  # 좋아요, 싫어요, 시간 오래됨

   = pageviews - time_elasped                   # 조회수, 시간 오래됨

But, 위와 같은 방식은 조회수가 높으면 1~2년이 지나도 글이 계속 Top Rank에 보임


 

1. Hacker News Formula - 뉴스 추천 서비스

뉴스의 가장 중요한 속성은 최신성

시간에 따라 줄어드는 score를 조정하기 위해 gravity(1.8)라는 상수를 사용

 

 

 

2. Reddit Formula

  • 1st term : popularity, 좋아요 수가 폭발적으로 증가하는 것에 대한 penalty로 log 사용
  • 2nd term : 글이 포스팅된 절대시간

 


 

  • 평균 평점이 가장 높은 아이템을 추천 (Highly Rated) → 맛집 추천 등

    이 방법은 신뢰할 수 있는 평점인 지, 평가의 개수가 충분한 지 검토 필요

 


1. Steam Rating Formula - steam에서 쓰는 인기도 기반 score

 

2. Steam Rating Formula → Movie Rating

  • 영화 평점은 1 ~ 5 값으로 구성 / 가중 합으로 avg_rating을 구함
  • 3.0을 빼주는 대신 모든 평점 데이터의 평균 값을 사용해도 됨