Huifeng Guo, Ruiming Tang, Yunming Yey, Zhenguo Li, Xiuqiang He의 논문을 번역했습니다. 거의 다 번역했지만 개인적인 판단 하에 덜 중요한 부분은 줄였습니다. 원문이나 참고문헌은 논문을 확인해주세요.


초록

추천시스템에서 CTR(click through rate : 추천한 아이템을 유저가 누를 확률)을 최대화 하기 위해서는 유저 행동에 숨겨진 피쳐들 간의 복잡한 상호관계(feature interaction)를 학습하는 것이 중요하다. 많은 발전이 있었지만 기존의 방법은 낮은 차원(low-order) 혹은 높은 차원(high-order)의 상호관계 중 하나에만 치우쳐 학습하거나 전문가의 피쳐 엔지니어링이 필요하다. 이번 논문에서는 낮은 차원과 높은 차원의 피처 관계를 end-to-end 모델로 학습할 수 있음을 보였다. 제안한 모델 DeepFM은 Factorization Model이 추천에서 갖는 강점과 Deep Learning이 Feature학습에서 갖는 강점을 결합한 새로운 Neural Network 구조이다. 최근 구글에서 발표한 Wide & Deep Model과 비교해보면, DeepFM은 Wide 부분과 Deep 부분이 공통된 입력(shared input)을 받고 Feature Engineering이 필요하지 않다. DeepFM의 학습 효율성(efficiency)과 성능 효율성(effectiveness)이 기존의 CTR 예측 모델보다 좋은 성능을 보임을 benchmark data와 commercial data를 통해 보였다.

CTR 설명: 클릭 수를 화면 노출수로 나눈 값. (출처 : https://en.ryte.com/wiki/Click_Through_Rate)

1. Introduction

추천시스템에서 CTR 예측은 중요하다. 유저의 예상 CTR 값을 랭킹 순으로 정렬하여 아이템을 추천함으로써 클릭 횟수를 늘릴 수 있다. 온라인 광고 같은 다른 시나리오에서는 수입(revenue)의 증가 또한 중요하다. 이때 Ranking sort 기준은 CTR $\times$ bid 값으로 조정된다. 'bid'는 유저가 아이템을 클릭할 때마다 받는 보상 값이다. 어떤 경우에도 CTR을 정확히 예측하는지가 핵심이다.

CTR을 정확히 예측하기 위해서는 Implicit Feature(이전 포스팅 참고)간의 상호 작용을 학습하는 게 중요하다. 우리의 앱 마켓 연구에 의하면 사람들은 주로 식사 시간에 음식 배달 앱을 다운로드한다. 이는 앱의 Category와 시간대의 상호작용(order-2 : feature가 두 개)이 CTR 예측을 위한 신호로 쓸 수 있음을 암시한다. 두 번째 관찰은 10대 남자들이 슈팅 게임과 RPG 게임을 좋아한다는 점인데 이는 앱의 category, 사용자의 성별과 나이대의 상호작용(order-3)이 또 다른 CTR 신호임을 의미한다. 보통 유저 행동에 숨겨진 이런 상호 작용은 매우 복잡하고, 저차원 & 고차원 상호작용 전부 중요한 역할을 한다. 구글이 발표한 Wide & Deep Model 논문의 관찰에 의하면 저차원, 고차원 상호작용을 동시에 고려하는 경우가 하나씩만 고려하는 경우보다 더 좋은 성능을 나타낸다.

제일 어려운 점은 효율적으로 피쳐들 간의 상호작용을 Modeling하는 것이다. 어떤 피쳐 상호작용은 쉽게 이해할 수 있어서 앞선 예시처럼 전문가가 수작업할 수 있다. 그러나 대부분의 피쳐 상호작용은 데이터 속에 숨겨져 있고 선험적(priori)으로 알기 어려워서 머신 러닝을 통해 자동적으로 포착되어야 한다.(예를 들어 전통적인 연관 법칙(association rule)의 예시인 '기저귀와 맥주'는 전문가에 의해 발견되는 대신 data mining을 통해 발견했다.) 이해하기 쉬운 상호작용 또한 전문가가 전부 모델링하기는, 특히 피쳐의 수가 굉장히 클 때, 불가능해 보인다.

일반화된 선형 모델(FTRL)은 간단하지만 준수한 성능을 보인다. 그러나 선형 모델은 피쳐 상호작용을 학습하기는 어려워서 실제로는 피쳐 벡쳐들간의 pairwise interaction을 직접 feature로 넣어준다. 이런 방법은 높은 차원의 피쳐 상호작용이나 한 번도 등장하지 않은, 거의 등장하지 않은 data에 대해서 보편적으로 모델링하기가 어렵다. Factorization Machine(FM)[Rendle, 2010]은 pairwise 피쳐 상호작용을 피쳐의 latent vector 끼리의 내적을 통해 모델링했고 매우 괜찮을 결과를 냈다. FM모델이 높은 차원의 피쳐 상호작용을 모델링할 수 있지만 실제로는 높은 복잡도 때문에 거의 order-2 상호작용만 고려한다.

feature representation을 학습하는 강력한 접근법으로서 Deep Neural Network는 복잡한 상호작용도 배울 수 있는 가능성을 지니고 있다. 몇몇 연구는 CTR을 예측하기 위해 CNN이나 RNN으로까지 확장을 했다. 그러나 CNN 기반 모델은 인접한 피쳐를 학습하는 편향성이 있었고 RNN 기반 모델은 연속성이 있는 클릭 데이터에 더 적합하다. [Zhang et al., 2016]은 FM supported Neural Network(FNN)를 제시했다. 이 모델은 DNN을 적용하기 전 FM을 pre-train하여 이용하는데, FM의 성능에 제한을 받는다. 피쳐 상호작용은 [Qu et al., 2016]에 의해 연구되었는데 embedding layer와 fully-connected layer 사이에 product layer를 도입하는 Product-based Neural Network(PNN)을 제시했다. [Cheng et al., 2016]에 의하면 PNN과 FNN은 다른 딥러닝 모델처럼 낮은 차원의 피쳐 상호작용, CTR 예측에 필수적인, 은 거의 포착해내지 못한다. 낮은 차원, 높은 차원의 상호 작용 둘 다를 모델링하기 위해 [Cheng et al., 2016]은 linear("wide") 모델과 deep 모델을 결합한 흥미로운 혼합 네트워크 구조(Wide & Deep)를 제시했다. 이 모델에서는 두 개의 다른 inputs이 wide 부분과 deep 부분을 위해 각각 필요하다. "wide part"의 입력은 여전히 전문가의 feature engineering이 필요하다.

살펴보았듯이 기존의 모델을 낮은 차원 혹은 높은 차원의 피쳐 상호작용을 모델링하는데 치우쳐 있다. 이번 논문에서 우리는 모든 차원의 피쳐 상호 작용을 end-to-end 방식으로, feature engineering 없이 학습하는 모델을 유도할 수 있음을 보인다. 우리의 Contribution은 다음과 같이 요약된다.

  • 우리는 FM과 DNN의 구조를 결합한 새로운 신경망 모델 DeepFM(Figure 1)을 제시한다. 이 모델은 FM을 통해 낮은 차원의 피쳐 상호작용을 학습하고 DNN을 통해서는 높은 차원의 피쳐 상호작용을 학습한다. Wide & Deep 모델과는 다르게 DeepFM은 end-to-end로 feature engineering이 필요 없이 학습할 수 있다.
  • DeepFM은 Wide & Deep과는 다르게 같은 input과 embedding layer를 공유하기 때문에 효율적으로 학습할 수 있다. Wide & Deep 에서는 input vector가 직접 고안한 pairwise 피쳐 상호작용을 wide part에 포함하기 때문에 입력 vector가 굉장히 커질 수 있고 이는 복잡도를 굉장히 증가시킨다.
  • DeepFM을 benchmark data와 commercial data에 평가해본 결과 기존 모델보다 일관적으로 향상된 결과를 보였다.

Figure 1. Wide Part와 Deep Part가 같은 input을 share하고 있다.

2. Our Approach

트레이닝 데이터 셋이 n개의 (χ , y) 쌍을 갖는다고 가정하자. χ는 유저와 아이템을 묶는 m-fields(종류)로 구성되어 있고 y는 유저가 클릭을 했는지 안 했는지의 데이터가 0,1로 라벨링 된다. χ는 범주형 field(e.g. 성별, 위치)를 포함할 수도 있고 연속형 field(e.g. 나이)를 포함할 수도 있다. 각각의 범주형 field는 one-hot vector로 표현되고 각각의 연속형 field는 값 자체로 표현되거나 이산화(discretization)한 뒤에 one-hot encdoing을 하여 표현된다. 그런 다음 각각의 데이터는 ($x$,y) shape으로 바뀌는데 $x$ = [$x_{field_1}$,$x_{field_2}$, ... , $x_{field_j}$,... , $x_{field_m}$] 이고 d차원의 벡터이다. $x_{field_j}$ 는 $\chi$ 의 j번째 field를 나타낸다. 보통 x는 매우 차원이 높고 극도로 sparse하다. CTR 예측 task는 $\hat{y} = CTR \_ model(x) $ 와 같이 context가 주어졌을 때 유저가 특정 앱을 클릭할 확률을 추정하는 모델을 만드는 일이다.

2.1 DeepFM

우리는 낮은 차원과 높은 차원의 피쳐 상호작용 둘 다를 학습하는 것을 목표로 한다. Figure 1에서 보듯이 DeepFM은 같은 input을 공유하는 FM component와 deep component로 구성되어 있다. 피쳐 i에 대해서, 스칼라 값 $w_i$는 order-1 중요도 가중치로 사용되고 잠재 벡터(latent vector) $V_i$는 다른 피쳐와 상호작용 정도를 측정하는 데 사용된다. $V_i$는 order-2 상호작용을 모델링하기 위해서 FM component로 들어가는 반면 높은 차원의 피쳐 상호작용을 모델링하기 위해서 Deep Component로 들어간다. $w_i$ 와 $V_i$ 그리고 network 변수$(W^{l}, b^{l})$을 포함한 모든 변수는 아래 수식과 같이 결합된 예측 모델에서 같이 학습된다.

$\hat{y} = sigmoid(y_{FM} + y_{DNN})\label{1}\tag{1}$

FM Component

Factorization Machine 논문에서 소개한 구조와 같다. 다른 글을 참고.

Figure 2. FM Component

Deep Component

Figure 3. DNN Component

일반적인 Feed-Forward Network와 유사하다. Image나 Audio 데이터와 같이 순수하게 연속적이고 dense한 데이터 input은 CTR 예측 모델이 필요한 input과 꽤 다르다. 구체적으로 CTR 예측에 사용되는 feature input vector은 보통 굉장히 sparse하고 super high-dimensional(app stor의 경우 수십억 명의 유저가 있고 유저당 하나의 field vecotr가 이미 수십억 dimension이다.)이고 범주형과 연속형 변수가 섞여 있으며 field로(e.g. 성별, 위치, 나이) 그룹화 되어 있다. 이런 특징은 embedding layer가 input vector를 저차원의 dense한 벡터로 압축하여 첫 번째 hidden layer에 넘겨줄 것을 제시한다. 그렇지 않다면 이 네트워크는 학습하기 버거울 것이다.

Figure 4. Embdding Layer의 구조

Embedding Layer 구조에는 두 가지 흥미로운 점이 있다. 1) 다른 field의 input vector의 길이는 다를 수 있지만 embedding은 같은 크기(k)이다. (역자 예시: gender field는 보통 length가 남, 여 2인 반면 국적이나 나이 field의 길이는 더 길다. 하지만 embedding시에는 똑같이 k=5차원 벡터로 임베딩 된다.) 2) FM에서의 latent feature vector(V)가 이 네트워크의 가중치로 사용되고 input field vector를 압축하는 데 사용되고 학습되다. [Zhang et al., 2016]에서는 V가 FM에 의해 pre-trained되고 이 값을 초기값으로 사용한다. 이번 논문에서는 이런 방법을 사용하는 대신 FM을 DNN과 별개로 학습 구조에 포함한다. 이렇게 함으로써 pre-training을 할 필요가 없어지고 전체 네트워크를 end-to-end로 학습할 수 있게 된다. Embedding Layer의 output을 다음과 같이 표현하면:

$a^{(0)} = [e_1, e_2, ..., e_m]\label{3}\tag{3}$

$e_i$는 i번째 field의 임베딩을 나타내고 m은 field의 수를 나타낸다. $a^{(0)}$은 DNN에 들어가서 다음과 같이 forward process를 거친다:

$a^{(l+1)} = \sigma (W^{(l)}a^{(l)}+b^{(l)}),\label{4}\tag{4}$

$a^{(l)}$은 l번째 layer의 output이다.

FM component와 Deep component가 같은 feature embdding을 공유한다는 점이 주목할 만 한데 이 덕분에 두 가지 중요한 장점을 갖게 된다. 1) raw feature로부터 낮은 차원과 높은 차원의 피쳐 상호작용을 둘 다 학습할 수 있다. 2) Wide & Deep 모델과 다르게 input의 직접적인 feature engineering이 필요하지 않다.

2.2 다른 신경망 구조와의 관계

FNN : 앞서 언급했던 모델이다. DNN component만을 활용하고 Embedding시에 FM Pre-Trained된 값으로 initialization 한다. High-Order를 상호작용을 학습할 수는 있지만 Low-Order학습은 불가능하다.

PNN : DNN Component구조에서 Product Layer를 추가한 형태이다. Inner Product를 활용할 수도 있고 Outer Product를 활용할 수도 있고 둘 다 활용할 수도 있다. Outer Product를 활용하는 경우 근사법을 사용하기 때문에 feature 정보를 많이 잃어버리고 이 때문에 unstable해진다. Inner Product의 경우 더 reliable하지만 Product Layer 이후에 Hidden Layer의 모든 neuron에 연결되기 때문에 High Computational Complexity가 요구된다. PNN과 다르게 DeemFM은 오직 마지막 output layer(하나의 neuron)에만 연결된다. FNN과 같이 Low-Order학습은 불가능하다.

Wide & Deep : DeepFM과 다르게 Wide Part의 Input을 직접 feature engineering 해야 한다. 이 모델의 Linear Regression(LR)부분을 FM으로 바꾸면 DeepFM과 비슷하지만 DeepFM은 Feature Embedding을 Share한다는 점이 다르다. Embedding을 share하는 방식은 low-order, high-order 상호작용을 표현하는 feature representation에 영향을 미쳐 더 정교하게 만든다.

3. Experiments

3.1 Experiment Setup

Datasets

1) Criteo Dataset : 4,500만 명의 유저 클릭 기록을 포함하고 있다. 13개의 continuous feature와 26개의 categorial feature가 있다. 실험에서는 무작위로 90%는 train set으로 나머지 10%는 테스트용으로 나눈다.

2) Company* Dataset(저자가 속해 있는 Huawei 데이터를 말하는 것 같습니다) : 실제 산업에서의 CTR 예측 성능을 평가하기 위해 회사 데이터에서 실험을 해보았다. 회사의 App store에서 연속된 7일의 유저 클릭 기록을 training용으로 사용했고 다음 하루치를 test용으로 사용했다. 전체 데이터는 10억 개가량의 기록이 있다. 이 dataset에서는 app에 관련된 feature(e.g. identification, category and etc)와 user와 관련된 feature(e.g. 유저가 다운로드한 앱 등), context feature(e.g. operation time 등)이 있다.

Evaluation Metrics

실험에서 AUCLogloss를 평가 지표로 사용했다.

Model Comparison

9개의 모델을 실험에서 비교했다: LR, FM, FNN, PNN(내적 사용, 외적 사용, 내외적 둘 다 사용 3가지), Wide & Deep(Wide 부분을 LR로 사용한 모델과 FM으로 사용한 모델 두 가지), DeepFM.

3.2 Performance Evaluation

Efficiency와 Effectiveness를 나누어서 실험했다.

Efficiency Comparison

LR 대비 학습에 걸린 시간을 나타낸 그래프이다. FNN을 보면 DeepFM에 비해 오래 걸리는데(1.89+1.32) Pre-Training에서 시간을 많이 쓴다. IPNN이나 PNN의 경우 Inner Product가 Hidden Layer에 붙으면서 학습 속도가 굉장히 느려지는 걸 확인할 수 있다. Wide&Deep 모델(LR&DNN로 표시)보다는 살짝 느리지만 준수한 속도를 보인다.

Effectiveness Comparison

  • 피쳐 간의 상호작용이 전혀 표현되지 않는 LR보다 상호작용을 표현하는 다른 모델들이 성능이 더 좋다.
  • Low-order와 High-order 상호작용을 같이 학습하는 모델인 DeepFM과 Wide&Deep 모델의 성능이 더 좋다.
  • Low-order와 High-order를 학습할 때 같은 feature-embedding을 share하는 DeepFM이 Wide&Deep 모델보다 성능이 좋다.

결과적으로 Wide&Deep보다 AUC와 LogLoss측면에서 각각 0.37% 포인트, 0.42% 포인트 성능이 더 좋아졌다. 근소한 차이지만 Wide&Deep 논문에 의하면 Offline에서 0.275% 포인트 차이가 Online CTR에서는 3.9% 포인트 차이로 이어졌다. 회사 AppStore에서 일일 전환율이 수백만 달러이기 때문에 작은 비율의 상승은 년간 수 백만 달러의 추가 이익을 가져온다.

3.3 Hyper-Parameter Study

1) activation functions; 2) dropout rate; 3) number of neurons per layer 4) number of hidden layers 5) network shape에 대해 Tuning한 결과이다. (기존의 DNN 결과와 비슷해서 간략하게 서술합니다.)

1) relu가 tanh보다 좋았다. 2) 0.6 ~ 0.9 정도의 dropout이 좋았다. 3) 200~400 정도가 좋았다. 이 이상은 overfit이 일어난다. 4) 3개가 넘는 hidden layer는 overfitting을 일으킨다. 5) 3개의 hidden layer기준으로 같은 shape(neuron수가 200-200-200)이 증가하는 shape(100-200-300)이나 감소하는 shape(300-200-100)이나 diamond shape(150-300-150)보다 좋았다.

4. Related Work

생략

5. Conclusions

이번 논문에서는 기존의 CTR예측 SOTA 모델의 단점을 극복하고 더 좋은 성능을 보인 모델인 FM기반 신경망 모델 DeepFM을 제시했다. DeepFM은 Deep Component와 FM Component를 jointly 학습한다. 이런 방식은 세 가지 장점이 있다. 1) pre-training이 필요하지 않다. 2) 높은 차원과 낮은 차원의 피쳐 상호작용을 같이 학습한다. 3) Feature Engineering이 필요 없도록 feature embedding을 공유하는 전략을 사용한다. 두 개의 real-word datasets 상에서 effectiveness측면이나 efficiency 측면을 다른 SOTA 모델과 비교했다. 실험 결과는 1) DeepFM이 AUC와 Logloss 지표에서 SOTA모델을 앞질렀고 2) 제일 efficient한 모델과 비교할 만큼 성능이 좋았다.

두 가지 후속 연구 방향이 있다. 하나는 높은 차원의 피쳐 상호작용을 강화하는 방법(예를 들면 pooling layer를 도입)을 탐색해보는 것이고 다른 하나는 GPU cluster상에서 large-scale problem을 DeepFM에서 학습하는 것이다.

'RecSys' 카테고리의 다른 글

Explicit vs Implicit Feedback Datasets  (0) 2019.09.14

1. Explicit Datasets

영화 추천시스템을 만드는 상황을 생각해보겠습니다. 어떤 데이터를 사용할 수 있을까요?

가장 먼저 떠오르는 데이터는 사용자의 평점 기록 데이터입니다. 이미지 분류에 MNIST가 있다면 추천시스템에는 Movielens Data가 있습니다. ratings.csv 파일은 (userId,movieId,rating,timestamp) 형태의 데이터를 저장하고 있습니다. 유저가 본 영화에 대해서 5.0점을 만점으로 0.5점 단위로 평가한 데이터가 시간과 함께 저장되어 있습니다. Watcha는 이런 종류의 데이터를 수집하여 추천 앱을 서비스하고 있고 Neflix는 평점대신 좋아요, 싫어요 데이터를 수집하고 있습니다. 평점 기록처럼 저가 자신의 선호도를 직접(Explicit) 표현한 Data를 Explicit Data라고 합니다. 다른 종류의 Explicit Data로는 영화 리뷰, 구독, 차단 데이터 등이 있습니다.

Explicit Data를 통해서 얻을 수 있는 정보는 강력합니다. 유저의 호불호를 명백히 알 수 있기 때문입니다. 유용성이 좋은 반면 데이터를 얻기 힘들다는 단점이 있습니다. 데이터 분석을 해보면 영화를 보고 평점을 매기는 유저의 숫자는 전체 유저에 비해 적고 리뷰까지 남기는 데이터는 훨씬 적습니다. 유저가 적극적인 Action을 취해야 하는데 단순히 귀찮거나 심리적인 거부감이 있기 때문이죠. "좋아요와 구독 부탁드려요"라는 말은 유저들이 웬만해서는 '좋아요'를 눌러주지 않는다는 점을 방증하고 있는 듯합니다. 

2. Implicit Datasets

Collaborative Filtering For Implicit Feedback Datasets 논문에 따르면 2010년 이전까지는 추천시스템 분야에서 Explicit Data를 활용하는 방법에 대한 연구가 주로 이루어졌던 모양입니다. 논문에서는 Implicit라는 다른 종류의 데이터를 활용하여 추천시스템을 만드는 방법을 제시하고 있습니다. 아래부터는 이 논문에서 소개한 Implicit Datasets의 개념과 특징을 정리한 내용입니다. Model 부분에 추후에 포스팅할 예정입니다.

Implicit Data는 유저가 간접적(Implicit)으로 선호, 취향을 나타내는 데이터를 의미합니다. 예시로는 검색 기록, 방문 페이지, 구매 내역 심지어 마우스 움직임 기록이 있습니다. 이런 데이터는 일단 유저가 개인정보제공에 동의만 한다면 자동적으로 수집되기 때문에 수집의 난이도 낮고 활용할 수 있는 데이터량이 많습니다.

Implicit Datasets을 다룰 때 염두해두어야 할 몇 가지 특징이 있습니다.

  1. 부정적인 피드백이 없다(No Negative Feedback) : 유저가 어떤 영화를 본 기록이 없을 때 유저가 그 영화를 싫어해서 보지 않았는지 혹은 그저 알지 못했기 때문에 보지 않았는지 알 수 없습니다. 이런 차이점 때문에 Explicit Feedback Dataset을 다룰 때는 수집된 데이터에만 집중하고 Unobserved Data는 Missing Value 취급하여 모델을 만들어도 괜찮습니다. 유저의 불호 정보(낮은 평점, 싫어요)가 포함되어 있기 때문입니다. 하지만 Implicit Data를 모델링할 때는 수집되지 않은 데이터도 같이 모델링해야 합니다. 수집되지 않은 데이터에 (확실하지는 않아도) 불호 정보, 부정적인 정보가 담겨 있을 가능성이 크기 때문입니다.

  2. 애초에 잡음이 많다(Inherently Noisy) :  반대로 어떤 영화를 봤다고 해서 유저가 그 영화를 좋아한다고 말하기 힘듭니다. 과제 때문에 영화를 본 것일 수도 있고 영화가 마음에 안들지만 구매한 게 아쉬워서 끝까지 본 것일 수도 있기 때문입니다. 유튜브의 경우 시청시간이 중요하다는 말이 있는데 유저가 영상을 틀어놓고 잠들었을 수도 있습니다.

  3. 수치는 신뢰도를 의미한다.(The numerical value of implicit feedback indicates confidence) : Explicit Data의 경우 높은 수치는 높은 선호도를 의미합니다. 2번에서 봤듯이 Implicit Data에서는 높은 수치가 꼭 높은 선호도를 의미하는 것은 아닙니다. 인생 영화를 봤어도 시청시간은 2시간 즈음인 반면 그저 그런 드라마를 보는 경우에 10시간을 넘게 볼 수도 있습니다. 그럼에도 높은 값은 신뢰할만한 데이터임을 의미한다고 해석할 수 있습니다. 한 번 보고만 영상보다는 자주, 오래 본 영상이 유저의 선호도, 의견을 표현했을 확률이 높기 때문입니다.

  4. Implicit-feedback Recommender System의 평가는 적절한 방법을 고민해봐야 한다 : 평점 데이터를 이용하는 경우 예측값과 실제값이 얼마나 다른지를 평가하는 Mean Squared Error 방법을 사용하면 편리합니다. 하지만 시청시간, 클릭수, 조회 기록을 이용하는 경우 정답값을 주기가 어렵습니다. 따라서 implicit model의 경우 item의 availability나 반복되는 feeback 등을 고려해야 합니다. availability란 동시간에 방영되는 두 TV Show의 경우 한쪽만 볼 수 있어서 다른 프로그램을 좋아한다고 해도 Implicit Data가 쌓이지 않는 상황을 말합니다. 반복되는 Feedback은 유저가 한 번 이상 프로그램을 봤을 때 한 번 본 경우와 어떻게 다르게 평가할 것인가에 대한 고려입니다.

3. Collaborative Filtering For Implicit Feedback Datasets

다음 포스팅에서는 앞서 언급한 Implicit Datasets의 특징을 고려해서 어떻게 추천 모델을 만들고 평가할지에 대한 내용을 정리해보겠습니다. 짧게 정리하자면 Unobserved Data와 Observed Data를 구분하고 높은 Confidence Data에 높은 Loss를 의미하는 Loss Function을 정의하여 Matrix Factorization을 수행합니다. Evaluation은 Recall 지표를 사용하는 것이 타당하다고 생각하여 Expected Percentile Ranking을 사용합니다.

+ Recent posts