I would like to create a content recommendation system based on binary click data that also takes views into account.

What content a user has been exposed to, and therefore has the chance to click on, is currently biased by a rule based system that is not always documented. I do have view data (if a user saw the content on their screen, regardless of whether it was clicked.), and am wondering how to take this into account with a traditional matrix factorization recommendation system such as this item-item approach, or if there are other other better options.

Any suggestions for implementation in Python are a bonus!


I would not model the view data. You stated that is based on another rule-based system. If you try to model view data, you would be learning that rule-based system (not the preferences of the users). For example, if two users are both likely to view the item would just tell you about the existing system.

I suggest using just the click data. Given that a user viewed and clicked on an item, what other items are likely to be clicked on by a user.

Python has an Implicit package that implements several different popular recommendation algorithms for this type of data.

  • $\begingroup$ Thanks - that makes sense, but my concern is that if I model only the click data I will also be learning a (more noisy) version of the rule-based system. So I would like to "control" for the views in some way. $\endgroup$ – elz Jan 7 at 16:10
  • $\begingroup$ Another way to phrase "control" is conditional probability. Conditional probability is best handled by a Bayesian framework. Applying a Bayesian framework will increase the performance of the system. But by how much? And at what cost? I would build a simple end-to-end system with performance metrics. Then decide if I need to "control" for more stuff. Every model learns a noisy representation. Generally, a bit of noise in recommender systems is helpful. $\endgroup$ – Brian Spiering Jan 7 at 19:58
  • $\begingroup$ Can you give a specific example of how you might apply a Bayesian framework to a matrix factorization approach, or other standard implicit feedback approach? (That library looks great btw, thanks) $\endgroup$ – elz Jan 9 at 16:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.