Matrix Factorization
- R을 X와 Y로 나누고 분해한 X와 Y를 곱해서 실제 빈 공간에 어떤 평점이겠구나 하는 예측을 하는 f 를 찾는 과정
- User - item matrix는 sparse 할 수 밖에 없음 , 채워져있는 관측 데이터를 사용해서 비어있는 것들을 채워 넣는 것이 주 개념
- 임의의 차원 수 f는 직접 정한다
- R(원래 rating matrix) 와 R`(예측 matrix) 가 서로 유사하도록 학습하는 과정
- 관측된 데이터만 사용
- True rating - predicted rating 으로 근사값을 추론하는 문제라고도 설명 가능
- predicted rating을 이용한 matrix completion 문제
- (stochastic) Gradient Descent, Alternating Least SQuare등을 최적화 하기위해 사용
- Loss function 최적화를 위해 사용
- 정보를 추가하여 모델링 할 수 있음
- Implicit feedback을 Matrix Factorization에 녹여낸다
- 단순 explicit(user가 단순히 아이템에 대해서 몇점을 줬는지 등의)이 아닌 implicit도 추가해서 전체 matrix를 가지고 matrix factorization을 푸는것이 특징
- Implicit feedback을 Matrix Factorization에 녹여낸다
Objective Function
- x_u,y_i : user와 item의 latent vector
- x_u^t * y_i : user 와 item의 latent vector를 가지고 이정도 평점이 되겠다 하는 predicted rating
- 결국 위의 두개의 값을 최소화하는 objective function을 푸는 것이 목적
- r_ui : user u가 item i에 부여한 실제 rating 값
- 람다 부분 : 정규화(regularization) -> 제한적인 학습데이터에 의존하는 overfitting을 피하기 위한 error term
- 유저 u와 아이템 i에 대해 대부분 sparse한 행렬이므로 이런 error term을 통해 관측된 데이터에만 집중하지 않게 좀더 generalize하게 latent factor를 학습시키는 방법으로 일부러 약간의 오차를 부여
- T : 트레이닝셋 -> 관측된 데이터만 사용할 것이므로 예를들면 user 1은 1,3,5 user 2는 2,4,6에서만 관측했다면 이런 부분들만 training에 넣어 object function에서 계산하겠다는 의미
Optimization
Stochastic Gradient Descent
- 학습데이터의 모든 rating을 훑는다 ( 모든 rating을 모두 업데이트)
- Error term
- 실제 평점과 예측 평점의 차이를 error항으로 정의
- e_ui = r_ui - x^T_i * y_u
- 현재에서 gradient 반대 방향으로 xu,yi를 update 한다
- x_u -> x_u + r(e_ui * y_i - 람다 *x_u)
- y_i -> +r(e_ui * x_u - 람다*,y_i)
- 구현이 쉽고, 계산이 빠르다
Alternating Lease Squares
- 일반적으로 x_u와 y_i를 둘 다 알 수 없는 경우가 많이 존재함(SGD를 적용 할 수 없는 경우)
- 그렇다면 loss function이 convex하지 않음
- convex 하다 = 최적해를 좀더 빠르고 정확하게 찾을 수 있다.
- x_u와 y_i를 둘 중 하나를 고정하고 식을 2차 식으로 최적화 문제를 풀 수 있다.
- x_u와 y_i를 번갈아 고정시키면서 , least-square(최소 제곱) 문제를 풀게 됨
- 병렬 처리에 사용할 수 있음 (둘 중 하나를 고정 시켰으므로)
- x_u와 y_i를 독립적으로 계산하기 때문에 병렬화 하는데 장점이 있다.
- implicit feedback 처리할 때 유리하다 ( 웬만하면 데이터들이 채워져 있음)
- Explication data에 비해 dense 하기에 연산량이 많아짐
- explicit 데이터는 일반적으로 비어있는 경우가 많아서 처리 할 것이 많음
- Explication data에 비해 dense 하기에 연산량이 많아짐
More on Matrix Factorization
- Adding bias
- 일부러 bias term(개별적 특성)을 주면서 모델이 우리가 가지고 있는 데이터의 특성을 많이 학습할 수 있도록 만듦
- user u와 item i 의 상호 관계 파악 (기존 방법)
- user u와 item i의 개별 특성을 함께 표현 하기 위해 bias term 을 추가
- Additional Input Sources
- behavior information 등 추가 정보를 활용한 모델링을 할 수 있음
- Temporal Dynamics
- 데이터를 시간의 변화에 따라 동적(dynamic)으로 반영하는 모델링
- t는 시간의 변화를 나타냄
- user u가 시간이 흐르면서 baseline rating을 변경한 경우
- 보통 4점을 줬으나, 최근 3점을 주기로 함
- Inputs with Varying Confidence Levels
- 데이터 (ex 평점)이 동일한 가중치 또는 신뢰도가 아닌 상황을 모델링
- 대규모 광고에 영향을 받은 item이 자주 선택되는 경우
- Implicit feedback 데이터에서 user가 실제로 선호하는지 판단하기 어려운 경우
- 몇 번 지속적으로 tv를 시청했는지, 몇 번 구매가 이루어 졌는지 등
Implicit과 Explicit Feed back 이란?
- Explicit
- 영화, 드라마 등 평점
- 상품 구메 후 상품 구매 후기, 평점
- Implicit
- 플랫폼에서 얻을 수 있는 데이터
- user u의 선호도, 취향을 정확히 파악할 수는 없으나 추론은 가능
- ex) 사용자의 로그 분석, 검색기록 ,클릭 여부, 웹페이지 스크롤, 머무르는 시간 ,실제 구매여부,장바구니
반응형
'Recomendation System' 카테고리의 다른 글
Latent Factor model (0) | 2023.03.07 |
---|---|
Association Rules + FP Growth (0) | 2023.03.07 |
추천 시스템 설계 구성안 (Tmall) (0) | 2022.09.22 |
Collaborative Filtering (0) | 2021.06.17 |