Loading [MathJax]/jax/output/CommonHTML/jax.js
본문 바로가기

추천 시스템/Collaborative Filtering

BPR-MF(Bayesian Personalized Ranking MF)

아래의 논문과 블로그를 참고했다.

 

논문: Modified Bayesian personalized ranking for non-binary implicit feedback

블로그: http://sanghyukchun.github.io/95/

https://itkmj.blogspot.com/2019/08/bpr-bayesian-personalized-ranking-from.html

 

 

BPR은 상품간의 선호도를 확률 모형화를 한 모델이다. BPR은 개인이 선호하는 상품을 단계별로 카테고리화하여 분석을 진행한다(Positive items: 긍정적 상품/ Negative items: 부정적 상품)

이런 BPR을 MF로 확장하고 있다.

BPR-MF

 

특징

BPR에서 상품을 분류할 때, 사용자가 상품에 대한 내재적 피드백을 제공했는지 안했는지의 정보만을 이용한다.이 때문에 정보의 손실이 발생할 수 있다.  하지만 기존의 추천시스템 기법과 비교해 우수한 성능을 보인다.

이런 단점을 보완하기 위해 피드백의 확실함 정도를 함께 고려하는 MBPR(Modified Bayesian personalized ranking: 변형 베이지안 개인화 순위 방법)이 있다. 

 

* 내재적 피드백: 거래수, 클릭수, 감상내역...

 

 

조건

BPR은 totality, antisymmetry, transitivity을 만족한다고 가정한다.

 

 

BPR(Bayesian personalized ranking)

모형

 

먼저 상품을 개인의 선호도로 카테고리화를 한다. 카테고리화 하는 방법은 간단하게 피드백의 여부로 나뉜다.

내재적 피드백을 rij라고 하면,  r_{ij}>0이 관측된 (user-item)집합을 S:= {(u,i)U×I:rui>0}이라고 정의한다.

여기서  rij>0(피드백을 받은 item)들의 집합을 I+u(positive items) :=iI:(u,i)S}이고,  rij<0인 item의 집합은  Iu(negative items)로 둔다.

결과적으로 집합 Ds는 아래처럼 정의한다. (user, user가 내재적 피드백을 준 item, 피드백을 받지 못한 item)
Ds:= {(u,i,j),iI+u,jIu}

 


즉, i는 피드백을 받은, j는 받지 못한 item이다.    
이 모형에서 i를 j보다 선호하는(iu)  확률을 다음과 같이 정의했다.

Pr(iuj) = σ(yuiuuj)

                                                                                *  σ: sigmoid function = 1(1+exp(x))

 

sigmoid function

시그모이드 함수를 사용하면 σ(x)+σ(x)=1이 성립한다. 따라서 Pr(iuj) + Pr(jui)=1이 된다.
  

여기서 피드백을 받지 않은 item의 rating을 예측하는 식은 다음과 같다.
^yui = μ+bu+bi+pTuqi


pTuqi 자체만으로도 ^yui이지만, 정확도를 높이기 위해 μ(전체 평균 스코어), bu,bi(user, item에 대한 bias: user이 얼마나 평점을 후하게 주는지, item이 후하게 받는편인지..)를 수식에 추가한다.
  

각각의 user-item에 대한  Pr(iuj)을 정의했기 때문에 우리는 ranking에 대한 likelihood를 정의할 수 있다.
임의의 두 상품의 쌍 (i,j)가 주어졌을 때  Pr(iuj)는 베르누이 분포를 따른다고 할 수 있다.

더 자세히 설명하면, user가 상품 i보다 상품 j를 선호하는 확률 Puij는 베르누이 분포$(P_{uij})$이며, 분포안에 들어가는 확률은 시그모이드라고 볼 수 있다.


또한,  Pr(iuj)와  Pr(jui)가 독립이기 때문에 아래와 같은 조건부 로그우도(conditional log-likelihood)를 구할 수 있다.

우도 추정이란 표본값(x)들을 바탕으로 parameter를 추정하는 기법이다.

 

* 베르누이 분포: 결과가 성공 혹은 실패처럼 두 가지 중 하나만 나오는 경우

 

 

https://data-matzip.tistory.com/entry/%EC%9A%B0%EB%8F%84-%EC%B6%94%EC%A0%95?category=851533

1. likelihood(가능도)

user가 선호할 확률은 (item i를 선호할 확률) x (i를 선호하지 않을 확률)로 이뤄진다. 

 

 

2. log likelihood

계산을 쉽게하기 위해 로그를 취한다.

log를 취할때의 변화

log likelihood의 공식은 아래와 같다

 

 

3. regularization(정규화: l2)항 고려

Ruij(θ)= {λb(b2i+b2j) + λu||Pu]]2 + λ+||qi||2+λ||qj||2}

최종적인 정규화된 조건부 로그우도를 최소화해서 모델을 전개한다.

 

 

 

SGD(Optimizer)

최소화 하기 위해 SGD로 구현한다. BPR은 Ds의 수가 너무 많아서 일반적인 SGD를 사용하는게 아니라 adapted sampling 방식을 사용하는게 훨씬 효과적이다.

 

Ds에서 하나의 (u,i,j)를 무작위 샘플링하고 샘플링된 (u,i,j)에 관한 매개변수를 업데이트(SGD 적용)를 한다. 샘플링을 취할 때 더 많이 사용자들이 관측하거나 좋아한 데이터를 위주로 샘플링을 한다.

 

아래는 각각의 매개변수를 업데이트 한 결과이다. 각 미분에 대해서는 생략하도록 하며, 공식을 전개(미분 전개)했을 때 아래와 같이 나온다.

SGD