Latent factor models for CF
https://www.slideshare.net/sscdotopen/latent-factor-models-for-collaborative-filtering
목차
similarity-based neighborhood method의 단점
lack of bias correction
similarity measure의 선택이 실험에 의존한다.
latent factor models
idea
rating은 item을 구성하는 factor들에 의존할 것이다. 따라서 factor를 추론해 내겠다.
결국, user나 item의 feature를 구해내겠다는 말이고, latent vector = feature로 이해하면 무리 없을듯.
approach
user와 item을 각각 latent feature space의 vector하나(latent factors, latent feature vector)로 변환한다. $$ r_{ij} \approx m_j^T u_i $$ loss는 squared error씀.
이를 위해, rating matrix를 user feature matrix와 item feature matrix로 분해한다. $$ \mathbf{R} = \mathbf{U}\mathbf{M}^T $$ \(\mathbf{U}\)의 각 행은 user를 나타내고, \(\mathbf{M}\)의 각 행은 item을 나타낸다.
rating matrix가 sparse할 뿐 아니라, undefined인 곳도 많으므로 Lanczos method나 SVD는 쓸 수가 없다.
- a. 오직 알려진(known) 값만을 대상으로 loss(여기서는 squared error)를 최소화하는 user & item feature vector를 찾아야 함.
- b. reconstruction error가 아니라 unseen data에 대한 예측만으로 성능을 평가해야 함.
SGD이용해서 푼다. (이거 풀이 예제 볼 수 있는 곳이 있나?)
incorporating biases
문제 : 데이터는 highly biased. 예:어떤 유저는 다른이보다 점수가 후하다.
해결 : explicitly model biases
bias를 item bias, user bias모두 고려하게 만든다.$$b_{ij} = \mu + b_i + b_j $$
rating bias can be incorporated into the prediction. $$ \hat{r}_{ij} = \mu + b_i + b_j + m_j^T u_i $$
implicit feedback data is very different from explicit data
예를들어, 쇼핑몰에서 ‘클릭 수’를 사용한다면,
- matrix전체가 채워져 있다
- negative feedback이 없다(최소클릭수=0)
- user가 이 item자체를 볼 기회가 없었으면 그냥 0 ← 보고 클릭을 하지 않은 것과, 보지 못해서 클릭 0인것은 다르다.
SVD등을 사용하면 0에 biased된 결과를 얻는다.(그래서 실제로 쓸수가 없음)
해결책:
- weighted matrix factorization
$$ \begin{equation} f(U,M) = \left( \sum c(i,j) (p_{ij} - m_j^T u_i)^2 + \lambda(\sum \|u_i\|^2 + \sum\|m_j\|^2 \right) \end{equation}\\ \text{where} \quad p_{ij} = \begin{cases} 1 \quad & r_{ij} > 0 \\ 0 & r_{ij} = 0 \end{cases},\quad c(i,j) = 1 + \alpha r_{ij} $$ \(P\)는 preference matrix, \(c(i, j)\)는 confidence function.
(1)식에서 \(\|u_i\|^2 + \|m_j\|^2\)는 그냥 모델링의 방편인지, 이렇게 해야만 하는 필연적인 이유가 있는건지 궁금하다. 어디나 다 이렇게 하니까 걍 하기는 한다만. 대강 느낌(?)상으로는 추상성을 획득하기 위해서(=overfitting을 막기 위해서) 지나치게 희한한(?) 해가 나오지 않도록 강제하는 듯 보임.
reference에 이거 있는데 시간나면.... 그러니까 결국 영원히 안읽겠지. 넷플릭스 대회 3위한 사람이 쓴건가보다.
읽었네. 왠일로.
글 세개가 연재이고 링크가 세번째[1]다. 첫번째[2], 두번째[3]는 걍 잡담임.
이 글에서 자신의 알고리즘을 공개하고 있다.
(cont.)
- ↑ http://sifter.org/~simon/journal/20061211.html Monday, December 11, 2006
- ↑ http://sifter.org/~simon/journal/20061027.2.html Friday, October 27, 2006
- ↑ http://sifter.org/~simon/journal/20061102.1.html Thursday, November 02, 2006