Recomendation System

Matrix Factorization 적용 - SGD , ALS

판교데싸 2023. 3. 7. 17:53

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을 푸는것이 특징
      •  

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 데이터는 일반적으로 비어있는 경우가 많아서 처리 할 것이 많음

 

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
반응형