MF는 CF(Collaborative Filtering)의 한 기법이다. MF는 user-item의 매트릭스에 비어있는 요소를 채우는 기술이다.
아래의 행렬이 user-item 매트릭스라고 가정해보자
$\begin{bmatrix}
2 & 5 \\
3 & ?
\end{bmatrix}$
2번째 user(행)가 두 번째 item에 대해서 평점을 매기지 않았다. 실제로 user-item 매트릭스는 결측치가 매우 많다. 대부분의 사람들이 소수의 영화나 아이템을 구매하기 때문이다.
이런 결측치를 채우기 위해서 차원을 축소해 영화의 Latent 한 특성(장르, 미장센, 배우..)을 찾아 별점을 채운다.
매트릭스를 채우기 위해서는 PCA나 SVD, SVD++같은 알고리즘으로 분해하거나 축소를 하며 latent 한 특성을 찾는다.
그 후, 보다 나은 Latent를 유추하기 위해 optimization을 반복한다.
구현 순서
1. sparse 한 data 채우기
2. Latent 한 특성 찾기(SVD, PCA..)
3. optimization으로 특 이치 학습
1. sparse 한 data 채우기
결측치를 채울 땐 base line, 평균값, 랜덤..으로 결측치를 채운다
2. Latent한 특성 찾기
MF에서 가장 많이 사용되는 SVD를 사용해 설명하겠다.
U: left singular vector, m*m크기의 행렬
Σ: 비 대각 성분이 0인 m*n크기의 행렬
V: right singular vector, n*n크기의 행렬
K: hyperparameter
$\hat{R} = \hat{U} \Sigma \hat{V^T}$이다. Σ는 특성들이 얼마나 중요한지 행렬로 나타내고, 중요한 순서대로 정렬한 후 k개만큼 자른다. 즉, 중요한 latent 요소들이 남아서 hat(R)을 채우게 되는 것이다.
위의 그림을 수식으로 나타내면 아래와 같다.
$\hat{R}_{ui}= \Sigma p_{uk} \sigma_{k} q_{ik}$
3. optimization
이제 Σ 즉, 특이 치를 학습해야 한다.
- objective function(목적함수)
일반적으로 SGD를 사용해 optimization을 시키지만 objective function이 non-convex이기 때문에x, y가 모두 미지수이기 때문) ALS를 사용할 때 더 효율이 좋은 케이스가 있다.
1. parallelization 즉, 병렬 처리 환경에서 좋은 성능을 보인다.
2. implicit data로 input이 주어진 경우이다.
ALS는 Y를 고정시키고 X를 optimize 한 다음, X를 고정시키고 Y를 optimize한 후 수렴할 때까지 반복한다.
*ALS with implicit feedback
ALS를 optimizer로 활용하는 목적함수는 기본적으로 explilcit feedback을 대상 데이터로 한 수식이다. 그래서 implicit feedback을 처리하는 접근방법이 제안되었다.
우선 한 user에 대한 item의 preference를 정의하자. 조회 횟수나 머무른 시간 등이 preference가 될 수 있다.
preference 값을 항상 신뢰할 수 없기에 confidence level을 같이 고려한다.
결론적인 objective function은 아래와 같이 정의된다.
'추천 시스템 > 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 |
BPR-MF(Bayesian Personalized Ranking MF) (0) | 2020.03.11 |