[논문 리뷰] Collaborative Filtering for Implicit Feedback Datasets

Hyunwoo Lee
9 min readMay 9, 2021

--

안녕하세요, 오늘은 Collaborative Filtering for Implicit Feedback Datasets 라는 논문에 대해서 리뷰해보겠습니다.

Introduction

이 논문의 제목에서 주요한 내용을 캐치할수 있는데요, 먼저 Collaborative Filtering에 대한 이해가 필요합니다. 기존의 추천 시스템은 Content based approach와 Collaborative Filtering (CF) 두가지가 주류를 이루었습니다. Content based approach는 예를 들어 영화를 추천할때 영화를 우선 장르에 따라서 분류하고 액션 영화를 좋아하는 사람에게는 액션 영화를 추천해주는 방식입니다. 하지만 이 방식은 각각의 프로파일 (장르, 주연 배우)를 구성하는 노력이 필요하고 Overspecialization , 즉 유저의 content profile을 벗어나는 추천을 하기는 어렵습니다.

반대로 Collaborative Filtering 방식은 따로 profile 구성없이 나와 비슷한 취향을 가진 사람의 영화 목록을 나에게 추천해주는 방식입니다. 하지만 이 방식도 유저-아이템 간의 초기 데이터가 부족한 경우에 추천이 어렵기 때문에 Cold Start 문제가 있습니다.

그렇다면 이 논문은 Collaborative Filtering에 대한 내용인데, 다른 점은 ? 바로 뒤에 있는 Implicit Feedback Dataset이라는 점이 다릅니다. 넷플릭스나 왓챠에서 영화 평점을 주게 되면 그 사람이 해당 영화를 어떻게 평가했는지 직접 적으로 알 수 있겠죠. 이 경우에는 Explicit Feedback입니다.

하지만 대부분의 상황에서 저를 포함한 대부분의 사람들은 평점을 매기기 보다는 그냥 시청할 뿐입니다. 그럼 저희가 얻을 수 있는 정보는 유저가 각 영화를 얼마나 시청했는지만 알 수 있죠. 그렇다면 저희가 어떤 영화를 오래 시청했다고 했을때 단순히 그 영화를 좋아하고 호감이 있다고 판단할 수 있을까요? 물론 그럴수도 있지만 아닐 수도 있습니다. 예를 들면 그냥 킬링 타임용으로 시청할 수 도 있고 요즘처럼 영화가 너무 새롭게 안나와서 그냥 참으면서(?) 볼 수도 있겠죠. 즉 , 사용자가 명시적으로 호불호를 나타내지 않았기 때문에 저희는 간접적으로만 유추가 가능한 피드백을 Implicit Feedback이라고 합니다.

논문에서 밝히는 Implicit Feedback Dataset의 특징은 아래와 같습니다.

  1. 호감에 대해서는 알 수 있지만 불호에 대해서는 알 수 가 없습니다.
  2. 위에서 말한 문제처럼, 확실한 호감을 알기가 어렵습니다.
  3. 숫자의 크기가 preference가 아닌 신뢰성에 가깝습니다. 많이 시청한 드라마라고 해서 그걸 좋아하기 보다는 오랜 기간 방영한 드라마이여서 그럴수도 있습니다.
  4. 평가 지표가 적절해야합니다. Explicit의 경우에는 예측값과 실제값을 단순히 비교해도 되지만 Implicit은 실제값을 정해주는게 중요한 포인트 입니다.

Methods

먼저 기존의 CF 방식들의 method들을 알아보고 그 다음 본 논문에서 어떤 점이 달라졌는지 알아보겠습니다.

첫번째는 Neighborhood Model입니다. 해당 방식에서는 r ui는 해당 user(u)가 item(i)에 대한 평가를 나타내고 i가 아닌 다른 아이템 j에 대해서 평가한 데이터 ruj를 모두 가져와서 평균을 내는데, 여기에 S ij을 곱해주게 됩니다. S ij는 i가 j와 얼마나 비슷한지를 나타내는 값으로 보통 피어슨 상관계수로 계산하였습니다. 즉 예측된 값 r ui는 이웃 아이템들의 가중평균입니다.

Neighborhood Models

두번째는 Latent Factor Model입니다. 해당 방식에서는 Item와 User의 상관관계는 Item latent vector와 User latent vector의 행렬 분해로 설명할 수 있다고 생각합니다. 따라서 Xu (user u에 대한 latent vector)와 Yi (item i에 대한 latent vector)를 내적하고 이 결과가 r ui가 되도록 학습하게 됩니다. 뒤에 보이는 Xu와 Yu의 곱을 람다만큼 더해주는 부분은 Regularization 목적으로 추가되었습니다.

Latent factor models

본 눈문은 앞에서 살펴본 Latent Factor Model에서 r ui를 바로 쓰지 않고 다음고 같이 전개하였다는 점이 이 논문의 핵심 부분입니다.

Loss Function 1
Loss Function 2

먼저 r ui가 0을 초과하면 1로 아니면 0으로 binary화 한 값을 P ui라고 정의하고 기존의 r ui를 대체하였습니다. 또한 C ui라는 값을 새롭게 만들어서 r ui의 값이 커짐에 따라 비례하여 이에 대한 신뢰도를 높게 가진다는 의미로 전체 loss 값에 더 가중치를 주어서 학습하였습니다.

그리고 해당 논문을 실제로 구현하게되면 X와 Y latent vector를 학습하는데 있어서 두 가지 latent vector를 학습해야하는데, 이를 SGD로 학습할수도 있지만 본 논문에서는 Alternative Least Square라는 방식을 사용합니다. 핵심은 X를 학습할때 Y를 상수 취급하고 Y를 학습할때는 X를 상수 취급하는 식으로 학습하는 것인데요, 이는 학습의 효율적인 측면과 더불어 설명가능한 점에도 강점이 있다고 밝히고 있습니다.

Y(item vector)를 고정시키고 X(user vector)에 대한 미분을 해보면 아래와 같이 정리됩니다.

Xu에 대한 미분

user u 의 item i 에 대한 preference는 Xu와Yi의 내적이므로 new Pui = Y.T (Y.T*Cu*Y + λI) ^−1 *Y.T *Cu * p(u)이며 (Y.T*Cu*Y + λI) ^−1를 Wu로 표현하면 user u 관점에서 i,j의 유사도는 Su ij = y.Ti*Wu*yj 입니다. 식을 정리해보면 다음과 같이 정리됩니다.

따라서 User u가 i를 좋아하는 정도는 Su ij와 Cuj의 곱으로 해석되고 Su ij는 아이템간의 유사도, Cuj는 유저가 해당 아이템에 대해서 얼마나 신뢰성을 보이는지에 대한 정도로 이해할 수 있습니다. 이는 Neighborhood model과 유사하게 이해할 수 있겠습니다.

Results

논문에서는 TV의 시청기록에 관한 데이터를 가지고 실험을 하였고 4주간의 학습 데이터를 사용하고 1주간의 시청기록을 테스트하였습니다. 공평한 테스트를 위해서 전처리를 몇가지 하였는데 다음과 같습니다.

  1. 각 유저마다 Test data에 있는 item이 Training에도 있으면 제거.

=> 주기적인 시청을 추천하는것은 의미가 없기 때문

2. Test data에서 0.5 시간 이하로 본 데이터는 0으로 처리.

=> 유저가 좋아한다고 판단하기에 애매하기 때문

3. 채널을 바꾸지 않고 재생되는 연속적인 program에 대한 down-weighting

=> 채널을 변경하지 않아서 재생되는 경우가 있기 때문

평가 함수도 중요한데, r ui가 정확한 타겟이라고 말하기엔 Implicit Feedback이기 때문입니다. 이를 위해서 rank_bar를 제안하였습니다. rank_bar는 여러개 item에 대한 percentile_ranking 값이 저장되어 있습니다. rank_ui가 0%이면 item i에 대해서 가장 추천된 item을 의미하고 50%이면 중간 정도로 추천된 아이템입니다. 아래는 rank_bar에 대한 수식입니다.

rank_bar

아래는 세가지 모델에 대한 rank 결과를 나타낸 표입니다.

1.Popularity : User에 관계없이 가장 인기있는 프로그램을 추천하는 모델.

2.Neighborhood: Item-based neighborhood model

3.Factor : latent vector의 크기를 다르게 하면서 학습한 본 논문의 모델들.

Factor 모델이 가장 좋은 성능을 보였으며 factor를 키울수록 성능이 증가하다가 어느 순간에 정체되는 구간이 있습니다.

정리하자면, 이 논문의 주요 내용은 다음과 같습니다.

  1. Implicit Feedback Dataset의 문제점을 해결하기 위해서 기존의 latent model에서 r_ui 대신에 P_ui와 C_ui를 도입하여서 모델의 성능을 개선.
  2. ALS를 적용하여 모델의 학습을 효율화 하는 것과 더불어 추천 결과에 대한 설명이 가능한 모델.

Reference

  1. http://yifanhu.net/PUB/cf.pdf
  2. https://walwalgabu.tistory.com/entry/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Collaborative-Filtering-for-Implicit-Feedback-Datasets-IEEE
  3. https://github.com/jowoojun/collaborative_filtering_keras

--

--

No responses yet