[논문리뷰] ITEM2VEC: Neural Item Embedding for Collaborative Filtering

 

'recommendation'

ITEM2VEC: Neural Item Embedding for Collaborative Filtering

ABSTRACT

기존의 CF 알고리즘들은 아이템간의 유사성을 만들어내기 위해, 아이템들 간의 관계를 분석하는 데에 기초를 두고 있었다. Skip-gram with Negative Sampling(SGNS), 더욱 친숙하게는 word2vec 으로 알려진 알고리즘은 많은 NLP 분야에서 neural embedding 알고리즘을 활용해 단어들의 latent representation 학습에 효과적임을 보여주었다. 이 논문에서는 item based CF가 neural embedding 알고리즘과 같은 프레임워크 내에서 적용될 수 있다는 것을 보여줄 것이다. 이 방법을 적용해, 유저 정보가 없을 떄에도, item 기반 CF에서 각 상품들에 대한 임베딩 벡터를 latent space에서 생성할 수 있다.

아이템들 간의 유사도를 측정하는 것은 추천 시스템에서 핵심적인 부분이라고 볼 수 있다. 많은 추천 알고리즘들이 유저와 아이템에 대한 각각의 임베딩 벡터를 학습하는 데에 집중하고 있지만, 아이템들 간의 유사도 측정을 정확하게 해내는 것이 사실 궁극적인 목표라고 볼 수도 있다.

너무 추천 시스템의 일부만 얘기하는 것 같아 갸우뚱하게 되는 부분…

일반적으로 생각하는 추천 user-to-item 추천보다는, single 아이템 추천이 더욱 높은 CTR을 기대할 수 있다고 한다. 따라서 높은 매출과 수입에 대한 상당부분을 이 아이템 유사도 기반의 추천이 담당하게 된다.

그럴듯 하면서도 아닐 수 있는데, 저자가 너무 일반화한다는 느낌이 너무 든다. 유사상품 추천에 있어서는 당연히 아이템 유사도 측정 기반의 추천이 많이 먹히겠지만, 유저가 서비스를 진입할 때에는 아이템 기반이 아닌 user-to-item 추천을 할 수 밖에 없지 않나. 추천 시스템의 목적과 전략에 따라 다를 수 있는데, 너무 single item 추천만 치켜세우고 있다.

SGNS가 NLP 분야에서 큰 성공을 거둔 만큼, SGNS를 일부 수정하여 CF에 적용해볼 것이다. 이 알고리즘을 item2vec 으로 칭하자.

'image'

앱스토어나 이커머스에서 우리가 위와 같이 보듯이, 상품이나 서비스 간의 유사도 기반 추천은 주변에서 쉽게 볼 수 있다.


2. SGNS

: Mikolov ‘(링크)’에 의해 제안된 이 방법론은 문장 내에서 단어를 표현하는 데에 있어서, 다른 단어와의 관계에 대한 정보를 캐치한다. 특정 단어들이 문장 내에서 어떠한 단어들이 주변에 분포하고 있는 지를 캐치하여, 각 단어들을 하나의 벡터로 표현해내는 방법이다. 우리가 잘 알고있는 word2vec 이 이에 해당한다. Skip-gram 의 목표는 아래의 함수를 최대화 하는 것이다.

\[\frac{1}{K} \sum_{i=1}^{K} \sum_{-c \le j \le c,\ j \ne 0 } \text{log}\ p(w_{i+j}|w_i)\]
위의 식에 대해 조금 이해해보자면, 단어 $w_i$가 나왔을 때, 이 단어를 기준으로 $c$번째 앞에 있는 단어들이 나올 확률 및 $c$번째 뒤에 나올 총 2$c$ 단어들의 출현 확률을 최대화 하는 것이다. 이 $c$ 값은 context window size 라고 부르기로 하자. 이 값은 $w_i$에 따라 달라질 수 있다. $p(w_j w_i)$는 아래와 같은 softmax 함수이다.
\[p(w_j |w_i) = \frac{\text{exp}(u_i^T v_j)}{\sum_{k\in I_w} \text{exp}(u_i^T v_k)}\]

위의 식에서, $u_i \in U (\subset \mathbb{R}^m)$ 그리고 $v_i \in V (\subset\mathbb{R}^m)$ 들은 latent 벡터들이며, 단어 $w_i \in W$ 의 target, context representation 에 속한다.

3. ITEM2VEC - SGNS FOR ITEM SIMILARITY

: item2vec 의 핵심 아이디어는 word2vec 의 아이디어를 상품 데이터에 그대로 적용하겠다는 것이다. 이 과정에서 우리는 상품을 구입한 유저가 누구인지와 같은 유저에 대한 정보는 필요로 하지 않는다. 문장이라는 집합이 여러 개의 단어들로 이뤄져있듯이, 구매라는 이벤트 집합은 여러개의 상품으로 이뤄진 집합이라고 생각해볼 수 있다.
즉, 구매라는 이벤트 집합을 하나의 문장으로 보고, 이 구매 이벤트를 sequential 하게 이루고 있는 각 상품들을 단어로 치환해서 생각해본다면, word2vec의 개념을 그대로 상품 구매 데이터에 적용할 수 있다는 것이다. 이것이 item2vec 의 핵심 아이디어이다.

솔직히 novel한 부분은 없다. 누구나 논문 안읽어봐도 생각해볼 수 있는 아이디어

'anonym'

이 논문의 저자가 말하기로는, 아이템 기반의 CF(collaborative filtering)에 SGNS 개념을 적용하는 것은 너무나도 직관적이라고 한다. 문장 내에서 단어들이 다른 단어들과의 관계를 갖고 있는 것처럼, 장바구니 내에서 set를 이루는 아이템들도 이러한 맥락에서 이해할 수 있지 않냐는 게 저자의 지적이다. (솔직히 1대1 대응처럼 완벽하게 같은 관계라고 볼 수는 없겠지만, 두 개의 예시가 서로 공유하는 비슷한 특징들이 있다는 건 부인할 수 없어보인다.)
이 연구에서는 여러 개의 아이템들이 만들어 낼 수 있는 시공간적 (spatial/time) 순서는 고려하지 않는다. 단순히 item들의 sets으로만 보고, 시공간에 관련된 정보는 ignore하는 static한 환경으로 본다. 내가 이해한 바로는, 이러한 조건을 둔 덕에, 기존의 SGNS와는 수식이 조금(아주 조금) 달라지게 되는데, 기존의 SGNS는 전 후 C개 만큼의 단어까지 스크리닝을 하며 단어들 간의 관계에 대한 데이터를 활용한 반면, item2vec에서는 각 아이템의 C개 전 후라는 조건을 걸지 않았다. 문장 속의 단어와 장바구니 속의 아이템들 모두 유한한 길이를 갖는 것은 맞지만, 장바구니의 아이템 갯수는 일반적으로 문장 속 단어의 수보다는 적어서 그런 것이 아닐까? 하는 개인적 추측을 해본다. 이렇게 목적 함수 (수식 이미지 추가)에 있어서 미세한 차이 외에는 나머지 과정은 일반적인 SGNS와 모두 같다.

4. EXPERIMENTAL SETUP AND RESULTS

: 이 논문의 저자는 item2vec 방법론에 대한 실증적 평가를 보여주기 위해 두 가지 데이터 셋(Microsoft Xbox Music Service 데이터셋과 Microsoft Store에서 상품 주문 데이터셋)을 활용하였고, 양적(quantitative)결과와 질적(qualitative)결과를 모두 보여주고 있다. 비교를 위한 베이스 모델로는 추천 알고리즘에서 가장 많이 사용되는 item-item SVD를 사용했다.
***

논문의 데이터 설명에 대한 직역

데이터 셋에 대한 조금 더 구체적인 설명은 다음과 같다.
Microsoft Xbox Music Service 데이터 셋은 9M events를 포함하고 있으며,각각의 이벤트는 유저와 아티스트 간의 관계로 구성 돼있다 (각 유저는 특정 아티스트의 음악을 재생한 데이터). 이 데이터셋은 732K users 와 49K 의 distinct artists들로 구성 돼있다.
이 음악 데이터 셋은 장르와 관련한 정보는 제공하고 있지 않는데, 웹으로부터의 장르 메타 데이터를 활용해서 장르-아티스트 카탈로그를 만들었다.이 카탈로그를 활용해서, 우리가 학습한 representations와 장르 간의 관계를 시각화했다.
Microsoft Store의 상품 주문에 대한 데이터셋은 주문한 유저의 데이터는 포함하고 있지 않다. 이 데이터 셋은 379K의 주문 수와 1706의 distinct item으로 이뤄져있다.

웹에서 얻은 정보로 아티스트와 장르를 연결한 경우와, item2vec 기반의 KNN 예측 경우에 후자가 더 좋은 정확도를 보여준다. 특히, 10K unpopular의 경우에 기존의 SVD 정확도에 비해 크게 향상된 정확도를 보여주는데, 이것은 item2vec 과정에서 데이터 간의 불균형을 맞춰주는 subsampling의 효과가 잘 들어맞았던 것으로 보인다 : - 기존 SGNS의 문장 내 단어로 이해를 해보자면, 매우 빈번하게 나오는 단어들의 빈도와 그렇지 않은 (rare)한 단어들의 빈도가 서로 균형이 맞지 않는다. 이러한 불균형(imbalance)을 해결하기 위해 특정 확률 수식을 활용한 subsampling 작업을 진행한다 -
논문에서 시각화를 위해 사용한 t-SNE embedding에 대한 이해를 위해서는 lovit님의 [(블로그 글)](https://lovit.github.io/nlp/representation/2018/09/28/tsne/)을 확인하면 도움이 될 것이다.
### 5. CONCLUSION ### References https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
https://lovit.github.io/nlp/representation/2018/09/28/tsne/
https://towardsdatascience.com/word-embedding-with-word2vec-and-fasttext-a209c1d3e12c
http://jalammar.github.io/illustrated-word2vec/