Recommender systems (or recommendation engines) are useful and interesting pieces of software. I wanted to compare recommender systems to each other but could not find a decent list, so here is the one I created. Please help me keep this post up-to-date by submitting corrections and additions via pull-request, or tweet me @grahamjenson.
SaaS Recommender systems have many challenges to their development including having to handle multi-tenancy, store and process a massive amount of data and other softer concerns like keeping a clients sensitive data safe on remote servers.
The benefits to using a SaaS recommender system is that you can pay for value with a low overhead rather than having a large upfront investment, they generally have a clear integration path for you to use, and they provide continual development and improvement while you use it.
The SaaS recommender systems are:
- SuggestGrid which is the successor of Rcmmndr. SuggestGrid is a generic recommendation system. It is based on Apache Spark but has many improvements over it.
- Mortar Recommendation Engine is a kind of do-it-yourself recommender system, where by using their PaaS Mortar and MongoDB there are instructions to create a recommender system.
- Peerius closed, product and e-commerce focused for live and email recommendations. Active and seems very interesting, although little information about the actual product and how it works is available.
- Strands is a closed, product and e-commerce focused system. I think it works by including tracking scripts (a la Google Analytics) on the website, and recommendations widgets. What I really like about Strands is their publishing of case-studies e.g. Wireless Emporium and white papers like The Big promise of recommender systems. Although these do not discuss the exact solutions provided, they give a good overview of their vision and goals of providing recommendations.
- SLI Systems Recommender A closed recommender system focused on e-commerce, search and mobile.
- Google Cloud Prediction API Googles offering of cloud computed prediction API
- Using Hadoop on Google Cloud an example use of Google cloud with benchmarks from recommender system.
- ParallelDots tool to relate published content
- Amazon Machine Learning machine learning platform to model data and create predictions
- Azure ML machine learning platform to model data and create predictions
- Gravity R&D is a company built by some of the winners from the 2009 Netflix prize. They offer a solution that provides targeted, customized recommendations to users of websites. They have some pretty big clients including DailyMotion and a technology page which describes their architecture, algorithms, and a list of publications. (suggested by Marton Vetes)
- GraphFlow provides is a user event analytics and recommendations API, with integration into the WooCommerce WordPress store plugin.
- Dressipi Style Advisor is a clothing specific recommendations service. It incorporates both expert domain knowledge and machine learning to find outfits for occasions or moods.
- Sajari is a search, recommendation and matching (e.g. dating website) service. On their site, they also have aggregated a bunch of useful data-sets.
- IBM Watson is available through Watson Developer Cloud, which provides REST APIs (Watson APIs on Bluemix) and SDKs that use cognitive computing to solve complex problems.
- Recombee provides REST API, SDKs for multiple languages and graphical user interface for evaluating results. Main features are real time model updates, easy to use query language for filtering and boosting according to complex business rules and advanced features such as options for getting diverse or rotated recommendations. Recombee offers instant account with 100k free recommendation requests per month.
Most of the non-SaaS recommender systems that are open-source. This may have been because recommender systems are more tailored to clients so not easily made into a product.
The open-source recommender systems are:
- PredictionIO is built on technologies Apache Spark, Apache HBase and Spray. It is a machine learning server that can be used to create a recommender system. The source can be located on github and it looks very active.
- Racoon Recommendation Engine is an open source Node.js based collaborative filter that uses Redis as a store. It is effectively abandoned.
- HapiGER is an open source Node.js collaborative filtering engine, which can use in-memory, PostgreSQL or rethinkdb. Reasonably active development (when I have time :)
- EasyRec Java and Rest based recommendations. Abandoned
- Mahout Hadoop/linear algebra based data mining
- Seldon is a Java based prediction engine built on technologies like Apache Spark. It provides a demo movie recommendations application here.
- LensKit is a Java based research recommender system designed for small-to-medium scale.
- Oryx v2 a large scale architecture for machine learning and prediction (suggested by Lorand)
- RecDB is a PostgreSQL extension to add recommendation algorithms like collaborative filtering directly into the database.
- Crab a python recommender based on the popular packages NumPy, SciPy, matplotlib. The main repository seems to be abandoned.
- predictoris a ruby recommender gem. This uses Jaccard or Sorenson-Dice coefficient to priovide both item centric e.g. "Users that read this book also read ..." and user centric e.g. "You read these 10 books, so you might also like to read ..." recommendations. Looks a bit neglected.
- RecSys. A Python recommender package aimed towards researchers and students. Various well known recommenders are built-in (nearest neighbors, SVD), and implementation of new prediction algorithms is made easy.
Not very many Non-SaaS Non-OpenSource recommender systems seem to exist. Below is a list:
- Dato is a company that provides a python package and servers for business machine learning including many predictive algorithms for recommendations. They also integrate with Apache Spark and have great blog posts like Why is building custom recommender systems hard? Does it have to be?. Their customers include Pandora and StumbleUpon, must be a good product.
Recommender systems are a very active area of research in academia, though few of the generated systems make it out of the lab. Here are a few I have found that did:
- Duine Framework a Java based recommendation system that has been abandoned
- MyMediaLite C# based in-memory recommender system that has been abandoned
- Bonus: List of Recommender System Dissertations, a useful list to keep up with the current state of recommendations systems in academia
- LibRec A Java based Recommendations engine with loads of implemented algorithms (suggested by Saúl Vargas)
- RankSys Java Recommendation system for novelty and diversity created by Saúl Vargas)
It is very difficult to benchmark recommender systems, not only because getting good datasets is hard, but different methods and algorithms have different advantages and disadvantages that are difficult to expose.
Here is a list of some benchmarking tools:
- TagRec Tag Recommender Benchmarking Framework
- RiVaL an open source toolkit for recommender system evaluation. Some results are posted here.
- Idomaar is a reference framework for recommender algorithm testing. It is developed in the framework of the CrowdRec project.
In addition to generic recommender systems, I decided to add a list of applications where recommendations are a core offering, specifically in the domain of media recommendations:
- Yeah, Nah Movie recommendations site based on GER source
- Jinni Movie recommendations site
- Gyde Streaming media recommendations
- TasteKid movies, books, music recommendations. sent to me by thelinuxlich
- Gnoosic music based on bands. sent to me by thelinuxlich
- Pandora music recommendations based on likes and dislikes or songs
- Practical Recommender Systems by Kim Falk (Manning Publications). Chapter 1