benfred / implicit

Fast Python Collaborative Filtering for Implicit Feedback Datasets
https://benfred.github.io/implicit/
MIT License
3.57k stars 612 forks source link

User Cold start problem #592

Open dubovikmaster opened 2 years ago

dubovikmaster commented 2 years ago

Please tell me how it is possible to solve the cold start problem for users within the CosineRecomender model? Let's say I have a user whose interactions were not in the training set. Need to retrain the model?

benfred commented 2 years ago

With the ItemItem models (CosineRecommender etc) - you don't need to retrain the model at all. The model learns an item-item similarity matrix, and when generating recommendations uses the 'user_items' parameter to look up the items the user has liked and for each item the user has liked, uses the stored item similarities to generate a set of recommendations. This means that as long as the users interactions are passed to the recommend function in the user_items parameter this should still work fine. This doesn't solve the general cold start case (ie, for a new user you might not have any interactions at all) - but should hopefully work for your use case.

For the Matrix Factorization models this isn't the case - but with the ALS model you can pass 'recalculate_user=True' to generate a new user embedding for the user on the fly, and still get recommendations.