Deep Learning/Recommender system

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

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

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

 

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

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

 

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

 

사용자(m)와 상품(n)의 m×n 평점 행렬 R=[ruj]에서 Iu는 사용자(u)가 측정한 평점 set를 의미한다. 그리도 다른 사용자(v)가 측정한 평점 set Iv가 존재할 것이며, 두 사용자가 모두 측정한 아이템 집합은 IuIv로 나타낼 수 있다. 

 

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

μu=ΣkIuruk|Iu|  u1,...,m

 

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

 

= ΣkIuIv(rukμu)  (rvkμv)ΣkIuIv(rukμu)2  ΣkIuIv(rukμu)2

 

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

 

1. Cosine

Cos(u,v)=ΣkIuIvrukrvkΣkIuIvruk2ΣkIuIvrvk2

 

2. Pearson

Pearson(u,v)=ΣkIuIv(rukμu)(rvkμv)ΣkIuIv(rukμu)2ΣkIuIv(rvkμv)2

 

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

 

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

 

r^uj=μu+ΣvPu(j)Sim(u,v)sujΣvPu(j)|Sim(u,v)|=μu+ΣvPu(j)Sim(u,v)(rvjμv)ΣvPu(j)|Sim(u,v)|

 

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