Matrix Factorization
지난 MBCF, SVD를 알아보고 문제점을 극복 할 수 있는 MF에 대하여 알아보자.
Matrix Factorization(MF)
- User-Item 행렬을 저차원의 User와 Item의 latent factor 행렬의 곱으로 분해하는 방법.
- SVD의 개념과 유사하지만 관측된 선호도 만 모델링에 활용하여 관측되지 않은 선호도 를 예측하는 일반적인 모델을 만드는 것이 목표다.
기본 MF
R과 \(\hat{R}\)이 최대한 유사하도록 모델을 학습한다.
\(R \approx P \times Q^T = \hat{R}\)
\(P \rightarrow |U| \times k\)
\(Q \rightarrow |I| \times k\)\
Objective Function을 정의하고 최적화 문제를 푸는 것이다.
- true rating: \(r_{u,i}\)
- predicted rating: \(\hat{r_{u,i}} = p_{u}^{T}q_i\)
- 관측된 선호도에서만 \(\underset{P,Q}{min} \sum_{ovserved r_{u,i}} (r_{u,i}-p_{u}^{T}q_i)^2\)
Objective Function (목적 함수) => 학습을 통해 최적화시키려는 함수.
Objective Function 최종 목적함수.
- \[\underset{P,Q}{min} \sum_{ovserved r_{u,i}} (r_{u,i}-p_{u}^{T}q_i)^2 + \lambda(\left\| p_u\right\|_2^2 + \left\| q_i \right\|_2^2)\]
\(r_u^i\): 학습 데이터에 있는 유저 u의 아이템 i에 대한 실제 rating
\(p_u(q_i)\): 유저(아이템) u(i)의 latent vector
- 최적화 문제를 통해 업데이트 되는 파라미터
\(\lambda\)(상수)배 된 panelty term은 L2-정규화를 의미
- 학습 데이터에 과적합되는 것을 방지한다.
정규화는 weight를 loss function에 넣어주면 weight가 너무 커지지 않도록 제한이 걸려 overfitting 방지.
Regularization Term에 람다의 크기에 따라 영향도가 달라진다. 람다가 크면 weight가 제대로 변하지않아서 underfitting이 발생한다.
Matrix Factorization + a
MF기반 추천으로 가장 잘 알려진 논문 Matrix Factorization Techniques for Recommender Systems 에서는 기본 MF에 다양한 기술을 추가하여 성능을 향상 시켰다.
Adding Biases
추천을 생각해보면 특정 유저는 모든 영화에 평점을 짜게 줄 수도 있고, 반대로 후하게 줄 수도 있다. 아이템도 마찬가지다.
- 전체 평균, 유저/아이템의 bias를 추가하여 문제를 극복하고 예측 성능을 향상한다.
기존 목적 함수가 다음과 같고.
- \[\underset{P,Q}{min} \sum_{ovserved r_{u,i}} (r_{u,i}-p_{u}^{T}q_i)^2 + \lambda(\left\| p_u\right\|_2^2 + \left\| q_i \right\|_2^2)\]
Bias가 추가된 목적함수는 다음과 같다.
- \[\underset{P,Q}{min} \sum_{ovserved r_{u,i}} (r_{u,i}- \mu - b_u - b_i - p_{u}^{T}q_i)^2 + \lambda(\left\| p_u\right\|_2^2 + \left\| q_i \right\|_2^2 + b_u^2 + b_i^2)\]
Adding Confidence Level
사람의 기분에 따라, 상황에 따라 평점을 주는 상황이 주어질 경우, 평점이 동일한 신뢰도를 가지지 않는다. 위의 목적함수에 신뢰도를 뜻하는 \(c_{u,i}\)를 추가한다.
Confidence level이 추가된 목적 함수
- \[\underset{P,Q}{min} \sum_{ovserved r_{u,i}} c_{u,i}(r_{u,i}- \mu - b_u - b_i - p_{u}^{T}q_i)^2 + \lambda(\left\| p_u\right\|_2^2 + \left\| q_i \right\|_2^2 + b_u^2 + b_i^2)\]
Adding Temporal Dynamics
아이템이 시간이 지나면 인기도가 떨어지고, 유저가 시간이 흐르면 평점을 내리는 기준이 달라지므로 시간에 따라 변화는 유저, 아이템의 특성을 반영하고 싶다.
- \[\widehat{r_{u,i}(t)} = \mu + b_u(t) + b_i(t) + p_{u}^{T}q_i\]
- 학습 파라미터 \(r_u^i\)가 시간을 반영하도록 모델을 설계 하였다.
Alternative least Square(ALS)
기존 유저가 내린 아이템에 대한 평점등 explicit feedback 데이터가 아닌 implicit Feedback 데이터를 기반으로 MF 모델을 설계하여 성능을 향상 시킨 모델이다.
기본 컨셉은
- 유저와 아이템 매트릭스중 하나를 상수로 두고 번갈아가면서 업데이트하고 least-squre 문제를 해결하는 것이다.
- SGD와 비교하였을때 희소한 데이터에 비해 더 Robust 하고 대용량 데이터를 병렬 처리하여 빠른 학습이 가능하다.
목적함수
- \[\underset{P,Q}{min} \sum_{ovserved r_{u,i}} (r_{u,i}-p_{u}^{T}q_i)^2 + \lambda(\left\| p_u\right\|_2^2 + \left\| q_i \right\|_2^2)\]
다음 수식을 이용해 P,Q를 번갈아 가면서 업데이트 한다.
- \[p_{u}=\left(Q^{T} Q+\lambda I\right)^{-1} Q^{T} r_{u}\]
- \[q_{i}=\left(P^{T} P+\lambda I\right)^{-1} P^{T} r_{i}\]
Implicit Feedback을 고려
Preference - 유저 u가 아이템 i를 선호하는지 여부를 binaray로 표현해 Preference matrix로 나타낸다.
- \[f_{u i}= \begin{cases}1 & r_{u i}>0 \\ 0 & r_{u i}=0\end{cases}\]
Confidence - 유저가 item을 선호하는 정도를 나타내는 함수.
- \[c_{u,i} = 1 + \alpha \cdot r_{u,i}\]
알파는 positive feedback과 negative feedback 간의 상대적 중요도를 조정하는 하이퍼 파라미터다.
최종 목적 함수.
- \[\underset{P,Q}{min} \sum_{ovserved r_{u,i}} c_{u,i}(f_{u,i} - p_{u}^{T}q_i)^2 + \lambda(\left\| p_u\right\|_2^2 + \left\| q_i \right\|_2^2)\]
- 실제 레이팅을 표현하던 \(r_{u,i}\) 매트릭스에서 선호도를 나타내는 \(f_{u,i}\)로 변경되었다.
Confidence / Preference를 고려한 유저와 아이템의 latent벡터를 나타낸다.
- \[p_{u}=\left(Q^{T} C^{u} Q+\lambda I\right)^{-1} Q^{T} C^{u} f_{u}\]
- \[q_{i}=\left(P^{T} C^{i} P+\lambda I\right)^{-1} P^{T} C^{i} f_{i}\]
Bayesian Peronalized Ranking(BPR)
Implicit feedback 데이터를 활용할 수 있는 또다른 모델에 대하여 알아보자.
Personalized Ranking
- 사용자에게 순서(Ranking)이 있는 아이템 리스트를 제공하는 문제 -> 아이템 추천문제
- 개인의 랭킹을 반영하여 최적화 한다(유저가 i보다 j아이템을 선호한다면 이 정보를 MF의 파라티머를 학습한다.)
- explicit feedback 데이터를 사용하기엔 선호 정도가 분명하지 않아 implicit feedback데이터를 활용한다.
접근
가정
- (A1) 관측된 item을 관측되지 않은 item보다 선호
- (A2) 관측된 아이템끼리는 선호도를 추론할 수 없다.
- (A3) 관측되지 않은 아이템끼리도 선호도를 추론할 수 없다.
특징
- 관측되지 않은 item들에 대해서도 정보를 부여함.(관측되지 않은 item과 아닌 아이템을 게산)
- 관측되지 않은 item들에 대해서도 ranking이 가능함.(관측되지 않은 item과 아닌 아이템을 게산)
user가 선호하는 item 집단을 \(I_{u}^{+}:=\{i \in I:(u, i) \in S\}\) 이라고 할 때, 데이터셋을 다음과 같이 정의한다.
- \[D_{S}:=\left\{(u, i, j) \mid i \in I_{u}^{+} \wedge j \in I \backslash I_{u}^{+}\right\}\]
위 그림에서 u1에 대해서만 가정을 겸하여 살펴 보면 매트릭스는 다음과 같이 표현된다.
- \[(1) i_{2} > j_{1} \Leftrightarrow (4) i_{1}<j_{2} \quad by \mathrm{A} 1\]
- \[(2)i_{3} ? j_{2} \Leftrightarrow (5) i_{2} ? j_{3} \quad by \mathrm{A} 2\]
- \[(3)i_{4} ? j_{1} \Leftrightarrow (6) i_{1} ? j_{4} \quad by \mathrm{A} 3\]
여기까지만 해도 너무 복잡하고 수식이 많다. 위에서 정의한 데이터셋 \(D_s\)를 바탕으로 baysian Personalized Ranking을 구하고 목적함수와 학습 알고리즘은 참고자료의 블로그에서 확인해주세용.(어지럽다)
BPR 결론
- Implicit Feedback 데이터만 사용하여 아이템간의 선호도를 선출해 엄청난 수학적인 방법으로 최적화를 한다.
Comments