Study/AI

[AI] 추천시스템 기초

motti 2023. 4. 2. 20:56
반응형

사용자가 아이템을 찾는 방법

  • Search(검색) : 의도를 가지고 상품을 찾는 행위
    • 사용자의 의도가 담긴 keyword가 담김(ex, 노트북, 고양이 검색 등등)
    • 이는 pull이라고도 불림.
    • keyword와 관련도가 높은 아이템을 추천해줌
  • Recommendation
    • 사용자가 의도가 가진 키워드를 가지지 않더라고 아이템을 추천
      • 사용자의 흥미를 고려하여 취향에 맞는 아이템 추천

추천시스템의 필요성

  • 과거에는 상품, 컨텐츠가 제한적
  • 웹/모바일 환경은 다양한 상품, 컨텐츠를 등장하게함
    • 정보의 부족 → 풍요
    • 소수의 인기있는 아이템(20%의 인기있는 아이템이 더 소비된다) → Long tail phenomenon(80% 작은 아이템이 더 소비된다)

  • 정보를 찾는데 시간이 오래 걸림
    • 유저가 원하는 걸 어떤 키워드로 찾는지 모를 때

Long tail phenomenon의 사례

  • 유튜브 동영상 추천
    • 관련 영상
    • 조회수 급상승 영상
    • 해당 영상이 업로드 되어 있는 채널의 영상 추천(조회수가 적더라도)
  • SNS 친구추천
    • 수천만 혹은 수십억명의 유저들 가운데 내가 알만한 사람들을 추천

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

  1. 유저 관련 정보
    • 유저 프로파일링 : 추천 대상 유저에 관련된 정보를 구축하여, 개별 유저 혹은 유저 그룹별로 추천함.
    • 식별자 : 유저 ID, 디바이스ID, 브라우저, 쿠키 등등
    • 데모그래픽 정보 : 성별, 연령, 지역, 관심사
      • 직접 수집하는게 제일 좋지만 어려워지고 있음 → 추정을 통해 알아내기도 함
    • 유저 행동 정보 : 페이지 방문 기록, 아이템 평가, 구매등의 기록
  2. 아이템 관련 정보
    • 추천 아이템의 종류(Metadata)
      • 포탈 : 뉴스, 블로그, 웹툰 등 컨텐츠 추천
      • 광고/커머스 : 광고, 소재, 상품 추천
      • 미디어 : 영화, 음악, 동영상 추천
    • 아이템 프로파일링
      • 아이템ID
      • 아이템의 고유정보(컨텐츠 기반 추천시스템에서 사용)
        • 영화 : 영화 장르, 출연 배우 및 감독, 개봉년도 등등
        • 상품 : 상품 카테고리, 브랜드, 출시일, 상품 이미지 등등
        • 음악 : 아티스트, 작곡가, 장르, 음악신호 등등
  3. 유저 - 아이템 상호작용 정보
    • 유저와 아이템의 상호작용 데이터
    • Explicit Feedback(묵시적 반응)
      • 유저에게 아이템에 대한 만족도를 직접 물어본 경우
      • ex) 유저의 영화에 대한 1~5사이의 평점
    • Implicit Feedback(암시적 반응)
      • 유저가 아이템을 클릭하거나 구매한 경우, tv 시청시간 등등
      • ex) 쿠팡에서 유저가 상품을 구매하면 Implicit feedback = Y
      • 소비한 데이터이기 때문에 implicit feedback이 훨씬 많이 쌓여 이를 잘 활용하는게 중요함.


추천시스템 문제 정의

추천시스템의 목적

  • 특정 유저에게 적합한 아이템을 추천한다 or 특정 아이템을 적합한 유저에게 추천한다.
  • 유저 - 아이템 상호 작용을 평가할 score 값이 필요함.
  • 추천을 위한 score는 어떻게 구해지고 사용될까?

추천문제 : 랭킹 또는 예측

랭킹(Ranking) : 유저에게 적합한 아이템 Top K개를 추천하는 문제

  • Top K개를 선정하기 위한 기준 혹은 스코어가 필요하지만 유저가 아이템에 가지는 정확한 선호도를 구할 필요는 없음. 즉, 스코어가 정확한 선호도는 아니라는 것임.
  • 랭킹의 수치적인 절댓값은 영향이 없음
  • 평가 지표 : Precision@K , Recall@K, MAP@K, nDCG@K

예측(Prediction) : 유저가 아이템을 가질 선호도를 정확하게 예측(평점 or 클릭/ 구매확률)

  • Explicit Feedback : 철수가 아이언맨에 대한 내릴 평점 값 예측
  • Implicit Feedback : 영희가 아이폰12를 조회하거나 구매할 확률 값을 예측
  • 유저 - 아이템 행렬을 채우는 문제
  • 평가지표 : MAE, RMSE, AUC

적용사례

넷플릭스, 쿠팡, 구글 광고 등 다양함


추천시스템의 평가지표

새로 적용한 추천시스템 혹은 추천 모델의 성능 평가는 어떻게 해야하는가?

비즈니스, 서비스 관점

  • 추천시스템으로 매출,PV가 증가했는가 또는 추천 아이템으로 유저의 CTR(노출 대비 클릭정도)의 상승

품질 관점

  • 연관성 : 추천된 아이템이 유저에게 관련이 있는가?
  • 다양성 : 추천된 Top-k 아이템에 얼마나 다양한 아이템이 추천되는가?
  • 새로움 : 얼마나 새로운 아이템이 추천되고 있는가?
  • 참신함 : 유저가 기대하지 못한 뜻밖의 아이템이 추천되는가?

Offline Test

  • 새로운 추천 모델을 검증하기 위해 가장 우선적으로 수행되는 단계
    • 유저로부터 수집한 데이터를 train,valid,test로 나누어 모델의 성능을 객관적인 지표로 평가
    • offline test에서 좋은 성능을 보여야 online 서빙에 투입되지만, 실제 서비스에서는 다양한 양상을 보임(serving bias) → data로 유저에게 추천해주는 model1이 있고 그 모델에서 발생한 log를 반영한 model2가 있는데 이를 offline test에서는 확인이 불가
  • Precision@K(실제/예측)
    • 우리가 추천한 K개 아이템 가운데 실제 유저가 관심있는 아이템의 비율
  • Recall@K(예측/실제)
    • 유저가 관심있는 전체 아이템 가운데 우리가 추천한 아이템의 비율

Mean Average Precision(MAP)@K

  • AP@K
    • Precision@1 부터 Precision@K 까지의 평균값
    • Precision@K와 달리, 관련 아이템을 더 높은 순위에 추천할수록 점수가 상승함
    • 순서도 반영하게 됨

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

  • Normalized Discounted Cumulatiove Gain(NDCG)
    • 추천 시스템에 가장 많이 사용되는 지표 중 하나, 원래는 검색(Information Retrieval)에서 등장한 지표
    • Precision@K, MAP@K와 마찬가지로 Top K 리스트를 만들고 유저가 선호하는 아이템을 비교하여 값을 구함
    • MAP@K와 마찬가지로 추천의 순서에 가중치를 더 많이 두어 성능을 평가하며 1에 가까울수록 좋음
    • MAP와 달리, 연관성을 이진(binary) 값이 아닌 수치로도 사용할 수 있기 때문에 유저에게 얼마나 더 관련 있는 아이템을 상위로 노출시키는지 알 수 있음.
    • NDCG는 연관성을 0과 1 사이의 값으로 나타내는 척도이다.

  • 어떤 경우에서도 7.14보다 높을 순 없음(이상적인 값)

  • Online A/B Test실제 추천 결과를 서빙하여 성능을 평가
    • 추천 시스템 변경 전후의 성능을 비교하는 것이 아니라, 동시에 대조군(A)과 실험군(B)의 성능을 평( 대조군과 실험군의 환경은 최대한 동일해야 함 )
    • 실제 서비스를 통해 얻어지는 결과를 통해 최종 의사결정이 이루어짐
    • 대부분 현업에서 의사결정에 사용하는 최종 지표는 모델 성능이 아닌 매출, CTR 등의 비즈니스/서비스 지표

    인기도 기반 추천인기도 기반 추천이란
    • 말 그대로 가장 있기있는 아이템을 추천함
    • 척도 : 조회수, 평균 평점, 리뷰 개수, 좋아요/싫어요 수
    • 네이버 쇼핑 랭킹 순, 다음 뉴스, 댓글 추천, 레딧 hot 추천

    스코어를 만드는 방법
    • 조회수가 가장 많은 아이템을 추천(Most popular)
  • 가장 단순한 형태, 서비스 초반에 사용하는 방법
  • Offline Test에서 검증된 가설이나 모델을 이용해 실제 추천 결과를 서빙하는 단계

  • core = f(popularity , age)
  • 더욱 정교한 수식이 필요

Hacker News Formula

  • $score = \frac{pageviews -1}{(age+2^{gravity})}$
  • age = 시간(년도)
  • 시간이 지날수록 age가 점점 증가하므로 score는 작아짐
  • 시간에 따라 줄어드는 score를 조정하기 위해 gravity(=1.8)라는 상수를 사용

Reddit Formula

  • 최근에 포스팅 된 글에 더 높은 점수를 부여
  • 로그를 취한 이유 : 초반에는 높은 가치부여 하지만 갈수록 낮은 가치부여

  • 평균 평점이 가장 높은 아이템을 추천(Highly Rated)
  • E는 가장 높은 평점이지만 횟수가 5에 해당함
  • A는 평점이 좀 더 낮지만, 평가횟수가 엄청나게 높음
  • 하나만을 고려할 순 없음

Steam Rating Formula

  • #은 개수를 의미함
  • 평균평점이 0.2일때는 높게 보정, 0.8일때는 낮게 보정
  • review 개수가 아주 많을 경우 두번째 term은 0에 가까워짐

Moive Rating

1점부터 5점으로 rating을 구분하고 평균을 구함

rating개수가 너무 적으면 score를 보정해주다가 rating개수가 너무 많아지면 평균 평점에 가까워짐.

본 내용은 네이버 커넥트 재단의 교육 컨텐츠를 참고하였습니다.
 
반응형

'Study > AI' 카테고리의 다른 글

[AI] 모델 기반 협업필터링  (0) 2023.04.02
[AI] Collaborative Filltering(협업필터링)  (0) 2023.04.02
[AI] 다양한 최적화 방법  (0) 2023.03.26
[AI] Recurrent Neural Networks(RNN)  (0) 2023.03.26
[AI] Convolutional Neural Networks(CNN)  (0) 2023.03.26