Replies: 1 comment 3 replies
-
Hey there @ananiask8. Thanks for opening this issue, this is a good topic. Having lightweight per-user models that work with little amounts of feedback is a nice goal to reach. I personally have limited experience applying these models. I/we implemented these models, without necessarily having put them in production. So you probably know more than we do here. My gut feeling though, is that there should features shared by users (e.g. age, gender, location, etc). These would allow you to diminish the cold start problem when facing new users.
What is missing in River that is preventing you from doing this? What would like to see added to River? I think it's sensible to warm-up a River offline, and then deploy. This basically boils down to calling |
Beta Was this translation helpful? Give feedback.
-
Overview
First, I wanted to ask about your experience in the small data regime when using River (e.g. each user has, on average, between 2 and 6 item ratings given, but each item has, on average, around 100 ratings). I'm concerned that doing only online might result in suboptimal representations; what do you think about having a full-fledged offline training with several epochs in order to get the most out of the available data, then deploying the model and learning in online mode? If both, users and items, could be expected to have about 50 ratings, then I think the issue would be mitigated, but I cannot expect that in my use-case — please share your thoughts about this.
Specific Problem
Assuming that the ratings are like/dislike, so 1/0, I can look at the prediction as a "probability of liking." At inference time, at time t, I have an item for which N users have liked and M users have disliked, and based on this I want to predict the probability of liking for the current user.
Current Approach
At the moment I am using River to learn user representations offline: I train with the data from one week ago until today (a few epochs), and today I am evaluating. Then, I do (sort-of) MLE (using scipy's optimize with SLSQP) to infer an item representation that maximizes the probability of liking for users which liked, and minimizes it for users who disliked, then I use this representation as item representation, to perform the probability of liking for the current user.
Potential Approach
I would like to use River out-of-the-box as much as possible. The first idea is to keep the offline training part, but replace the MLE part with River's online learning. The second idea is to replace the offline training part and do everything with River. I would appreciate your thoughts regarding if you think River can be used for the whole thing, given the concerns I have raised.
Beta Was this translation helpful? Give feedback.
All reactions