machine-learningrecommendation-enginecollaborative-filtering

Collaborative Filtering adding new users and items


I'm working on building a recommendation engine for movies and have read a lot of good information that's out there. One thing I never see mentioned is how to make recommendations for new users and items. The normal process goes: I build my model and train it. I then input a user along with the top k recommendations I want returned for them.

Now, what if I want to do this for a user that was not in my initial sparse ratings matrix? If I have a sparse array of movie ratings for this new user, is there an easy way of incorporating it into the model without re-training the whole model again from scratch?

I know content-based filtering is used to solve the "cold-start" problem of CF. Is that my only option even if I have some ratings for this new user already?

Right now I am looking into Weighted Alternating Least Squares(WALS) and eventually I'll want to do this for SGD as well.


Solution

  • I think what you are looking for is the answer how to fold-in a new item/user for the matrix factorization collaborative filtering. And this was already discussed here: How can I handle new users/items in model generated by Spark ALS from MLlib? with places where to find example solutions (with some code examples). It's for Spark ALS implementation, but the main idea stays the same.