Processing math: 100%

Recommender System/Paper Review

[Prod2vec] E-commerce in Your Inbox : Product Recommendations at Scale

eatchu 2023. 3. 24. 14:22
반응형

E-commerce in Your Inbox : Product Recommendations at Scale

해당 논문은 사용자의 구매내역(email receipt)을 활용하여 Yahoo 사용자에게 개인화된 광고 메일을 발송하려고 한다.

각 email receipt는 특정 시점에 발생하는 구매내역이며 각 구매내역에는 여러개의 상품이 포함되어 있다.

 

각 item의 embedding vector를 잘 representation하여 사용자에게 개인화된 추천 상품을 노출시키고자 하는 것이 해당 논문의 목적이다.

이 논문에서는 구매 sequence를 활용하여 item embedding vector를 얻는다.

Meta-Prod2vec을 공부하며 추가적인 개념으로 읽은 논문이라 prod2vec에 관한 내용만 적어보았다.

 

 

NOTATION

각 방법론을 설명하기에 앞서 용어 정리를 간단히 하고 넘어가보자.

s=email receipt set purchased by user n
em=receipt m of the email receipt set purchased by user n
pmTm=item Tm-th purchase among items purchased at the m receipt among the email receipt set purchased by user n

 

s=(e1,...,eM)S

em=(pm1,...,pmTm)

 

→ 각 item에 대한 D차원의 embedding vector를 표현하는 것이 목적

 

다시 정리하자면 각 유저가 구매했던 email receipt set(=s)이 존재하며 각 set에는 시간대별로 구매한 개별 email receipt(=ei)이 존재할 것이다. 또한 각 email receipt에는 여러 상품 구매내역이 존재할 것이며 m번째 email receipt내에서 구매한 Tm번째 상품을 pmTm이라고 정의한다.

 

prod2vec

prod2vec

논문에서 제안하는 prod2vec 알고리즘은 각 유저가 구매한 상품 sequence를 기반으로 상품의 embedding vector를 학습한다.

  • skip-gram 알고리즘을 활용해 상품 구매 sequence를 학습
  • target item의 주변 item을 통하여 embedding vector를 구함
vp : input vector
vp : output vector

L=ΣsSΣpisΣcjclogP(pi+j|pi)

P(pi+j|pi)=exp(vTpivpi+j)ΣPp=1exp(vTpivp)

 

skip-gram 알고리즘을 알고 있다면 쉽게  파악알 수 있는 어렵지 않은 수식이므로 skip-gram에 대한 이해가 필요하다.

참조 링크를 바탕으로 그린 skip-gram 구조에 대한 글도 확인해보면 좋을 것 같다.

 

이러한 skip gram 구조에서 단어를 상품으로 대체하면 된다. 수식에서의 c(cjc)는 skip gram에서 정의하는 window size를 나타내며 logP(pi+j|pi)에서의 pi+jpi를 제외한 pi의 주변 상품을 말한다.

 

prod2vec의 문제점은 하나의 email receipt에 여러개의 상품이 동시에 구매되었다는 것을 고려하지 않는다는 점이다.

 

 

 

bagged-prod2vec

bagged-prod2vec

앞선 prod2vec의 문제점을 개선하기 위해 제안된 방법으로 기존의 prod2vec처럼 주변의 item을 탐색하는 것이 아니라, 주변의 email receipt를 탐색한다.

수식은 아래와 같다. 

 

L=ΣsSΣemsΣnjnΣk=1,...,TmlogP(em+j|pmk)

 

prod2vec의 두번째 term(Σpis)에서는 set에 포함되는 모든 unique한 item의 sequence에 대해 살펴보았지만 bagged-prod2vec에서의 두번째 term(Σems)은 set에 포함되는 email receipt의 sequence를 살펴보고 있다.

 

따라서 em에 포함되는 상품이 중심이 되며 주변 email receipt(m-n ~ m+n)에 대한 계산을 수행한다.

em 상품들을 학습할때에는 중심 상품(input)만 변하게 되며 target은 동일하다.

또한 em 포함되는 상품들은 서로를 고려하지 않는다.(예측 대상이 아님)

 

 

P(em+j|pmk)=P(pm+j,1|pmk)×...×P(pm+j,Tm|pmk)

 

em receipt에서 k번째 item pmk이 구매되었을때, em+j receipt의 확률은 em+j에 포함되는 모든 상품의 확률을 곱하는 것과 같다.

 

 

 

Product-to-product predictive models

prod2vec-topK

앞서 제안된 방법으로 item의 embedding vector를 얻었다면 cosine 유사도를 통해 top k의 유사 item을 추천해줄 수 있다.

 

prod2vec-cluster

추천의 다양성을 위해 유사한 상품끼리 cluster로 묶고 이전에 구매된 item의 cluster와 가장 관련성 있는 cluster에서 item을 추천한다. 앞선 top-k의 방법에서 보다 다양한 유형의 상품을 추천하고 싶을때 활용하거나 top-k의 방식과 결합하여 적용해볼 수 있다.

  1. 각 상품의 embedding vector를 가지고 clustering을 수행하여 유사한 상품의 군집을 생성(논문에서는 k-means 적용)
  2. 군집별 유사도를 구한다. 
    • 군집별 유사도는 ci 군집 내에서 상품을 구매한 후 cj에서 다음 상품을 구매할 확룔(^θij)이며 아래와 같이 구할 수 있다.
      • ^θij=of times ci purchase was followed by cjcount of ci purchases 
      • 분모는 ci 군집내에 속한 모든 상품이 구매된 수를 count한 값이며,
        분자는 ci 군집내에 속한 상품을 구매한 후 cj 군집내에 속한 상품을 구매한 수를 count한 값이다.
    • example
      • k=5라고 가정할때, 각 군집을 [c1,c2,c3,c4,c5]라고 한다.
      • c1은 (^θ12,^θ13,^θ14,^θ15) 를 얻을 수 있다.
      • 같은 방식으로 [c1,c2,c3,c4,c5] 모든 군집에 대한 확률값을 얻을 수 있다.
  3. 각 군집별 가장 유사한 군집을 얻는다. (top 1)
  4. 추천 상품을 유사 군집 내의 상품들과 유사도 계산을 수행하여 상품을 추천해준다.
    • example
      • 상품 p가 군집 c1에 속해있고, c1과 가장 높은 ˆθ를 가진 군집은 c3이라고 한다.
      • 상품 p는 c3 군집 내의 상품들과 cosine 유사도를 통해 top K 상품을 추천해줄 수 있다. 

 

 

참조 코드

https://github.com/mquad/sars_tutorial/blob/master/04_Prod2Vec.ipynb

 

GitHub - mquad/sars_tutorial: Repository for the tutorial on Sequence-Aware Recommender Systems held at TheWebConf 2019 and ACM

Repository for the tutorial on Sequence-Aware Recommender Systems held at TheWebConf 2019 and ACM RecSys 2018 - GitHub - mquad/sars_tutorial: Repository for the tutorial on Sequence-Aware Recommend...

github.com

https://github.com/mquad/sars_tutorial/blob/master/recommenders/Prod2VecRecommender.py

 

GitHub - mquad/sars_tutorial: Repository for the tutorial on Sequence-Aware Recommender Systems held at TheWebConf 2019 and ACM

Repository for the tutorial on Sequence-Aware Recommender Systems held at TheWebConf 2019 and ACM RecSys 2018 - GitHub - mquad/sars_tutorial: Repository for the tutorial on Sequence-Aware Recommend...

github.com

 

반응형