Task definition
I've been tasked to build a recommender system and I have to admit I'm a beginner in this field. Entities in my system are buyers and unique products that could be bought. You could imagine the product as an original of the painting - only one user could buy it and thus only one "rating/feedback" could be given to this product. Relation between users and products could look like this (1=product bought by user):
| - | product_1 | product_2 | product_3 | product_4 | product_5 | product_6 |
|---|---|---|---|---|---|---|
| user_1 | 1 | 0 | 0 | 1 | 0 | 0 |
| user_2 | 0 | 0 | 1 | 0 | 1 | 0 |
| user_3 | 0 | 1 | 0 | 0 | 0 | 0 |
| user_4 | 0 | 0 | 0 | 0 | 0 | 1 |
Both users and products could be defined by many features (dozens), for example:
- user -
proportion of products bought are paintings, ... - product -
is_painting,is_statue, ...
You could imagine the table of products bought to be pretty sparse -> many users and many products. Most of the users bought just a single product, but a few users bought plenty of products. I strongly believe users with highly correlated feature vectors are going to be focusing on products with similar feature vectors.
Problem I want to solve
I want to be able to provide the model a user_id and a list of products and get the most probable products bought by the user, so it's a scoring problem.
I struggle to define what technique should I actually apply to this. I feel content-based filtering it's not good for this problem because I don't have much historical data about a single user. Collaborative filtering is also questionable since there is no collaboration because products are always bought by a single user.
I would really appreciate your thoughts on how to approach this problem, what techniques, tools or frameworks you would utilize to solve this.