Recommendation System

Recommendation systems are defined by the ACM Recommender Systems conference as
software applications that aim to support users in their decision-making while interacting with large information spaces. They recommend items of interest to users based on preferences they have expressed, either explicitly or implicitly. The ever-expanding volume and increasing complexity of information on the Web has therefore made such systems essential tools for users in a variety of information seeking or e-commerce activities. Recommender systems help overcome the information overload problem by exposing users to the most interesting items, and by offering novelty, surprise, and relevance. Recommender technology is hence the central piece of the information seeking puzzle.
Recommendation is the process of mapping a user to a particular set of items. These items may be products (e.g. movies, books) or they may be people (e.g. find an expert, someone to follow). Within any data set, there are numerous such user-to-item mappings. Typical recommendation mappings exploit co-interest patterns (e.g. collaborative filtering) or they exploit item feature patterns (e.g. content-based recommendation). However, there is more to recommendation than what is generally understood. For one, there are as many user-to-item mappings as there are paths through the data. “Paths?” When your data is modeled as a graph, the graph traversal pattern can yield a plethora of different mappings—and this collection can be used to soothe the needs of your users as their moods and whims change.
Within a graph dataset such as the one diagrammed above, there are many types of recommendations that can occur. Examples include, but are not limited to:
- Recommend people to follow based on similar behavior.
- Recommend people to follow based on similar movie watching behavior.
- Recommend products based on shared features.
- Recommend movies to watch based on reading interests.
- Recommend songs to listen to that are related to these particular followed people.
- Recommend books or movies that are similar to songs listened to today.
Graph databases make recommendation systems easy to implement and incredibly fast to execute. With a graph database, there are numerous ways to move through a data set and moreover, to do it in milliseconds. Real-time recommendation is all about modeling your data as a graph (things and their relationships to each other), representing it in an efficient graph storage system (a graph database), and processing that graph to provide personalization to the users of your data (graph traversals).
Finally, if in your architecture you make use of a different database (e.g. relational database), then don’t worry about having to do a complete redesign of your system. In such situations, think of the graph database as an auxiliary graph engine. In this form, a graphical representation of your data can be maintained, synced, and exploited when needed for particular algorithms—for when real-time recommendations are needed.

If you are looking to add graph-based recommendation capabilities to your project, please feel free to contact me regarding hourly or project-based pricing.
