MF에서 $p_u, q_i$ 가운데 하나를 상수로 고정하고 다른 하나로 least-square 문제를 풀어 가중치를 업데이트하는 방식
유저와 아이템 행렬을 번갈아가며 업데이트한다.
$p_u$나 $q_i$를 상수로 고정 ⇒ 목적 함수가 quadratic form이 된다.
⇒ convex(볼록)하기 때문에 Least Square 문제로 풀 수 있다.
Convex Optimization(볼록 최적화)
볼록 함수를 볼록 집합에서 최솟값을 찾는 수학적 최적화 문제
조건
선형 대수
잠재요인을 자동으로 찾는다
알고리즘을 따라가다보면 예측값을 알아서
행렬의 크기 = 잠재요인의 개수
transpose한 후 상수를 곱해버리기 때문에
ALS vs SGD
Sparse한 데이터에 대해 SGD보다 더 Robust하다.
행렬 인수분해를 통해 계산하는 MF → 계산 한계
ALS →
대용량 데이터를 병렬 처리하여 빠르게 학습 가능
행렬 단위 연산 가능
ALS 목적함수
$$ \tt \min {P, Q} \sum{\text {observed }r_{u,i}}\left(r_{u, i}-p_u^T q_i\right)^2+\lambda\left(\left\|p_u\right\|_2^2+\left\|q_i\right\|_2^2\right) $$
아래 수식을 사용해 $P,Q$를 번갈아가며 업데이트
$$ \begin{aligned}& 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\end{aligned} $$