[Recommender System / Paper review] #07 Collaborative Filtering for Implicit Feedback Datasets
- 논문 링크(3690회 인용)
Summary
- 사용자가 직접적으로 아이템에 대해 매기는 explicit feedback이 아닌, implicit feedback 데이터를 이용하여 unknown preference을 예측하는 방법을 제안한다.
- implicit feedback은 explicit feedback와는 다른 특징을 가지기 때문에 이를 모델링에 잘 반영해야 한다.
- neighborhood based 방법이 아닌, latent factor based 방법을 기반으로 implicit feedback 데이터를 데이터에 통합하여 유저의 preference을 예측한다.
- implicit feedback에 기반하기 때문에, m x n개의 모든 쌍의 데이터에 대해 파라미터를 업데이트한다. 따라서 gradient descent가 아닌, alternating least squares 최적화 방법을 사용한다.
Motivation
- 넷플릭스 평점과 같은 데이터를 추천시스템 분야에서 explicit feedback이라고 부르는데, 이러한 형태의 데이터가 존재하지 않을 가능성이 크다.
- 대안으로, 유저가 컨텐츠에 접속한 횟수, 체류한 시간 등 간접적인 데이터인 implicit feedback을 사용하는 방법을 제안한다.
Approach
Implicit feedback이란?
Implicit feedback indirectly reflect opinion through observing user behavior. Types of implicit feedback include purchse history, browsing history, search patterns, or even mouse movements
유저가 아이템이나 컨텐츠에 대해 직접적으로 매긴 점수가 아닌, 간접적인 행동을 데이터로 수치화한 것이다. 예를 들어 넷플릭스에서 a라는 영화에 4.5점이라는 점수를 매긴 것은 explicit feedback이고 a라는 영화에 들어가서 시청을 몇시간 동안 했는지 등의 기록은 implicit feedback이다.
Implicit feedback의 특징
- No negative feedback: explicit feedback은 점수의 scale이 있으며 낮을 수록 부정적인 피드백을 의미한다. 그러나 implicit feedback은 컨텐츠를 시청하지 않았다고 해서 그 컨텐츠를 싫어한다고 해석하기에는 무리가 있다. 단순히 그 컨텐츠를 몰랐을 수도 있기 때문이다.
- Inherently noisy: 위와 비슷한 맥락이긴 한데, implicit feedback은 noisy하다. 시청 기록이 있다고 해서 그 컨텐츠를 좋아한다는 뜻은 아니기 때문이다. 텔레비전을 몇시간동안 틀어두기만 하는 사람이 그 컨텐츠를 좋아한다고는 말할 수 없다.
- Explicit feedback = preference, implicit feedback = confidence: a라는 컨텐츠에 많이 접속했다고 해서 유저가 a를 선호한다고 말할 수는 없다. 진짜 좋아하는 컨텐츠는 한번만 볼 수 있기 때문이다. 그러나 그 횟수가 많아질수록, 데이터에 대한 confidence을 더해준다. 한번은 우연히 들어갈 수 있으나 여러번은 그 유저의 의견을 반영한다고 해석할 수 있다.
- Difference evaluation metric: explicit feedback 모델링과는 다른 metric이 사용되어야 한다.
Notation
- 유저 $u,v$
- 아이템 $i,j$
- 유저 $u$에 의한 아이템 $i$에 대한 feedback: $r_{ui}$
- explicit feedback이면 평점, implicit feedback이면 시청시간, 접속 횟수 등
- $ p_{ui} = \begin{cases} 1 & r_{ui} > 0 \\ 0 & r_{ui} = 0 \end{cases} $: 유저 u의 아이템 i에 대한 preference
- 하지만 단순히 1,0 으로 표시하는 것이 varying confidence level을 적절히 표현할 수 있을까?
- 단순히 아이템을 몰라서 평점을 매길 수 없었을 수도 있고 연속으로 방영되는 tv 프로그램 때문에 자연스럽게 보게 되는 경우도 있다.
- 즉, 단순히 1과 0으로 표기하는 것은 사용자의 '선호 정도'를 표현하기에는 무리가 있다. 따라서 유저의 변화하는 선호를 반영하는, confidence level을 정의한다.
- $c_{ui} = 1 + \alpha r_{ui}$: $r_{ui}$가 커질수록 confidence level도 높아진다.
Model
$p_{ui}, c_{ui}$를 활용한 cost function을 아래와 같이 정의한다.
- explicit feedback을 이용하는 모델에서는 $\sum_{(u,i) \in \mathcal{K} } (r_{ui} - x^T_u y_i)^2$로 모델링한다.
- implicit feedback은 이와는 다르게 모든 데이터에 대해 최적화를 진행하는게 다른 점이다. explicit feedback은 평점이 없는 데이터는 결측치로 취급하고 최적화에 포함을 시키지 않지만 implicit feedback은 그렇지 않기 때문이다. 이러한 이유로 최적화 방법이 달라진다.
- explicit feedback을 이용하는 모델에서는 $r_{ui}$만을 사용하지만 implicit feedback을 이용하는 모델에서는 preference을 의미하는 $p_{ui}$와 confidence level을 의미하는 $c_{ui}$을 사용한다. 이는 예측 결과 향상에 도움을 준다.
Alternating-least-squares optimization process
cost function에 $m,n$개의 term이 있고, 보통 $m \times n$은 10억개정도 한다. 따라서 $y_i$을 고정한 채로, $x_u$을 최적화하고 다시 $x_u$을 고정한 채로 $y_i$을 최적화하는, alternating-least-squares optimization process을 사용한다.
먼저 closed form으로 $x_u$에 대한 analytic expression을 유도한다.
다음으로 $y_i$에 대한 analytic expression을 유도한다.
이를 통해 모델 연산 시간을 줄이는 것이 목표이다.
Results
Evaluation methodology
모델을 평가하기 위해 $rank_{ui}$을 아래와 같이 정의한다.
Percentile ranking of program i within the ordered list of all programs prepared for user u
$rank_{ui} = 0%$는 아이템 i가 유저 u에게 가장 적합한 아이템으로 추천되었다는 의미이고 100%라는 것은 가장 후순위로 추천되었다는 의미이다. 본 논문에서 사용하는 평가지표는 아래와 같이 정의된다.
Expected percentile ranking of a watching unit in the test period
$\bar{rank}$가 낮을수록 실제로 선택된 아이템이 상위 추천에 올라갔다는 뜻이므로 성능이 좋다고 해석할 수 있다. 베이스라인 값은 0.5이다.
비교 모델은 개인화된 모델이 아닌 popularized model, neighborhood model이다. latent factor의 수에 따른 결과는 아래와 같다.
논문에서 제안한 implicit feedback factor model이 다른 방법에 비해 낮은 expected percentile ranking을 보임을 알 수 있다. 또한 factor의 수가 늘어날수록 지표가 점점 낮아지고 있다.
factor가 100인 모델을 가져와서 $rank_{ui}$의 분포를 분석하여 추천의 품질을 분석해보자.
테스트 데이터에서 실제로 선택된 아이템이 상위 몇%에 속해있었는지, 그 확률을 보여주는 cumulative function이다. 논문에서 제안된 모델에서 상위 1%에 속한 추천 아이템은 실제로 약 0.27의 확률로 시청됐다. 그 외 방법은 제안된 방법보다 낮은 확률을 보인다. 중요한 것은 상위 추천 아이템이 실제로 소비됐느냐 여부인데, 이런 관점에서 제안된 방법이 우수한 성능을 보임을 확인할 수 있다.
주목할만한 점은, 테스트를 진행하기 전에 훈련 데이터에 이미 등장한 테스트 데이터는 제외했었는데 이를 포함하면 성능이 (점선) 다른 방법에 비해 월등하게 좋다는 점이다. 실험을 진행하기 전에, 이런 아이템들은 쉽게 추천될 수 있으니 제외했는데 이런 경우를 포함하면 평가지표상으로 성능이 훨씬 높게 나타남을 알 수 있다.
Conclusion
- 추천 시스템에서 explicit feedback뿐만 아니라 implicit feedback을 어떻게 활용할 것인지, 그 방향성을 제시한 논문이라고 생각된다.
- 관련 모델을 개발한 깃헙 레포: https://github.com/benfred/implicit
- 현업에서 mplicit feedback을 얼마나 사용해야할까, 궁금해지기도 했다.
- 근데 논문에서는 explicit feedback을 아예 배제한 모델을 개발한다고 했는데,, $c_{ui}$을 정의하는 부분에 $r_{ui}$가 있긴 하다. 이거를 어떻게 해석해야할지도 궁금하다.