데이터 셋을 구성할 때, 단순한 rating matrix (User - Item - Rating) 구성을 가진 2차원 행렬이 아닌, 유저 별로, 아이템 간의 ranking을 표현한 행렬을 데이터 셋으로 표현한다.

왼쪽의 행렬의 + 표시가 rating 이 된 element, ? 가 rating이 되어있지 않는 부분이라고 한다면,
오른쪽에 있는 2개의 행렬은 각각 유저 당 하나씩 가지고 있는 item ranking 행렬로,
?표시는 데이터가 없는 element, +표시는 해당 row item이 col item보다 ranking이 높다는 것이고, -표시는 그 반대로 볼 수 있다. ranking을 매기는 로직은 사용자가 i1은 사지 않았고 (왼쪽의 행렬에서 (u1, i1)은 ? 이다) i2는 샀기 때문에, i2 > i1 이라고 볼 수 있다.
오른쪽의 행렬에서 ?표시는 비교할 대상의 아이템들이 둘다 샀거나, 사지 않아서 동률이라 비교가 불가능한 부분이다.
모델은 단순한 Bayesian 이론을 이용한 방식이며

위 수식에서 theta는 학습시킬 모델 파라메터를 의미하며, >u 는 추천 과정의 목표인 유저의 숨겨져 있는 아이템들에 대한 선호도를 표현한다.
추천 모델을 학습시키기 위해 P(theta | >u)의 확률 (posterior probability)을 최대화 시켜야 한다.
P(theta | >u)는 유저의 선호도를 기반으로 했을 때, 학습 시킨 모델이 유저가 좋아하는 아이템을 맞출 확률이 된다. 하지만 이 확률을 바로 구할 수 없으므로, bayesian 공식을 활용하여 P(>u | theta)로 바꾸고 이 값을 최대화 시키도록 최적화를 시켜 나간다.
P(>u | theta)는 모델 파라메터가 주어졌을 때 (시작은 랜덤하게), 유저가 좋아하는 아이템을 맞출 확률을 말한다.
해당 수식을 사용하여 (베이지안 이론을 사용하여) P(>u | theta) 부분을 우변과 같이 표현할 수 있으며, 이는 서로 비례 관계를 나타낸다. 따라서 p(>u | theta) 부분을 구하고 이 부분이 가장 최대화 하는 식으로 SGD(Stochastic Gradient Descent)를 이용하여 학습시킨다.