본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
Ch 06. Model-based Collaborative Filtering
Matrix Factorization
matrix factorziation에 대해 더 deep-down해서 들어가보자
-
R(원래 rating matrix)와 R∗(예측 matrix)이 서로 유사하도록 학습하는 과정
-
(true-rating - predicted rating)으로 근사값으로 추론하는 문제
- rui^(예측된 rating)=XuT×yi
-
predicted rating을 이용한 matrix completion 문제
-
(Stochastic) Grandient Descent, Alterning Least Square 등 사용
-
정보 추가하여 모델링 가능 (또 다른 특징)
- Explicit과 Impicit feedback을 Matrix Factorization 녹여냄
- ex) Explicit feedback: 사용자가 이 영화의 평점은 몇 점이다라고 자신의 취향 들어냄
- ex) Impicit feedback: 꼭 평점을 매기는 것이 아닌 간접적인 신호
Matrix Factorization - Objective Function
min∑(u,i∈T)(rui−xuTyi)2+λ(∣∣xu∣∣2+∣∣yi∣∣2)
-
(u,i∈T): user, item in Training Set
-
xuTyi: user와 item latent vector
-
rui: user u가 item i에 부여한 실제 rating 값
-
rui^=xuTyi: user u가 item i에 대해서 줄 예측 rating 값
-
λ(∣∣xu∣∣2+∣∣yi∣∣2): 정규화(regularization)
- 제한적인 학습데이터에 의존하는 overfitting을 피하기 위한 error term 사용
- 즉, 대부분 matrix factorization 문제 풀때 dense가 아닌 sparse matrix를 풀기 때문에 error term을 사용하여 관측된 rating에만 집중하지 않고 조금 더 일반적으로(general하게) latent factor를 학습하기 위함
- 일부러 오차를 부여한 것
Matrix Factorization - Optimization
Objective Function을 어떻게하면 최소화할 수 있을지 ➡️ 최적화 알고리즘 2가지
Stochastic Gradient Descent (경사하강법; SGD)
- 학습데이터의 모든 rating을 다 훑음
- Error term
- 실제 평점과 예측 평점의 차이를 error 항으로 정의
- eui=rui−XiTyu
- 현재에서 gradient의 반대 방향으로 xu,yi를 업데이트 (이 과정 속에서 위 최적화 함수를 minimize 하는 것)
- xu←xu+γ(eui⋅yi−λ⋅xu)
- yi←yi+γ(eui⋅xu−λ⋅yi)
- ex) 그 다음 xu를 구할 때 이전 값보다 더 작아졌다면 그 방향으로 움직이는 것
- 구현이 쉽고 계산 빠름
Alternating Least Square(ALS)
- 일반적으로 xu와 yi를 둘 다 알 수 없는 경우가 더 많이 존재
- 그렇다면 loss function이 convex하지 않음 ➡️ 최적해 찾기 어렵다!
- Convex 하다 = 최적해를 좀 더 빠르고 정확하게 찾기 가능
이를 방지하기 위해,
- xu와 yi 둘 중 하나를 고정하고 식을 quadratic(2차)식으로 변경하여 최적화 문제 풀기 가능
- xu와 yi를 번갈아 고정시키면서, least-square(최소제곱) 문제 풀게 됨
- 병렬처리에 용이
- xu와 yi를 독립적으로 계산(하나는 무시하기에)하기 때문에 병렬화하는데 장점이 있음
- Implicit feedback 처리에 유용
- Explication data에 비해 dense하기 때문에 연산량 많아짐 ➡️ 병렬 처리가 더 유리
- Explication data는 일반적으로 비어있는 sparse data인 경우가 많음 (user가 모든 item에 대해 다 평가를 하지 않기때문)
More on Matrix Factorization
1. Adding Bias
-
bias를 추가함으로써 모델이 현재 데이터에 조금 더 반영할 수 있도록 만들어 줌
-
rui^=xuT×yi ➡️ bui(bias) =μ+bi+bu ➡️ rui^=μ+bi+bu+xuTyi
-
User u와 Item i의 상호관계 파악 (기존 방법): u가 i에 대해 어떻게 생각하는지에 대한 내용만 포함
-
User u와 Item i의 개별 특성을 함께 표현하기 위해 bias term을 추가
min∑(u,i∈T)(rui−μ−bi−bu−xuTyi)2+λ(∣∣xu∣∣2+∣∣yi∣∣2+bi2+bu2)
- μ: 모든 item의 평균(e.g. 영화 ➡️ 모든 평점 평균)
- bi2: 전체 item 평균에 대한 item i의 편차 (전체 평균에서 얼만큼 떨어져있는지)
- bu2: 전체 user 평균에 대한 user u의 편차
- Behavior Information(행동 정보) 등 추가 정보를 활용한 모델링 가능
- ∑i∈N(u)yi: User u의 Item i에 대한 implicit feedback
- N(u): 전체 Item에 대한 User u의 implicit feedback
- ∑a∈A(a)xa: User u의 personal or non-item related information
- 성별, 나이, 주소(우편번호) 등
- 영화(예시)와 전혀 관련없는 정보들도 데이터화해서 넣어줌
rui^=μ+bi+bu+xuT[yi+∣N(u)∣−0.5∑a∈A(a)xa]
3. Temporal Dynamics(시간의 변화)
- 데이터를 시간의 변화에 따라 동적(dynamic)으로 반영하는 모델링
- t: 시간의 변화
rui(t)^=μ+bi(t)+bu(t)+xuTyi(t)
-
bi(t): Item i의 인기도가 시간의 흐름에 따라 변화하는 경우
- ex) 영화 타이타닉이 10년 전에는 엄청 인기를 끌었는데, 10년이 흐른 현재는 다른 영화때문에 인기도가 하락하는 것을 반영
-
bu(t): User u가 시간이 흐르면서 baseline rating을 변경한 경우
- ex) 보통 4점을 줬으나, 최근에는 3점을 주기 시작
-
xuTyi(t): 시간이 흐르면서 선호도(취향) 변화
- 데이터(e.g. 평점)가 동일한 가중치 또는 신뢰도가 아닌 상황을 모델링
- 대규모 광고에 영향을 받은 item이 자주 선택되는 경우
- Implicit feedback 데이터에서 user가 실제로 선호하는지 판단하기 어려운 경우에도 적용 가능
- 몇 번 지속적으로 tv를 시청했는지, 몇 번 구매가 이루어졌는지 등을 바탕으로 실제 데이터(평점)이 정말로 동일한 가중치를 받아야하는지 고려
min∑(u,i∈T)cui(rui−μ−bi−bu−xuTyi)2+λ(∣∣xu∣∣2+∣∣yi∣∣2+bi2+bu2)
- cui: rui에 대한 신뢰도(또는 가중치)를 부여하여 최적화
-
결국 Matrix Factorization(=Latent Factor Model)의 중요한 장점 중 하나는, Implicit feedback을 반영할 수 있고 Implicit feedback으로 Additional Information을 얻어 Latent Factor Model을 만듦 ➡️ 콘텐츠기반, 이웃기반 협업필터링에 비해 조금 더 성능 향상 가능
-
Collaborative Filtering for Implicit Feedback Datasets
- Implicit feedback을 가지고 Collaborative Filtering을 푸는데, 이때 Model-based Collaborative Filtering으로 matrix factorzation을 적용하면서 ALS 사용하는 것까지 논문에서 소개
- 실제 상황에서는 implicit feedback 데이터를 활용해야 하는 경우가 더 많음
- Implicit feedback을 활용하는 latent factor model과 그에 대한 학습 방법 제시하는 논문
Appendix
- Yifan Hu, et al. Collaborative Filtering for Implicit Feedback Datasets
- Korean, Y,m et al. (2009). Matrix factorization techniques for recommender systems. Computer, 42(8), 30-37