Besides the actual preference estimation with a trained model on user data, we are facing the problem to present the results to users. We believe that it is always a good idea to explain why a model decided to recommend a movie to a user. In the most elementary form, we just score all movies and present the top-k selections as a list to the user. However, the movie with the highest score might not be always the best choice, since it also depends on the mood and many other things to decide what is the best item to watch (today).
In contrast to a streaming service, we are limited to the movies that will be aired in the next ~24 hours. But nevertheless, a grouping of items is still beneficial to assist users to pick the best match. The most basic choice is to use genres to group items, but on the other hand, the clustering is very coarse since ‘action’ has too many facets. In case of collaborative filtering, movies could be grouped by the proximity in the space of some learned factor model. This has the advantage that more semantic is captured, but the method requires lots of ratings and is therefore not always feasible. An alternative is to embed tags of movies, but this also requires lots of data and does not work for movies without tags.
Since all methods require extra meta data, we need to use directly the feature data of movies to learn the embedding. But since similarity can be highly subjective, it is not clear if a learned model is actually useful to assist a user to select an item with regards to the mood and other impressions. However, even if the groups do not fully capture those latent factors, a “semantic” re-arrangement will often help users to reduce the number of required decisions to pick the best match. For instance, if a user is in the mood for ‘zombies’ comparing only horror movies is much faster than comparing all recommended items.
Bottom line, with the rise of streaming services, users have access to a very large catalog of items and the ability to watch those items instantly. Thus, a service has to deliver good predictions what to watch next, but also to group those items because of the sheer amount of possible matches. So, the question is once all items are scored, how to aggregate the results to maximize the benefits for the user. This is clearly more a usability issue than a machine learning issue.