Collaborative Filtering for Implicit Feedback Datasets 논문 리뷰

Myeonghyeon Ryu·2022년 10월 10일
0

논문리뷰

목록 보기
1/5

추천시스템 공부를 위한 논문 리뷰입니다. 아직 많이 부족하기 때문에 지적사항이 있으시다면 언제든 의견 남겨주세요! 반영해서 수정하겠습니다.

Collaborative Filtering for Implicit Feedback Datasets

Introduction

e-commerce의 인기가 높아짐에 따라 고객이 가장 좋아하는 제품을 쉽게 찾을 수 있도록 제공하는 것은 중요한 과제가 됐습니다.

이를 해결하기 위한 도구로 최근(2008년기준) 많은 관심을 받고 있는 것이 추천 시스템입니다.
추천 시스템은 사용자의 unique한 취향과 요구에 맞는 제품 또는 서비스를 개인에게 제공합니다. 이런 시스템을 위해선 사용자와 제품을 프로파일링하고 이들을 연관시키는 방법을 찾아야 합니다.

추천 시스템은 두 가지 다른 전략(또는 이들의 조합) content-based approach와 collaborative filtering을 사용합니다.

content-based approach은 데이터를 수집하기 위해 각 사용자 또는 제품에 대한 프로필을 수집합니다. 예를 들어 영화 프로필에는 장르, 참여 배우, 박스 오피스 인기도 등에 관한 것들이 포함되며 사용자 프로필에는 인구 통계 정보나 설문지에 대한 답변이 포함될 수 있습니다.
그러나 content-based 전략은 외부 정보를 수집해야되기 때문에 사용하기 쉽지 않습니다.

collaborative-filtering은 유사한 평가와 구매이력을 가진 사용자끼리 묶어 사용자와 item간의 연관성을 얻습니다.
CF는 프로파일링이 매우 어려운 데이터 측면을 해결할 수 있고 일반적으로 콘텐츠 기반 기술보다 정확하지만 새로운 제품을 처리할 수 없기 때문에 cold start 문제를 겪고 있습니다.


추천 시스템을 위한 가장 좋은 input은 사용자가 제품에 대해 직접 평점을 남겨주는 것입니다.
하지만 그건 항상 가능한 것이 아니기 때문에 사용자의 행동 관찰로 abundant implicit feedback을 얻어 사용자 선호도를 추론할 수 있습니다.

implicit feedback 유형에는 구매 내역, 검색 내역, 검색 패턴 또는 마우스 움직임 등이 포함됩니다.

이 분야의 대부분은 편리함 때문에 explicit feedback을 처리하는 데 중점을 두고 있지만
이는 사용자가 제품 평가를 꺼리거나 (저 포함) explicit 피드백을 수집할 수 없는 시스템의 한계를 반영할 수 있습니다.


implicit feedback에는 고유한 특성 4가지가 있습니다.

  1. negative에 대한 정보를 알 수 없다.

ex) 특정 프로그램을 시청하지 않은 사용자에 대해 그 프로그램을 싫어하는 건지 몰랐던건지 알 수가 없다.

  1. implicit data는 본질적으로 noisy하다.

ex) 사용자가 특정 시간에 특정 채널을 오래 보는 것은 좋아하는 것일 수 있지만 그냥 잠든걸수도 있다.

  1. confidence 속성을 지닌다.
    ex) explicit는 1~5점 사이의 점수로 확실히 표현할 수 있지만 implicit은 시청시간을 판단하는데 한계가 있다. 사용자가 좋아하는 영화 한 편 보는 것은 1이라는 값이지만 tv 시리즈 물은 큰 값을 갖는다.
  1. 적절한 평가지표가 필요하다.

ex) tv 시청에 대한 데이터를 수집하는 경우 두 번 이상 시청한 프로그램에 대한 평가를 어떻게 할 것인지? 같은 시간에 상영한 프로그램은 어떻게 비교할 것인지?

Previous work

Neighborhood models

neightborhood models은 크게 user-oriented method와 item-oriented method가 있습니다.
user-oriented method는 비슷한 유저의 기록을 바탕으로 예측하며 item-oriented method는 유저가 이미 평점을 내린 다른 item들과 유사도를 이용해 예측합니다.

Item-oriented method

goal) 유저 u가 item i에 얼마만큼의 평점 ruir_ui를 매길지 예측하는 것

  • user u가 rating한 item 중 item i와 가장 유사한 k개를 뽑아 k개의 유사한 item들의 평점의 weighted average로 계산

Latent factor models

Latent factor model은 SVD기반의 행렬 분해를 이용해 rating을 찾아내는 방식입니다.

  • Item Latent vector와 User Latent vector의 내적을 통해 rating을 예측.
  • MSE 형식의 Loss 사용
  • 뒤에 람다와 함께 더해주는 부분은 regularization 목적
  1. Our model

논문의 모델에서는 Latent Factor Model에서 ruir_{ui} 대신 두 가지 새로운 값을 사용하였습니다.

먼저 %%r{ui}$$ 값을 $$p{ui}$$라는 binary 값으로 재정의 해줬습니다. 거기에 더해

ruir_{ui}의 값에 비례하여 커지면서 가중치의 역할을 하는 cuic_{ui} 를 정의해주었습니다.

최종적으로 이렇게 식이 재정의 됩니다.

하지만 이 모델은 두 개의 latent vector의 내적으로 이루어 지는데 일반적인 데이터셋의 경우 두 vector의 곱은 수십억개의 값을 가질 수 있습니다.

이런 엄청난 수의 항은 SGD와 같은 방법으로 학습을 하면 최적화를 방해하게 됩니다.

본 논문에서는 이를 해결하기 위해 X를 학습할 때 Y를 상수취급하고 Y를 학습할 때 X를 상수취급하는 Alternating least squares(ALS)를 사용했습니다.


우선 item vector를 고정시키고 user vector에 대한 미분을 해보면 아래와 같은 식을 얻을 수 있습니다.

다음으로 user vector를 고정시키고 item vector에 대한 미분을 하면 다음과 같은 식을 얻을 수 있습니다.

최종적으로 논문의 알고리즘을 정리해보면 user u의 item i에 대한 preference를 다음과 같이 표현할 수 있습니다.

추가로 신뢰도(가중치)를 뜻하는 cuic_{ui}를 다르게 정의하는 방법도 있다고 합니다.

Experimental study

  1. 30만개의 셋톱박스에서 수집된 데이터를 사용하였다. item은 Tv program 17000개, TV 시청시간으로 이루어져 있다.
  1. 4주간의 시청기록을 train data로 사용하였고 바로 뒤의 한 주를 test set으로 구성하였다.
  1. 한번도 시청하지 않았거나 최근에 보지 않았던 프로그램을 추천하는 것이 의미있기 때문에 최근 주기적으로 시청하는 것들은 제거해버렸다.
  1. 테스트셋에서 ruir_{ui} 대한 thresh hold를 0.5로 잡아 30분 이하로 시청한 데이터는 0으로 바꿔버렸다.
  1. Log scaling을 적용해 반복적으로 보는 tv프로그램의 시청시간을 줄여준다.
  1. 한 채널의 프로그램이 계속 바뀔때까지 티비를 시청중인 경우 원해서 보는 것이 아닌 잠든 것일 확률이 높으니 전처리해준다. (아래 식을 사용)

평가 지표

implicit data를 사용했기 때문에 precision이 아닌 recall 기반의 지표를 사용해야 됩니다.

precision은 user가 positive하다고 예측했는데 예측에 실패한 경우를 사용해야되는데 implicit data는 Negative함을 표현할 방법이 없으므로 불가능

따라서 recall지표를 이용한 rank_bar를 고안해냈습니다.

rank_bar는 여러 개의 item에 대한 percentile_ranking이 저장되어 있으며 값이 낮아질수록 높은 추천률을 뜻합니다.

결과

  • popularity : 가장 인기있는 프로그램을 추천한 것
  • neighborhood : item-based neighborhood model
  • Factor : latent vector의 크기를 바꾸면서 학습한 본 논문의 모델

본 논문의 모델이 가장 좋은 성능을 보였으며, factor의 크기가 증가함에 따라 어느순간 성능이 정체되는 구간이 있습니다.

0개의 댓글