I am building an item-based collaborative filter recommendation system. I have a matrix of users and items, which in this case, are products that were either bought or not (i.e., binary: 1 or 0). I can build an item-based CF out of this co-occurrence/association matrix (note: this is not a matrix of product ratings (15)).

I would also like to add information on "demographics" (location, browser type, device type, etc.) to my recommender to improve the recommendations, especially for people new to the site. Is it possible to just binarize the demographic variables, treat them like new items (i.e., not different than a product), and then add them as new columns in the occurrence matrix? In other words: {user_1: {product_22: 1, product_38: 1, browser_firefox: 1, California: 1, etc}.

I want to either use this matrix (with both products and demographic information for items) to obtain measures of item-similarity (e.g., how similar is product1 to product2; firefox_browser to product1) that can be used for recommendations. I may also want apply matrix factorization on this matrix.

It strikes me that this is a sensible approach but I haven't been able to find documentation on anyone adding demographics to their recommender in such a simple way. Any thoughts?

Thanks for any help!

  • $\begingroup$ You may find this paper interesting: jstatsoft.org/article/view/v039i12, while it does not answer directly to your needs it describes something very similar. $\endgroup$
    – Tim
    Oct 27, 2016 at 11:06

1 Answer 1


I had a similar question/problem and got an answer here - How to integrate users' profile information into a recommender system . The simplest solution is to use kNN method - find the closest neighbors using your demographic data and infer recommendations from their ratings

A somewhat more profound technique is to use model-based approach ( matrix factorization method ) where you can put all your data in the model. THis may help - Matrix Factorization algorithms for Recommender Systems

  • 1
    $\begingroup$ This is a very shallow reply and doesn't answer the question at all. $\endgroup$
    – SmallChess
    Jun 14, 2016 at 12:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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