I want to build recommender system for following setup:

  1. I’ve got users U
  2. Each user U(i) has set of features Fu. Your most common ones – gender, age, country, interests etc.
  3. I’ve got collection of media posts M.
  4. Each media post has set of features Fm. Again common ones – categories, system-wide popularity etc.
  5. User interacts with system via home feed. Home feed is constantly rebuilding trying to match user interest based on his latest interactions as well as interactions of other users. Like in Pinterest.
  6. For the time being I’ve got only one possible interaction – whether user used media post. It means there is no usual like/dislike separations.
  7. So after some time (it may be just one interaction) I’ve got collection of media posts interacted by user MU.

What I want to get in the end is vector of ordered pairs where Rm is rank (how likely for user is to interact with this media post) and Mi is ID of some media post. So output is this ordered vector. Input is user vector – his features and interacted posts’ features.

I tried to use libfm but was stopped because it proposes to enter vector Y of answers to solve either classification or regression task. But in my scenario I don’t have classes or scores to be Y. It’s just vector of items for given user.

And also I spend some time thinking about SVD but I’m not sure how to build matrix for it and some sources proposed that Factorization Machines (libfm, see above) are better at handling large number of features.

I’m looking for already implemented algorithm in any available system or library. If you not sure about implemented version just simple pointers to algorithms are good too.

I’m expecting to have millions of items and hundreds thousands of users so matrix will be really high dimensional.

I’m gladly accepting any information.

Thanks, Artem.

  • $\begingroup$ You should look at LightFM and Field Aware FM if you are comfortable with standard factorisation machines (FM) $\endgroup$ – od320 Jul 3 '16 at 23:38
  • $\begingroup$ Hey, thanks for the answer. I did deep investigation of LibFm, but never heard of LightFM. I'll have a look at it. EDIT Whoa, it looks like your link to stuff called LibFM is completely different library. I was talking about libfm.org $\endgroup$ – Artem Koval Jul 5 '16 at 9:19
  • $\begingroup$ @od320 Please add your comment as answer for the question and I'll mark it resolved. In fact you answer resolved some of my problems and directed me right. $\endgroup$ – Artem Koval Aug 9 '16 at 14:30

Your Answer

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

Browse other questions tagged or ask your own question.