欲速不達

일을 급히 하고자 서두르면 도리어 이루지 못한다.

Fantastic AI, Fantastic World

DS | Data Science/RecSys | Recommendation System

[RecSys] Basic - 1

_껀이_ 2022. 10. 10. 20:14
728x90
반응형

1. 추천 시스템 : Recommender System

- 필요성

1) 과거에는 유저가 접할 수 있는 상품, 컨텐츠가 제한적 -> 적은 수의 매체

2) 웹/모바일 환경 -> 다양한 상품과 컨텐츠쉽게 접할 수 있게 만들어줌

  • 정보가 많아짐
  • Long Tail Phenomenon 발생

- 정보를 찾는 데 오히려 시간이 오래 걸림 / 유저가 어떤 키워드로 찾아야할지 모를 수 있음

: 개인화/맞춤 서비스로 발전

 

 

2. 추천 시스템에서의 정보(Information)

 

1) 유저 관련 정보 : User Information

- 유저 프로파일링 : User Profiling

: 추천대상이 되는 유저에 관련된 정보를 구축, 개별 유저 혹은 그룹별로 추천하기 위한 목적

  • 식별자 : 유저 ID, 디바이스 ID, 브라우저 쿠키
  • 데모그래픽 : 성별, 연령, 지역, 관심사
  • 유저 행동 정보 : 페이지 방문기록, 아이템 평가, 구매 등의 피드백 기록

: 유저 관련 정보는 주로 직접 수집 또는 유추를 통해 얻게 됨

 

 

2) 아이템 관련 정보 : Item Information

  • 아이템 ID : 추천서비스에서 할당한 아이템의 ID
  • 아이템 고유 정보 : Item Meta Data
    • 영화의 장르, 배우, 감독 / 상품의 카테고리, 브랜드, 출시일 / 음악 : 아티스트, 작곡가, 장르 등 아이템의 속성

 

3) 유저-아이템 상호작용 정보 : User-Item Interaction

- 상호작용 데이터 : 로그 데이터

  • 유저가 오프라인 or 온라인에서 아이템과 상호작용 할 때 로그로 남음
  • 추천시스템을 학습하는 데이터의 Feedback이 됨
  • 종류
    • Explict Feedback : 직접적인 Rating으로 인한 Feedback
    • Implict Feedback : 직접적인 Rating 없는 클릭, 구매 등의 행동에서 유추해낸 Feedback

 

 

3. 추천 시스템의 목적

  • 유저에게 아이템을 : User <- Item
  • 아이템에게 유저를 : Item <- User

추천을 하려면 상호작용을 평가할 Score가 필요하게 됨 ------- 어떻게???

 

 

4. 추천 시스템의 문제 정의

1) 랭킹 : Ranking

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

- Top K개를 선정하기 위한 Score가 필요 / 유저-아이템의 정확한 선호도를 계산할 필요는 없음

 

2) 예측 : Prediction

: 유저가 아이템을 가질 선호도를 정확하게 예측하는 문제 

- 유저-아이템 행렬 (User-Item Matrix)

 

 

5. 평가지표

: 새로 적용한 추천 시스템 또는 추천 모델의 성능 평가는??

  • 비즈니스/서비스 관점 : 매출,  PV(pageview), CTR(노출 대비 클릭 수)
  • 품질 관점 : 연관성, 다양성, 새로운 정도, 참신함

 

1) Offline Test

: 새로운 추천 모델을 검증하기 위해 가장 우선적으로 수행되는 단계

- 유의점 : 실제 서비스 상황의 다양한 양상 고려 (serving bias)

 

- 성능지표 

  1. 랭킹 문제 : Precision@K, Recal@K, MAP@K, NDCC@K, Hit Rate
  2. 예측 문제 : RMSE, MAE

다음 지표의 K는 상위 1위부터 K번째 순위까지 : 즉, 인덱스 개념

  • Precision@K : 추천한 K개 중에 유저가 관심있는 아이템의 비율
  • Recall@K : 유저가 관심있는거 전체 중에 추천한 K개에 포함되는 아이템이 있는 비율
  • AP@K(Average Precision@K)
    • AP@K는 해당 인덱스(K)까지의 Precision(Precision@i)user engagement(click, added to cart 등)인 rel(i)의 가중합의 평균으로 표현
    • 관련 아이템을 더 높은 순위에 추천할 수록 점수가 상승
    • Precision@K는 해당 K번째 아이템에서 지금까지의 맞춘 개수를 포함하여 계산하게 됨
    • K=3에서 Precision@K는 다음과 같이 변화함
      • 1번째에서 액션 : [1,0,0] -> Precision@K : [1/1,1/2,1/3] -> AP@K : (1/3)(1) = 0.33
      • 2번째에서 액션 : [0,1,0] -> Precision@K : [   0,1/2,1/3] -> AP@K : (1/3)(5/6) = 0.28
      • 3번째에서 액션 : [0,0,1] -> Precision@K : [   0,   0,1/3] -> AP@K : (1/3)(1/3) = 0.11
        • 순서가 높은걸 맞췄을때 AP@K가 높아짐

 

참고)

https://danthetech.netlify.app/DataScience/evaluation-metrics-for-recommendation-system

 

<Recsys> 추천시스템 평가 방법 Mean Average Precision(MAP) 이란?

About 이번 블로그에서는 주로 정보를 순서를 지정하여(Ranked) 반환하는 경우에 사용하는 평가방법인 을 소개하고자 한다. 은 예를들어 구글과 같은 검색엔진에서 검색결과가 검색의도와 관련도

danthetech.netlify.app

 

  • MAP@K(Mean Average precision@K) : 모든 유저에 대한 AP@K의 평균

 

 

NDCG : Normalized Discounted Cumulative Gain

1) 검색시스템에서 등장한 지표로 현재는 추천시스템에서도 많이 씀

2) Precision@K와 마찬가지로 Top K 리스트를 만들고 유저가 선호하는 아이템을 비교하여 값을 구함

3) MAP@K와 같이, 추천된 아이템의 순서가 중요 / 순서에 따라 가중치를 둠 ( 최대값 1 )

4) MAP@K와 달리, 연관성(Relevance : rel)은 이진값 or 또는 수치(ex.1~5)로 사용가능

-> 유저에게 얼마나 더 관련있는 아이템을 상위에 노출시키는지 알 수 있음

 

NDCG Formula

1) Cumulative Gain : CG

- 상위 K개의 아이템에 대해 관련도의 합 / Discount 안함

2) Discounted Cumulative Gain : DCG

- K개의 순서에 따라 Discount를 적용한 CG

3) Ideal DCG : iDCG

- 이상적인(Ideal) 추천이 일어났을때의 DCG -> 가능한 DCG 값 중에 가장 큰 값

- $rel^{opt}$는 이상적인 연관도

4) Nomalized DCG : NDCG

- 추천 결과에 따라 구해진 DCG를 IDCG로 나누어 정규화

 

 

2) Online Test

- Online A/B Test

: Offline Test에서 검증된 가설이나 모델을 이용해 실제 추천 결과를 서빙하는 단계

- 모델 변경 전후의 성능 비교가 아니라 / 동시에 대조군(A)과 실험군(B)의 성능을 평가

- A,B의 환경은 최대한 동일해야함 + traffic을 50:50으로 나눠서 A,B를 실행

- A/B Test로 실제 서비스를 진행하고 얻어지는 결과를 통해 최종 의사 결정을 하게 됨

----> 현업 대부분에서 의사결정의 최종 지표는 매출, CTR 등의 비즈니스 지표 (모델 성능이 아니라!!)

 

 

6. 인지도 기반 추천

- 인기도에 따라 추천 : 인기도의 정의는??

- 인기도의 척도 : 조회수, 평균평점, 리뷰개수, 좋아요/싫어요 수 등

 

1) Most Popular : 조회수가 가장 많은 아이템

- 예시 : 뉴스 추천 - 가장 많이 조회된 뉴스를 추천 or 좋아요가 가장 많은 게시글을 추천

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

-> 시간 변수(age)를 적용해야함

 

- Hacker News Formula

- Reddit Formula

 

2) Highly Rated : 평균 평점이 가장 높은 아이템 

- 예시 :  맛집(영화) 추천 - 가장 높은 평점을 받은 맛집(영화)을 추천

: 신뢰할 수 있는 평점?? 평가의 개수는 충분한지??

-> 평가 개수(# of ratings)에 따라 정규화할 수 있어야함 / 개수가 충분치 않게 되면 평점(ratings) 자체를 신뢰하기가 어려움

 

- Steam Rating Formula

 

 

 

이미지 출처 : 네이버커넥트 부스트캠프 AI Tech 강의자료, 구글링 등

728x90
반응형