I'm novice in that matter but I was thinking about the formulation of a recommender system. Let's take the example of a movie recommendation system. We have a column dedicated to movies ID (or names), a matrix related to the rates the users gave to each movie, and a matrix with movie features (romance, drama, etc..)- joined a photo that shows this formulation. What about I would like to use users features to improve my recommendation? If I had information like age, profession, revenue of each user I would like to use it in my formulation. But if I include user features, this formulation is not Content-‐based neither Collaborative filtering anymore. Anyone knows what kind of formulation it can assume?
1 Answer
This is referred to as side information. This is used to enhance the recommender system.
A good library for collaborative filtering (and beginner friendly) is turicreate. Have a look at this link. o summarise, the traditional, basic matrix factorisation will encode user i and items j respectively as vectors $u_i$ and $v_j$ so that the predicted score that a user would give to the unseen item is:
$$ score(i,j) = u_i^T v_j $$
but you can have a more complex model that will also take into account idiosyncratic characteristics of both items and users:
$$ score(i,j) = u_i^T v_j + a^T x_i + b^T y_j $$
which increases the capacity of the model.
-
$\begingroup$ Thanks for you answer. I would like to use Python to modelate this problem, I'm not a math expert, but do you think I can "easily" use this library on Python? Do you know other libraires I can use to modelate this kind of problem? The only library I have used to modelate my ML problems was Sklearn. $\endgroup$– JaiceSep 28, 2020 at 14:18
-
$\begingroup$ I think it's the easiest one I have used so far, there is a minimal amount of work to setup a model (I would say 5-10 lines of code) and then you can build up form there. Have a look at this link. $\endgroup$ Sep 29, 2020 at 21:40