Photograph
Daniel Kluver

about

blog

research

CV


contact

email

twitter

What is a recommender system

So this post will probably be short since I've got a lot going on this week. Hopefully next week I will have time for something a little more interesting. Failing that I will probably have some filler about the python programing language, which will be, if nothing else, different.

As part of the work related to some writing I've been working on, a colleague Michael Ekstrand of mine and I had an interesting discussion about "what is a recommender system?". Part of the problem we were trying to tackle is that many people focus too narrowly when imaging a recommender system. Many people think only about the algorithm when thinking about recommender systems and miss the important interface and human aspects of the system. This algorithm focus isn't unwarranted; the algorithm is where, historically, the most work has been needed. These systems live on the backs of their algorithm and in a world in which making automatic personalized recommendations is hard, focusing on that task is important. That said, I don't think that an algorithm is what should come to mind when we think recommender systems anymore.

This is the figure we came up with to describe a recommender system.

So what is a recommender system?

  • Users - users have preferences for items. The goal of the recommender system (in my mind) is to help them make better decisions about what items in the domain to consume, while simultaneously making the decision of what to consume easier.

  • Interfaces - users take actions in the context of a broader user interface. The key component of the user interface are the rating interfaces, which allow users to express their preferences for different items.

  • Preference dataset - The ratings of many users are collected into a common preference dataset. This must be stored securely, as item preferences are personal information and can be sensitive in some domains.

  • Algorithms - A lot of different techniques can be used to generate personalized output (predictions and recommendations). This has been the core of recommender system research for some time now.

  • Business logic - This part is positioned a little strangely in the diagram. Business logic tends to happen at all steps of the recommendation process, but is most noticeable in the output. Business logic refers to the many small tweaks and changes to predictions and personalized output that don't have much to do with being more accurate (or getting better recall, or whatever), but instead serve business goals or interface goals.

    For example, in a book recommender, a business logic rule might exclude recommendations for books that have a long wait list. Those books might be the best recommendations, but are not very helpful to the user since they are not likely to be available for a long time.

  • Output interface - How personalized output is shown will have a strong impact on how users interact with the recommender. This can be a very subtle part of the system to design as very little research has gone into what the "best" way to show a recommendation is, or what "best" is in this domain anyways. What little we know suggests that interfaces can be a very important part of the overall recommender system.

A few top notes that I think this diagram highlights:

  • People are part of the recommender system People are an important part of the recommender system and how they tend to behave has consequences on the rest of the system. It's easy to forget that sometimes when focusing only on the algorithm side of the recommender system.

  • A Recommender system is a cycle As can be seen from the arrows, a recommendation system represents a process by which data flows out of users, into an algorithm, where it is processed, and then flows back to the user. This cycle is important to remember, the way we make predictions and recommendations affects the data we get back. Every part of the system is essential to understand it as a whole.

  • Recommender systems are big There is a lot more going on in a recommender system than just the users and the algorithms. If anyone wants to build a recommender system you need to design all of the parts of the recommender, not just the algorithm.

This is still a work in progress, so please let me know what you think. If you have any comments feel free to contact me using email or twitter.