1
$\begingroup$

I'm tasked with building a recommender system that can make recommendations based on input data of varying levels of granularity. To explain what I mean, let's use a running example of a Movie Title Recommender.

Desired interface

Suppose I have a recommender system model, R, which is already defined and trained.

I want to be able to provide a single movie title, and get a ranked list of movie titles the models deems to be similar:

query = {'movie':'Shrek'} # input query

R(query) = ['A Bugs Life', 'Toy Story', 'Shrek 2'...] # ranked list of similar movies

I would also like to be able to optionally incorporate additional information, beyond just the movie title, which would somehow re-weight the recommendation scores.

For example, suppose I could optionally incorporate the gender of a user.

query = {'movie':'Shrek',
         'user_gender' : 'female'}  # query updated to specify user gender

# recommendation system takes gender into account, yielding different ordering in result
R(query) = ['Shrek 2', 'Finding Nemo', 'Toy Story', ...] 

Considerations

The specific method doesn't matter to me - whether it be a collaborative filtering, matrix factorization or some other approach. What I'm most interested in are methods that:

  • Are flexible, in the sense that it's easy to incorporate additional features (for example, If I'd like to weight recommendations by title genre, query time of day, etc).
  • Item-to-Item. The system I have in mind will be used to find items similar to other items, agnostic of users.
  • Space efficient. I do not want to keep track of a different model for each level of granularity of the query input, but rather reuse components of the model, and incorporate new components when optional information is provided.

If you know of any methods, papers or applications that you think could serve my purpose, please link it! Thanks.

$\endgroup$
0
$\begingroup$

If you are okay with using matrix factorization for the recommender problem, then you can incorporate other information by simply augmenting your matrix, i.e., instead of factoring the matrix

Users x titles

you would factor the matrix

Users x (titles + meta data)

where the first set of columns would all correspond to ranked movies and the second set would represent other meta data about each user.

$\endgroup$
  • 1
    $\begingroup$ Thanks. I would prefer an item-to-item flavor of recommender - as new users come on to my platform frequently, and I'm more interested in finding items that are similar to other items. $\endgroup$ – Timi Bennatan Nov 20 '18 at 14:00

Your Answer

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

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