Latent Factor Model (feat. 협업 필터링, SGD, ALS)
행렬 분해를 통해서 Latent Factor를 학습하고 학습을 통해 가장 현실과 근접한 값을 뽑아줌
# 행렬분해를 나타내는 SVD는 아래 사이트 설명 참고
https://nowksu.tistory.com/manage/newpost/49?type=post&returnURL=https%3A%2F%2Fnowksu.tistory.com%2Fmanage%2Fposts%2F
https://nowksu.tistory.com/manage/newpost/49?type=post&returnURL=https%3A%2F%2Fnowksu.tistory.com%2Fmanage%2Fposts%2F
nowksu.tistory.com
- 잠재적인 특징을 가지고 있는 모델이라고 직관적으로 생각
- 사용자/아이템 특성을 벡터로 간략화(요약)하는 모델링
- 사용자/아이템의 특성만을 가지고 관계 파악이 아니라 이를 간략화 하여 모델링에 사용함
- 사용자/아이템 행렬에서 사용자와 아이템을 factor로 나타내는 방법
- 사용자와 아이템이 같은 vector 공간에 표현 ***
- 사용자와 아이템을 모르는 차원에 표현. 몇 개의 차원인지는 모름
- 같은 vector 공간에서 사용자와 아이템이 얼마나 유사한지 (모델이 평가한 기준)
예시) 영화 및 사람 data
- 차원 안에 사람과 영화 정보를 같이 표현하며, 모델링 시 loss를 분석하여 오차를 최소해 나감.
- Latent Factor Model을 구현하는 방법 (예시)
ㄱ. P는 유저에 대한 행렬 요소
ㄴ. Q는 영화에 대한 행렬 요소
ㄷ. K는 latent factor (SVD 설명 참고)
ㄹ. 이를 통해서 Sparse한 데이터 예측하여(R') 기존의 R과 근사해 과는 과정이 목표
ㅁ. 임의의 차원 수 f (latent factor)는 직접 정한다
ㅅ. predicted rating을 구하는 아래 식을 통해 R'의 값을 예측해 나감(X는 user x latent factor , Y는 K x latent factor)
- Matrix Factorization - Objective Function
ㄱ. Xu와 Yi는 user와 item latent vector
ㄴ. rui는 실제 rating 값, Xtuyi는 예측 rating 값
ㄷ. 추가적인 뒤에 식은 정규화를 시켜준 것. 항상 Dense한 데이터가 있는게 아니라 sparse한 데이터가
대부분이기 때문
- Matrix Factorization - Optimization (SGD, ALS)
ㄱ. 실제 평점과 예측 평점의 차이를 error항으로 정의
ㄴ. SGD 등의 최적화 방법을 통해 Xu와 Yi를 Update
ㄷ. 일반적으로 Xu와 Yi를 둘 다 알 수 없는 경우가 많이 존재 -> loss function이 convex하지 않다.
(최적해를 빠르게 못찾는다)
ㄹ. Alternating Least Squares (ALS) 를 활용하여 Xu와 Yi를 번갈아 고정시키면서 (2차식) 최소제곱 문제를 풀게 됨
-> 병렬처리에 사용 가능
ㅁ. Implicit feedback을 처리할 때 유리 (좀 더 dense하기 때문에 계산하는데 더 오래걸림)
############### 심화
- Matrix Factorization - Objective Function에 bias를 추가 할 수 도 있음
rui는 실제 xtuyi는 예측 값, 람다는 오버피팅 방지를 위해, 평균 및 바이어스는 좀 더 세부적인 특징까지 고려
- Matrix Factorization - Objective Function (추가 정보를 넣어줄 때)
- Matrix Factorization - Objective Function (추가 정보를 넣어줄 때)
- Matrix Factorization - Temporal Dynamic (시간의 변화에 따라..)
- Matrix Factorization - 신뢰도 기반 (inputs with Varying Confidence Levels)
##### 실제 상황에서는 implicit 데이터를 활용해야 되는 경우가 더 많다.
Collaborative filtering for implict feedback datasets 논문 참고하면 좋을 것 (latent factor model 활용)