먼저 Alternative Least Squares(ALS)를 이해하기 위해서는 Matrix Factorization(MF)에 대해 어느정도 알고 있어야 가능하다. ALS는 MF와 같이 하나의 모델이 아니라 최적화하는 알고리즘 중 하나다. 우리의 목표는 Latent Factor Matrix를 찾는 것이며, 이를 위해 Loss Function 혹은 Cost Function이라는 하나의 '지표'를 선정한 후 최적화하는 방식으로 접근한다. 이때 최적화를 하는 방법은 Gradient Descent(GD), ALS 등 다양한 알고리즘이 존재하지만 여기에서는 ALS에 대해서만 다룰 것이다.
ALS를 제시한 논문에 따르면 분산처리 환경에서 GD보다 더욱 효과적이고, sparse matrix에 robust하면서, Implicit feedback Datasets에 특화된 알고리즘이라고 한다. ALS는 두 행렬을 한꺼번에 최적화시키는 것은 어렵기 때문에 둘 중 하나의 행렬을 상수로 설정한 후 나머지 하나의 행렬을 학습하고 번갈아가며 학습하는 형태이다. user matrix
기존의 Explicit Data의 loss function에서는
우리가 실제로 접하는 데이터는 대부분의 경우 sparse matrix이며, sparse matrix라는 것은 matrix 대부분의 값이 0이라는 것을 의미한다. ALS의 loss function은 변수가 두 개 존재하기에 각각의 편미분에 대해서 계산한 후 두 값을 통해 loss function을 최적화 한다. 먼저 사용자 행렬를 기준으로 설정한 후 loss function을 미분해보자.
-
-
-
-
여기서 우리는
우리가 궁금한 것은
지금까지 사용자 행렬에 대한 편미분에 대해서 계산해보았다. 사용자 행렬 뿐만 아니라 아이템 행렬에 대해서도 동일하게 적용이 가능하며 수식은 다음과 같다.
이 과정을 반복해 최적의
ALS 구현은 여기를 참고!