반응형
사용자가 아이템을 찾는 방법
- Search(검색) : 의도를 가지고 상품을 찾는 행위
- 사용자의 의도가 담긴 keyword가 담김(ex, 노트북, 고양이 검색 등등)
- 이는 pull이라고도 불림.
- keyword와 관련도가 높은 아이템을 추천해줌
- Recommendation
- 사용자가 의도가 가진 키워드를 가지지 않더라고 아이템을 추천
- 사용자의 흥미를 고려하여 취향에 맞는 아이템 추천
- 사용자가 의도가 가진 키워드를 가지지 않더라고 아이템을 추천
추천시스템의 필요성
- 과거에는 상품, 컨텐츠가 제한적
- 웹/모바일 환경은 다양한 상품, 컨텐츠를 등장하게함
- 정보의 부족 → 풍요
- 소수의 인기있는 아이템(20%의 인기있는 아이템이 더 소비된다) → Long tail phenomenon(80% 작은 아이템이 더 소비된다)
- 정보를 찾는데 시간이 오래 걸림
- 유저가 원하는 걸 어떤 키워드로 찾는지 모를 때
Long tail phenomenon의 사례
- 유튜브 동영상 추천
- 관련 영상
- 조회수 급상승 영상
- 해당 영상이 업로드 되어 있는 채널의 영상 추천(조회수가 적더라도)
- SNS 친구추천
- 수천만 혹은 수십억명의 유저들 가운데 내가 알만한 사람들을 추천
추천 시스템에서 사용하는 정보
- 유저 관련 정보
- 유저 프로파일링 : 추천 대상 유저에 관련된 정보를 구축하여, 개별 유저 혹은 유저 그룹별로 추천함.
- 식별자 : 유저 ID, 디바이스ID, 브라우저, 쿠키 등등
- 데모그래픽 정보 : 성별, 연령, 지역, 관심사
- 직접 수집하는게 제일 좋지만 어려워지고 있음 → 추정을 통해 알아내기도 함
- 유저 행동 정보 : 페이지 방문 기록, 아이템 평가, 구매등의 기록
- 아이템 관련 정보
- 추천 아이템의 종류(Metadata)
- 포탈 : 뉴스, 블로그, 웹툰 등 컨텐츠 추천
- 광고/커머스 : 광고, 소재, 상품 추천
- 미디어 : 영화, 음악, 동영상 추천
- 아이템 프로파일링
- 아이템ID
- 아이템의 고유정보(컨텐츠 기반 추천시스템에서 사용)
- 영화 : 영화 장르, 출연 배우 및 감독, 개봉년도 등등
- 상품 : 상품 카테고리, 브랜드, 출시일, 상품 이미지 등등
- 음악 : 아티스트, 작곡가, 장르, 음악신호 등등
- 추천 아이템의 종류(Metadata)
- 유저 - 아이템 상호작용 정보
- 유저와 아이템의 상호작용 데이터
- 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 |