I want to build recommender system for following setup:
- I’ve got users U
- Each user U(i) has set of features Fu. Your most common ones – gender, age, country, interests etc.
- I’ve got collection of media posts M.
- Each media post has set of features Fm. Again common ones – categories, system-wide popularity etc.
- 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.
- 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.
- 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.