Solved – Collaborative Filtering: How to update user vectors online

recommender-system

As the subject says:

How would one update user vectors online while having static item vectors? Run the learning step only on the user vectors? But that would still take too much time to be considered online I guess.

From Logistic Matrix Factorization for Implicit Feedback Data:

A common practice for collaborative filtering based recommender systems is to first learn a set of item vectors and then update user vectors more frequently in an online fashion while keeping the item vectors static. Recommendations can then be computed in real time by performing an approximate nearest neighbor (ANN) search over the space of item vectors in I. ANN search requires keeping a data structure such as a k-d tree or locality sensitive hashing (LSH) based trees in RAM. The size of these data
structures is proportional to both the number of items as well as the dimensionality of the latent factor vectors and so reducing the number of latent factors can greatly reduce the size of these objects.

Best Answer

Yes, it's probably referring to running the optimization for user vectors only.

Note that the paper you've referred to does alternating minimization in the user and item latent factors, so optimizing only the user factors is actually much faster than optimizing the full model.

Moreover, for fixed item factors, the objective separates across users; when you get a new signal from a user, you only have to retrain that user's latent vector, which should be quite fast and easily achievable online.

Related Question