Collaborative Filtering for Implicit Feedback Datasets 논문 리뷰

빠키·2020년 10월 4일
1

Recommendation System

목록 보기
5/5
post-thumbnail
post-custom-banner

대부분의 논문은 Explicit Feedback을 가정하고 추천 시스템 알고리즘을 소개하곤 합니다. 하지만, 실제로는 Explicit Feedback 보다는 Implicit Feedback인 경우를 더 자주 마주하게 됩니다. 그렇기 때문에, Implicit Feedback인 경우 데이터를 어떻게 다루고, 모델링을 해야할 지 Collaborative Filtering for Implicit Feedback Datasets 논문을 통해 살펴보도록 하겠습니다.

1. Introduction

E-commerce 시장이 커짐에 따라, 많은 상품 중 고객이 관심있어 할 제품을 소개하는 추천 시스템의 중요성이 커지고 있습니다.

추천 시스템은 아래와 같이 크게 다음의 두 가지 전략으로 근간이 되어있습니다.

  1. Content based approach
    : 각 유저(또는 아이템)의 특징을 통해 프로파일을 생성하여, 매칭하는 시스템
    - 예시 : 영화 프로파일 - 장르, 배우, 인기도 등...
    - 단점 : 프로파일 생성을 위한 데이터 수집 및 구성하는 과정이 필요
  2. Collaborative Filtering
    : 유저-아이템 사이의 상호 관계를 이용하여, 유사성을 기반한 매칭 시스템
    - 예시 : 유저의 아이템 구매 내역, 프로그램 시청 선호도
    - 단점 : cold start(유저-아이템의 초기 데이터 부족)

추천 시스템은 입력 데이터을 Explicit/Implicit로 구분할 수 있습니다.
(참고 : Matrix Factorization (1) - Explicit/Implicit Feedback)

  1. Explicit Feedback
    : 유저가 직접 표현한 선호도
    - 예시 : 영화 평점, 좋아요/싫어요
    - 단점 : 데이터 확보가 매우 어려움
  2. Implicit Feedback
    : 유저 행동 기반의 관측치
    - 예시 : 구매 내역, 검색 히스토리, 마우스 움직임

Explicit Feedback는 데이터 수집 과정이 어렵기 때문에, Implicit Feedback을 활용한 연구에 집중할 필요가 있습니다. Explicit Feedback에 사용되는 알고리즘을 Implicit Feedback에 착안하기 위해서는 아래의 Implicit Feedback의 특성에 대해 주의해야 합니다.

  1. No Negative Feedback : 유저 행동 기반의 관측치는 아이템에 대한 선호를 암시할 수 있지만, 비선호에 대해서는 나타내기가 어려움.
  2. Implicit feedback is inherently noisy : 유저 행동을 추적하는 것은 정확한 동기와 선호도를 추측하기는 어려움.
  3. The numerical value of implicit feedback indicates confidence. : 반복된 행동은 유저의 선호를 반영할 수 있지만, 한 번의 이벤트 행동은 다양한 이유로 인해 발생되기 때문에 implicit feedback의 수치는 preference가 아닌 confidence를 나타냄.
  4. Evaluation of implicit-feedback recommender requires
    appropriate measures. : 평가 척도에 대한 고민이 필요함 (아이템 availabilty와 반복적인 행동에 대한 고려).

2. Preliminaries

rui\Large\begin{aligned} r_{ui} \end{aligned}
  1. Implicit Feedback
    : 유저 u의 아이템 i 선호도
    → 결측치의 경우, 선호도에 대해 모르기 때문에 대부분 무시하고 알고리즘이 구현됨.
  2. Explicit Feedback
    : 유저 u의 아이템 i에 대한 행동
    → 결측치의 경우, 유저가 행동을 하지 않은 것에도 의미가 있기 때문에 주로 "0"으로 대체함.

3. Previous work

ruir_{ui}를 추정에 주로 사용되는 두 개의 방법론은 아래와 같습니다.

1. Neighborhood models

유저(또는 아이템)간의 유사도를 이용하여, 비슷한 취향의 데이터의 가중평균으로 ruir_{ui}를 추정합니다. (논문에서는 user-oriented보다는 item-oriented neighborhood model이 정확도가 높고, 예측 모델에 대한 설명이 용이하기 때문에 item-oriented 방법론이 더욱 인기가 많다고 설명합니다.) item-oriented 관점으로 ruir_{ui}는 아래와 같이 계산됩니다.

rui^=jSk(i;u)SijrujjSk(i;u)Sij\Large\begin{aligned} \hat{r_{ui}} = \frac{\sum_{j \in S^{k}(i;u)}S_{ij}r_{uj}}{\sum_{j \in S^{k}(i;u)}S_{ij}} \end{aligned}
  • sijs_{ij} : 아이템 i,j의 유사도
  • Sk(i;u)S^{k}(i;u) : 아이템 i와 유사한 아이템 k개의 유저 u의 선호도

Explicit Feedback의 경우, 유저와 아이템의 bias를 보정하여 알고리즘을 향상시킬 수 있지만, Implicit Feedback에는 적용하기가 어렵습니다. 그 이유는, Explicit Feedback과 같은 평점은 모두 같은 스케일(범위)를 구성되어 있지마, Implicit Feedback과 같은 빈도는 스케일이 모두 다르며, 유사도를 계산하는 것도 명백하지 않습니다.

2. Latent factor models

Latent factor model은 관측된 선호도에 대한 latent feature를 찾는 목적에서 Collaborative Filtering 대안으로 사용됩니다.

minx,yr(u,i)is known(ruixuyi)2+λ(xi2+yu2)\large\begin{aligned} \min_{x^*, y^*}\sum_{r_{(u, i)} \text{is known}}(r_{ui} - x_{u}^{\intercal}y_{i})^2 + \lambda(\|x_{i}\|^2 + \|y_{u}\|^2) \end{aligned}
  • xuRfx_{u} \in \mathbb{R}^f : user-factor vector
  • yiRfy_{i} \in \mathbb{R}^f : item-factor vector
  • rui^=xuyi\hat{r_{ui}} = x_{u}^{\intercal}y_{i} : 유저, 아이템 latent feature vector의 내적으로 선호도를 예측
  • λ(xi2+yu2)\lambda(\|x_{i}\|^2 + \|y_{u}\|^2) : 과적합을 위한 regularized term

4. Our Model

본 논문은 Implicit Feedback에 적용할 수 있는 Latent factor model을 제안합니다.
가장 먼저, 유저 u가 아이템 i에 대한 선호도(preference)를 나타내는 binary variable puip_{ui}를 정의합니다.

pui={1,rui>00,rui=0\Large \begin{aligned} p_{ui} = \begin{cases} 1, & r_{ui} > 0 \\ 0, & r_{ui} = 0 \end{cases} \end{aligned}

즉, 유저 u가 아이템 i에 대해 행동을 했으면 1, 아니면 0이 됩니다. 그러나, preference puip_{ui}만으로 행동을 한 관측치에 대해 설명이 부족하기 때문에 confidence cuic_{ui}가 필요합니다. 예를 들어, 아이템에 대한 존재를 모르거나 구입할 수 있는 여력이 부족하여 어떠한 행동을 못했을 수도 있으며, 선호하지는 않지만 다른 이유로 제품을 구입하는 행동을 했었을 수도 있습니다. 하지만, 반복적인 행동은 확실히 선호한다는 증거가 될 수 있습니다. 그렇기 때문에, ruir_{ui}가 커질수록 강한 선호의 지표로 증가함수인 confidence cuic_{ui}에 대해 아래와 같이 정의할 수 있습니다.

cui=1+αrui\Large\begin{aligned} c_{ui} = 1 + \alpha r_{ui} \end{aligned}

α\alpha에 따라, ruir_{ui}에 대한 변동을 통제합니다. 논문에서는 α=40\alpha = 40으로 정하였으며, confidence cuic_{ui}는 고정된 수치로 계산되는 값이기 때문에, 최적화할 parameter가 아닙니다.

preference puip_{ui}와 confidence cuic_{ui}를 반영하여 최적의 user/item latent factor를 찾기 위해, loss function을 아래와 같이 정의합니다.

minx,yu,icui(puixuyi)2+λ(xi2+yu2)\large\begin{aligned} \min_{x^*, y^*}\sum_{u, i}c_{ui}(p_{ui} - x_{u}^{\intercal}y_{i})^2 + \lambda(\|x_{i}\|^2 + \|y_{u}\|^2) \end{aligned}

위의 loss function는 SGD(Stochastic Gradient Descent) 또는 ALS(Alternating Least Squares)를 통해 최적화할 수 있습니다.

profile
하고 싶은 것이 많기에, 앞으로 할 수 있는 일들이 더 많은 Data Scientist
post-custom-banner

2개의 댓글

comment-user-thumbnail
2021년 6월 17일

"즉, 유저 u가 아이템 i에 대해 행동을 했으면 1, 아니면 0이 됩니다. " 설명과 공식이 반대로 적혀 있는 거 같습니다 ^^

1개의 답글