Introduction

이전 포스팅을 통해, Matrix Factorization의 기본 개념에 대해 알아보았다면, 이번에는 응용 및 확장성에 대해 소개하도록 하겠습니다. 이번 글 역시 Koren, Y., Bell, R., & Volinsky, C. (2009). Matrix factorization techniques for recommender systems. Computer, 42(8), 30-37 논문을 참조했습니다.

  1. Adding Bias
  2. Additional Input Sources
  3. Temporal Dynamics
  4. Inputs with Varying Confidence Levels

Advanced Matrix Factorization

1. Adding Bias

Matrix Factorization의 장점 중 하나는 데이터의 다양한 관점을 고려할 수 있다는 점입니다.

$$
\Large\begin{aligned}
\hat{r_{ui}} = q_{i}^{\intercal}p_{u}
\end{aligned}
$$

  • $$p_{u}, q_{i} \in \mathbb{R}^f$$ : User, Item Latent Matrix의 벡터
  • $$\hat{r_{ui}}$$ : 유저 u의 아이템 i 선호도 추정값

가장 기본적으로 User-Item Matrix의 유저 u의 아이템 i에 대한 선호도를 유저와 아이템의 상호관계로 위와 같이 표현할 수 있지만, 아래와 같이 유저와 아이템 자체의 특성(bias 또는 intercept로 명칭)과 함께 표현할 수 있습니다.

$$
\Large\begin{aligned}
\hat{r_{ui}} = \mu + b_{i} + b_{u} + q_{i}^{\intercal}p_{u}
\end{aligned}
$$

$$
\large\begin{aligned}
\min_{q^, p^, b^*}\sum_{(u,i)\in K}(r_{ui} - \mu - b_{i} - b_{u} - q_{i}^{\intercal}p_{u})^2 + \lambda(|q_{i}|^2 + |p_{u}|^2 + b_{i}^2 + b_{u}^2)
\end{aligned}
$$

  • $$\mu$$ : 모든 평점의 평균
  • $$b_{i}$$ : 전체 영화의 평균에 대한 아이템 i의 편차
  • $$b_{u}$$ : 전체 유저의 평균에 대한 유저 u의 편차

예를 들면, Joe의 Titanic에 대한 점수(3.9)를 다음과 같이 표현할 수 있습니다.

3.9 = 3.7(모든 평점 평균) + 0.5(영화 관점에서, Titanic의 0.5정도의 우위) - 0.3(유저 관점에서, Joe가 0.3정도 평균적으로 점수를 낮게 줌)

2. Additional Input Sources

Cold start 상황에서 Matrix Factorization은 구매, 검색 기록과 같은 행동 정보(behavioral information) 또는 인구 통계와 같은 추가적인 데이터 소스를 함께 사용할 수 있습니다.

간단하게 Boolean Implicit Feedback을 예를 들어보면, $$N(u)$$는 유저 u의 Implicit Feedback의 아이템 집합일 때, Matrix Factorization은 이 정보를 활용하여 유저를 프로파일링 할 수 있습니다.

  • $$\displaystyle \sum_{i \in N(u)}x_{i}$$ : 유저 u가 아이템 i에 대한 Implicit Feedback
  • $$\displaystyle|N(u)|^{-0.5}\sum_{i \in N(u)}x_{i}$$ : Nomaliazed Implicit Feedback

또는, 유저 u의 인구 통계학 정보도 표현할 수 있습니다.

  • $$\displaystyle \sum_{a \in A(u)}y_{a}$$ : 유저 u의 정보(성별, 연령, ...)

이러한 추가적인 데이터 소스를 통해 유저 u에 대한 아이템 i의 선호도를 다음과 같이 종합적으로 나타냅니다.

$$
\large\begin{aligned}
\hat{r_{ui}} = \mu + b_{i} + b_{u} + q_{i}^{\intercal}[p_{u} + |N(u)|^{-0.5}\sum_{i \in N(u)}x_{i} + \sum_{a \in A(u)}y_{a}]
\end{aligned}
$$

3. Temporal Dynamics

지금까지 본 내용은 사실 정적(static)인 모델이였지만, 실생활에서는 상품인식과 인기는 시간에 따라 변화하는 요소입니다. Matrix Factorization은 아래의 식으로 유저-아이템 상호작용에 대해 동적(dynamic)이고 시간 변화를 나타낼 수 있습니다.
$$
\Large\begin{aligned}
\hat{r_{ui}}(t) = \mu + b_{i}(t) + b_{u}(t) + q_{i}^{\intercal}p_{u}(t)
\end{aligned}
$$

각 시간적 변화는 다음과 같은 예시를 볼 수 있습니다.

  • $$b_{i}(t)$$ : 영화의 인지도는 해당 작품의 배우가 다른 영화에 출현하는 시기에 갑자기 영향을 받는 경우
  • $$b_{u}(t)$$ : 유저의 평가 기본 점수가 과거에는 3점이였다가 어느 순간 4점으로 바뀌는 경우
  • $$q_{i}^{\intercal}p_{u}(t)$$ : 유저의 선호 영화 장르의 변화

4. Inputs with Varying Confidence Levels

종종, 모든 관측된 선호도(또는 평가, rating)가 동일한 가중치(weight) 또는 신뢰도(confidence)를 갖지 않을 수도 있습니다.
예를 들면, 대규모 광고로 인한 특정 상품에 쏠리는 선호도라던지 의도적으로 특정 상품에 대해 선호도를 낮추려는 적대적인 유저가 존재하는 경우도 있습니다.
또 다른 예시로, 상품 구매 여부(1/0)으로 나타낸 Implicit Feedback의 경우 상품 구매 이력이 있다고 해서 선호한다고 할 수 없습니다. 이런 경우, 상품을 몇 번 구매 횟수를 통해 신뢰도를 부여할 수 있습니다.
즉, **유저 u의 아이템 i에 대한 $$r_{ui}$$선호도에 신뢰도 $$c_{ui}$$**를 통해, 아래와 같이 loss function을 나타냅니다.

$$
\large\begin{aligned}
\min_{q^, p^, b^*}\sum_{(u,i)\in K}c_{ui}(r_{ui} - \mu - b_{i} - b_{u} - q_{i}^{\intercal}p_{u})^2 + \lambda(|q_{i}|^2 + |p_{u}|^2 + b_{i}^2 + b_{u}^2)
\end{aligned}
$$

Summing up

Matrix Factorization은 다음과 같이 확장시켜 응용할 수 있습니다.

  • User-Item Matrix + 유저/아이템 각각의 특성을 반영
  • User-Item Matrix + 추가적인 데이터 소스(과거 구매이력, 인구 통계학적 정보, 등...)
  • User-Item Matrix + 시간적 정보
  • User-Item Matrix + 유저/아이템의 신뢰도 정보
profile
하고 싶은 것이 많기에, 앞으로 할 수 있는 일들이 더 많은 Data Scientist

1개의 댓글

comment-user-thumbnail
2020년 9월 8일

어려운 주제인데 쉽게 풀어주셔서 감사합니다.

답글 달기