Deep Learning/Recommender system

[Recommender System] 이웃 기반 방법론 - Cosine, Pearson

언킴 2022. 1. 17. 21:42
반응형

이웃 기반 방법론은 사용자-사용자 간 유사도 혹은 상품-상품 간 유사도를 이용하자는 아이디어에서 시작됐다. 이웃 기반 모델에서는 다음과 같은 두 가지 기본 가정을 설정한다. NBCF(Neighbor Based Collaborative Filtering)라고 불리기도 한다. 

 

1. 사용자 기반 모델 : 유사한 사용자들은 같은 상품에 대해 비슷한 평점을 부여한다.

2. 아이템 기반 모델 : 유사한 상품은 동일한 사용자에세 비슷한 방식으로 평점이 부여된다.

 

사용자 기반 이웃 모델을 구성하기 위해서는 타깃 사용자($i$)와 유사한 사용자를 찾기 위해서는 다른 모든 사용자와의 유사도를 계산해야한다. 유사도 계산을 수행할 때에는 사용자마다 본인의 기준이 다르기 때문에 평점 스케일이 다를 수 있음을 고려하고 계산을 수행하여야 한다. 또한 사용자들은 같은 상품에 대해서만 평가하지 않을 수 있다. 

 

사용자($m$)와 상품($n$)의 $m \times n$ 평점 행렬 $R = [r_{uj}]$에서 $I_u$는 사용자($u$)가 측정한 평점 set를 의미한다. 그리도 다른 사용자($v$)가 측정한 평점 set $I_v$가 존재할 것이며, 두 사용자가 모두 측정한 아이템 집합은 $I_u \cap I_v$로 나타낼 수 있다. 

 

$R$은 그 자체가 sparse하기 때문에 $I_u \cap I_v = \phi$ 일 가능성이 높다. 우리는 $I_u \cap I_v$ 를 통해서 사용자 간 유사도를 계산한다. $I_u \cap I_v$ 자체가 사용자($u,v$) 모두 평점을 측정한 상품 집합이기 때문에 해당 집합 내에 존재하는 상품에 대해서만 계산을 하면 된다. 각 사용자에 대한 평균은 다음과 같이 계산된다.

$\mu_u = \frac{\Sigma_{k\in I_u}r_{uk}}{|I_u|} \ \ \forall u \in {1, ..., m} $

 

$Sim(u,v) = Pearson(u,v)$

 

= $\frac{\Sigma_{k\in I_u \cap I_v} (r_{uk}-\mu_u)\ \cdot \ (r_{vk}-\mu_v)}{\sqrt{\Sigma_{k\in I_u \cap I_v} (r_{uk}-\mu_u)^2}\ \cdot \ \sqrt{\Sigma_{k\in I_u \cap I_v} (r_{uk}-\mu_u)^2}}$

 

$Pearson(u,v)$의 전통적 정의는 $\mu$를 계산할 때 $u, v$ 모두가 평점을 매긴 아이템에 대해서만 계산을 해야한다. 하지만 위 평균 평점을 계산하는 수식이 간단하기 때문에 일반적으로 위 방식을 사용한다. 만약 전통적인 $Pearson$을 사용하게 된다면, 각 사용자 피어 그룹 간 동일하게 평점을 측정한 아이템이 다르기 때문에 다르게 계산을 진행하여야 한다. 그렇게 진행할 경우 수식이 엄청 복잡해지기 때문에 간단한 방식을 사용하는 것이다. 우리는 추천 시스템에서 $Pearson$ 상관 계수를 사용한다. 하지만 일반적으로 유사도를 생각할 때에는 $euclidean$ 이나 $Cosine$ 을 생각할 수 있다. 그렇다면 왜 추천 시스템에서는 $Pearson$ 을 사용하는 것일까? $Cosine$ 과 $Pearson$은 매우 유사한 수식을 가지고 있다. $Cosine$ 의 특수한 경우를 $Pearson$ 이라고 부르기도 한다. 다음의 수식을 한 번 확인하면 조금 더 이해하기 쉬울 것이다. 

 

1. $Cosine$

$Cos(u,v) = \frac{\Sigma_{k \in I_u \cap I_v} r_{uk} \cdot r_{vk}}{\sqrt{\Sigma_{k \in I_u \cap I_v} r_{uk}^2} \cdot \sqrt{\Sigma_{k \in I_u \cap I_v} r_{vk}^2}} $

 

2. $Pearson$

$Pearson(u,v) = \frac{\Sigma_{k \in I_u \cap I_v}(r_{uk} - \mu_u)(r_{vk} - \mu_v)}{\sqrt{\Sigma_{k \in I_u \cap I_v} (r_{uk} - \mu_u)^2} \cdot \sqrt{\Sigma_{k \in I_u \cap I_v} (r_{vk} - \mu_v)^2}} $

 

각 사용자마다 본인만의 기준이 있어서 아이템에 부여하는 평점이 다를 수 있다. 예를 들면 사용자($u$)는 평점을 일반적으로 후하게 주는 사람이라 높은 평점을 주는 방면 사용자($v$)는 평점을 부여할 때 평균적으로 낮은 평점을 부여할 수 있다. 사용자의 평균 평점을 고려하지 않고 추천 시스템을 구현할 경우 다소 문제가 발생할 수 있기 때문에 추천 시스템에서는 사용자의 평균 평점을 뺀 $Pearson$ 상관 계수를 주로 사용한다. 

 

이렇게 유사도를 계산한 후 사용자의 평점을 예측하기 위해서는 다음과 같은 식을 사용한다. 

 

$\hat{r}_{uj} = \mu_u + \frac{\Sigma_{v \in P_u(j)} Sim(u,v) \cdot s_{uj}}{\Sigma_{v \in P_u(j)}|Sim(u,v)|} = \mu_u + \frac{\Sigma_{v \in P_u(j)} Sim(u,v) \cdot (r_{vj} - \mu_v)}{\Sigma_{v \in P_u(j)}|Sim(u,v)|} $

 

$P_u(j)$는 아이템($j$)에 대해 평점을 매긴 사용자($u$)의 이웃 집합이다. $\hat{r}_{uj}$은 사용자($u$)가 아이템($j$)에 대한 평점 예측값이다. $Sim(u,v)$은 사용자($u$)와 사용자($v$) 간의 유사도이다. 코사인, 피어슨, 유클리디안 등의 여러 유사도를 사용할 수 있지만 추천 시스템에서는 위에서도 언급했다시피 일반적으로 피어슨을 사용한다.