아래의 논문과 블로그를 참고했다.
논문: 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에서 상품을 분류할 때, 사용자가 상품에 대한 내재적 피드백을 제공했는지 안했는지의 정보만을 이용한다.이 때문에 정보의 손실이 발생할 수 있다. 하지만 기존의 추천시스템 기법과 비교해 우수한 성능을 보인다.
이런 단점을 보완하기 위해 피드백의 확실함 정도를 함께 고려하는 MBPR(Modified Bayesian personalized ranking: 변형 베이지안 개인화 순위 방법)이 있다.
* 내재적 피드백: 거래수, 클릭수, 감상내역...
조건
BPR은 totality, antisymmetry, transitivity을 만족한다고 가정한다.
BPR(Bayesian personalized ranking)
모형
먼저 상품을 개인의 선호도로 카테고리화를 한다. 카테고리화 하는 방법은 간단하게 피드백의 여부로 나뉜다.
내재적 피드백을 $r_{ij}$라고 하면, r_{ij}>0이 관측된 (user-item)집합을 $S :=$ {$(u,i) \in U \times I: r_{ui}>0$}이라고 정의한다.
여기서 $r_{ij}$>0(피드백을 받은 item)들의 집합을 $I_{u}^{+}$(positive items) $:=${ $i \in I : (u,i)\in S$}이고, $r_{ij}$<0인 item의 집합은 $I_{u}^{-}$(negative items)로 둔다.
결과적으로 집합 $D_s$는 아래처럼 정의한다. (user, user가 내재적 피드백을 준 item, 피드백을 받지 못한 item)
$D_s :=$ {$(u,i,j), i \in I_{u}^{+}, j \in I_{u}^{-}$}
즉, i는 피드백을 받은, j는 받지 못한 item이다.
이 모형에서 i를 j보다 선호하는$(i \ge_{u})$ 확률을 다음과 같이 정의했다.
$Pr(i \ge_{u} j)$ = $\sigma(y_{ui} - u_{uj})$
* $\sigma$: sigmoid function = $1 \over (1+exp(-x))$
시그모이드 함수를 사용하면 $\sigma(x) + \sigma(-x) = 1$이 성립한다. 따라서 $Pr(i \ge_{u} j)$ + $Pr(j \ge_{u} i) = 1$이 된다.
여기서 피드백을 받지 않은 item의 rating을 예측하는 식은 다음과 같다.
$\hat{y_{ui}}$ = $\mu + b_u + b_i + p_{u}^{T}q_i$
$p_{u}^{T}q_i$ 자체만으로도 $\hat{y_{ui}}$이지만, 정확도를 높이기 위해 $\mu$(전체 평균 스코어), $b_{u}, b_i$(user, item에 대한 bias: user이 얼마나 평점을 후하게 주는지, item이 후하게 받는편인지..)를 수식에 추가한다.
각각의 user-item에 대한 $Pr(i \ge_{u} j)$을 정의했기 때문에 우리는 ranking에 대한 likelihood를 정의할 수 있다.
임의의 두 상품의 쌍 $(i,j)$가 주어졌을 때 $Pr(i \ge_{u} j)$는 베르누이 분포를 따른다고 할 수 있다.
더 자세히 설명하면, user가 상품 i보다 상품 j를 선호하는 확률 $P_{uij}$는 베르누이 분포$(P_{uij})$이며, 분포안에 들어가는 확률은 시그모이드라고 볼 수 있다.
또한, $Pr(i \ge_{u} j)$와 $Pr(j \ge_{u} i)$가 독립이기 때문에 아래와 같은 조건부 로그우도(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 likelihood의 공식은 아래와 같다
3. regularization(정규화: $l_2$)항 고려
* $R_{uij}$(θ)= {$\lambda_b(b_{i}^{2} + b_{j}^{2})$ + $\lambda_u||P_u]]^{2}$ + $\lambda + ||q_i||^2 + \lambda - ||q_j||^2$}
최종적인 정규화된 조건부 로그우도를 최소화해서 모델을 전개한다.
SGD(Optimizer)
최소화 하기 위해 SGD로 구현한다. BPR은 $D_s$의 수가 너무 많아서 일반적인 SGD를 사용하는게 아니라 adapted sampling 방식을 사용하는게 훨씬 효과적이다.
$D_s$에서 하나의 (u,i,j)를 무작위 샘플링하고 샘플링된 (u,i,j)에 관한 매개변수를 업데이트(SGD 적용)를 한다. 샘플링을 취할 때 더 많이 사용자들이 관측하거나 좋아한 데이터를 위주로 샘플링을 한다.
아래는 각각의 매개변수를 업데이트 한 결과이다. 각 미분에 대해서는 생략하도록 하며, 공식을 전개(미분 전개)했을 때 아래와 같이 나온다.
'추천 시스템 > Collaborative Filtering' 카테고리의 다른 글
KNN CF 구현 (0) | 2020.04.14 |
---|---|
우도 추정 (0) | 2020.03.27 |
Collaborative Filtering(CF: 협업필터링)2: 유사도 계산법 (0) | 2020.03.12 |
Collaborative Filtering(CF: 협업필터링)1: 개요 (0) | 2020.03.12 |
MF(Matrix Factorization, 행렬분해) (1) | 2020.03.09 |