Tools to build recommender systems

Recombee

Recombee is a Recommender as a Service with easy integration and Admin UI. It can be used in many domains, for example in media (VoD, news …), e-commerce, job boards, aggregators or classifieds. Basically, it can be used in any domain with a catalog of items that can be interacted by users. The users can interact with the items in many ways: for example view them, rate them, bookmark them, purchase them, etc. Both items and users can have various properties (metadata) that are also used by the recommendation models.

Here is the official tutorial series to get started.

Adobe Sensei

Exclusively for Magento Commerce merchants, Product Recommendations allow you to deliver more relevant experiences to every shopper. This capability is powered by Adobe Sensei and provides a direct way to increase the impact of digital merchandising efforts while reducing the manual work required to uncover meaningful product affinities.

Amazon Personalize

Amazon Personalize is a fully managed machine learning service that goes beyond rigid static rule based recommendation systems and trains, tunes, and deploys custom ML models to deliver highly customized recommendations to customers across industries such as retail and media and entertainment.

It covers 6 use-cases:

Popular Use-cases

Following are the hands-on tutorials:

  1. Data Science on AWS Workshop - Personalize Recommendationsp
  2. https://aws.amazon.com/blogs/machine-learning/creating-a-recommendation-engine-using-amazon-personalize/
  3. https://aws.amazon.com/blogs/machine-learning/omnichannel-personalization-with-amazon-personalize/
  4. https://aws.amazon.com/blogs/machine-learning/using-a-b-testing-to-measure-the-efficacy-of-recommendations-generated-by-amazon-personalize/

Also checkout these resources:

  1. https://www.youtube.com/playlist?list=PLN7ADELDRRhiQB9QkFiZolioeJZb3wqPE
Azure Personalizer

Azure Personalizer is a cloud-based API service that helps developers create rich, personalized experiences for each user of your app. It learns from customer's real-time behavior, and uses reinforcement learning to select the best item (action) based on collective behavior and reward scores across all users. Actions are the content items, such as news articles, specific movies, or products. It takes a list of items (e.g. list of drop-down choices) and their context (e.g. Report Name, User Name, Time Zone) as input and returns the ranked list of items for the given context. While doing that, it also allows feedback submission regarding the relevance and efficiency of the ranking results returned by the service. The feedback (reward score) can be automatically calculated and submitted to the service based on the given personalization use case.

You can use the Personalizer service to determine what product to suggest to shoppers or to figure out the optimal position for an advertisement. After the content is shown to the user, your application monitors the user's reaction and reports a reward score back to the Personalizer service. This ensures continuous improvement of the machine learning model, and Personalizer's ability to select the best content item based on the contextual information it receives.

Following are some of the interesting use cases of Azure Personalizer:

  1. Blog Recommender [Video tutorial, GitHub]
  2. Food Personalizer [Video tutorial, Slideshare, Code Blog]
  3. Coffee Personalizer [GitHub, Video tutorial]
  4. News Recommendation
  5. Movie Recommendation
  6. Product Recommendation
  7. Intent clarification & disambiguation: help your users have a better experience when their intent is not clear by providing an option that is personalized.
  8. Default suggestions for menus & options: have the bot suggest the most likely item in a personalized way as a first step, instead of presenting an impersonal menu or list of alternatives.
  9. Bot traits & tone: for bots that can vary tone, verbosity, and writing style, consider varying these traits.
  10. Notification & alert content: decide what text to use for alerts in order to engage users more.
  11. Notification & alert timing: have personalized learning of when to send notifications to users to engage them more.
  12. Dropdown Options - Different users of an application with manager privileges would see a list of reports that they can run. Before Personalizer was implemented, the list of dozens of reports was displayed in alphabetical order, requiring most of the managers to scroll through the lengthy list to find the report they needed. This created a poor user experience for daily users of the reporting system, making for a good use case for Personalizer. The tooling learned from the user behavior and began to rank frequently run reports on the top of the dropdown list. Frequently run reports would be different for different users, and would change over time for each manager as they get assigned to different projects. This is exactly the situation where Personalizer’s reward score-based learning models come into play.
  13. Projects in Timesheet - Every employee in the company logs a daily timesheet listing all of the projects the user is assigned to. It also lists other projects, such as overhead. Depending upon the employee project allocations, his or her timesheet table could have few to a couple of dozen active projects listed. Even though the employee is assigned to several projects, particularly at lead and manager levels, they don’t log time in more than 2 to 3 projects for a few weeks to months.
    1. Reward Score Calculation
Google Recommendation
Abacus.ai

It uses multi-objective, real-time recommendations models and provides 4 use-cases for fasttrack train-&-deploy process - Personalized recommendations, personalized search, related items and real-time feed recommendations.

Here is the hands-on video tutorial:

Nvidia Merlin

Merlin empowers data scientists, machine learning engineers, and researchers to build high-performing recommenders at scale. Merlin includes tools that democratize building deep learning recommenders by addressing common ETL, training, and inference challenges. Each stage of the Merlin pipeline is optimized to support hundreds of terabytes of data, all accessible through easy-to-use APIs. With Merlin, better predictions than traditional methods and increased click-through rates are within reach.

End-to-end recommender system architecture. FE: feature engineering; PP: preprocessing; ETL: extract-transform-load.
TFRS
Elliot

Elliot is a comprehensive recommendation framework that aims to run and reproduce an entire experimental pipeline by processing a simple configuration file. The framework loads, filters, and splits the data considering a vast set of strategies (13 splitting methods and 8 filtering approaches, from temporal training-test splitting to nested K-folds Cross-Validation). Elliot optimizes hyperparameters (51 strategies) for several recommendation algorithms (50), selects the best models, compares them with the baselines providing intra-model statistics, computes metrics (36) spanning from accuracy to beyond-accuracy, bias, and fairness, and conducts statistical analysis (Wilcoxon and Paired t-test). The aim is to provide the researchers with a tool to ease (and make them reproducible) all the experimental evaluation phases, from data reading to results collection.

RecBole

RecBole is developed based on Python and PyTorch for reproducing and developing recommendation algorithms in a unified, comprehensive and efficient framework for research purpose. It can be installed from pip, Conda and source, and easy to use. It includes 65 recommendation algorithms, covering four major categories: General Recommendation, Sequential Recommendation, Context-aware Recommendation, and Knowledge-based Recommendation, which can support the basic research in recommender systems.

Features:

  • General and extensible data structureWe deign general and extensible data structures to unify the formatting and usage of various recommendation datasets.
  • Comprehensive benchmark models and datasetsWe implement 65 commonly used recommendation algorithms, and provide the formatted copies of 28 recommendation datasets.
  • Efficient GPU-accelerated executionWe design many tailored strategies in the GPU environment to enhance the efficiency of our library.
  • Extensive and standard evaluation protocolsWe support a series of commonly used evaluation protocols or settings for testing and comparing recommendation algorithms.
Microsoft Recommenders

The Microsoft Recommenders repository is an open source collection of python utilities and Jupyter notebooks to help accelerate the process of designing, evaluating, and deploying recommender systems. The repository was initially formed by data scientists at Microsoft to consolidate common tools and best practices developed from working on recommender systems in various industry settings. The goal of the tools and notebooks is to show examples of how to effectively build, compare, and then deploy the best recommender solution for a given scenario. Contributions from the community have brought in new algorithm implementations and code examples covering multiple aspects of working with recommendation algorithms.

Surprise

Surprise is a Python scikit for building and analyzing recommender systems that deal with explicit rating data.

Surprise was designed with the following purposes in mind:

Spotlight

Spotlight uses PyTorch to build both deep and shallow recommender models. By providing both a slew of building blocks for loss functions (various pointwise and pairwise ranking losses), representations (shallow factorization representations, deep sequence models), and utilities for fetching (or generating) recommendation datasets, it aims to be a tool for rapid exploration and prototyping of new recommender models.

Here is a series of hands-on tutorials to get started.

Vowpal Wabbit

Vowpal Wabbit is an open source machine learning library, extensively used by industry, and is the first public terascale learning system. It provides fast, scalable machine learning and has unique capabilities such as learning to search, active learning, contextual memory, and extreme multiclass learning. It has a focus on reinforcement learning and provides production ready implementations of Contextual Bandit algorithms. It was developed originally at Yahoo! Research, and currently at Microsoft Research. Vowpal Wabbit sees significant innovation as a research to production vehicle for Microsoft Research.

For most applications, collaborative filtering yields satisfactory results for item recommendations; there are however several issues that arise that might make it difficult to scale up a recommender system.

  • The number of features can grow quite large, and given the usual sparsity of consumption datasets, collaborative filtering needs every single feature and datapoint available.
  • For new data points, the whole model has to be re-trained

Vowpal Wabbit’s matrix factorization capabilities can be used to build a recommender that is similar in spirit to collaborative filtering but that avoids the pitfalls that we mentioned before.

Following are the three introductory hands-on tutorials on building recommender systems with vowpal wabbit:

  1. Vowpal Wabbit Deep Dive - A Content-based Recommender System using Microsoft Recommender Library
  2. Simulating Content Personalization with Contextual Bandits
  3. Vowpal Wabbit, The Magic Recommender System!
DLRM

DLRM advances on other models by combining principles from both collaborative filtering and predictive analytics-based approaches, which enables it to work efficiently with production-scale data and provide state-of-art results.

In the DLRM model, categorical features are processed using embeddings, while continuous features are processed with a bottom multilayer perceptron (MLP). Then, second-order interactions of different features are computed explicitly. Finally, the results are processed with a top MLP and fed into a sigmoid function in order to give a probability of a click.

Following are the hands-on tutorials:

  1. https://nbviewer.jupyter.org/github/gotorehanahmad/Recommendation-Systems/blob/master/dlrm/dlrm_main.ipynb
  2. Training Facebook's DLRM on the digix dataset

References

Primary References

  1. https://elliot.readthedocs.io/en/latest/
  2. https://vowpalwabbit.org/index
  3. https://abacus.ai/user_eng
  4. https://azure.microsoft.com/en-in/services/cognitive-services/personalizer/
  5. https://aws.amazon.com/personalize/
  6. https://github.com/facebookresearch/dlrm
  7. https://www.tensorflow.org/recommenders
  8. https://magento.com/products/product-recommendations
  9. https://cloud.google.com/recommendations
  10. https://www.recombee.com/
  11. https://recbole.io/
  12. https://github.com/microsoft/recommenders
  13. http://surpriselib.com/
  14. https://github.com/maciejkula/spotlight

Other References

Vowpal Wabbit

  1. https://vowpalwabbit.org/tutorials/contextual_bandits
  2. https://github.com/VowpalWabbit/vowpal_wabbit/wiki
  3. https://vowpalwabbit.org/tutorials/cb_simulation
  4. https://vowpalwabbit.org/rlos/2021/projects
  5. https://vowpalwabbit.org/rlos/2020/projects
  6. https://getstream.io/blog/recommendations-activity-streams-vowpal-wabbit/
  7. https://samuel-guedj.medium.com/vowpal-wabbit-the-magic-58b7f1d8e39c
  8. https://vowpalwabbit.org/neurips2019/
  9. https://github.com/VowpalWabbit/neurips2019
  10. https://getstream.io/blog/introduction-contextual-bandits/
  11. https://www.youtube.com/watch?v=CeOcNK1xSSA&t=72s
  12. https://vowpalwabbit.org/blog/rlos-fest-2021
  13. https://github.com/VowpalWabbit/workshop
  14. https://github.com/VowpalWabbit/workshop/tree/master/aiNextCon2019

Azure Personalizer

  1. Blog post by Nasir Mirza. Azure Cognitive Services Personalizer: Part One. Oct, 2019.
  2. Blog post by Nasir Mirza. Azure Cognitive Services Personalizer: Part Two. Oct, 2019.
  3. Blog post by Nasir Mirza. Azure Cognitive Services Personalizer: Part Three. Dec, 2019.
  4. Microsoft Azure Personalizer Official Documentation. Oct, 2020.
  5. Personalizer demo.
  6. Official Page.
  7. Blog Post by Jake Wong. Get hands on with the Azure Personalizer API. Aug, 2019.
  8. Medium Post.
  9. Blog Post.
  10. Git Repo.

Abacus.ai

  1. https://youtu.be/7hTKL73f2yA
  2. Deep-Learning Based Recommendation Systems — Learning AI
  3. Evaluating Deep Learning Models with Abacus.AI – Recommendation Systems

Amazon Personalize

  1. https://aws.amazon.com/blogs/machine-learning/pioneering-personalized-user-experiences-at-stockx-with-amazon-personalize/
  2. https://aws.amazon.com/blogs/machine-learning/category/artificial-intelligence/amazon-personalize/
  3. https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Build_a_content-recommendation_engine_with_Amazon_Personalize_AIM304-R1.pdf
  4. https://aws.amazon.com/blogs/aws/amazon-personalize-real-time-personalization-and-recommendation-for-everyone/
  5. https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Accelerate_experimentation_with_personalization_models_AIM424-R1.pdf
  6. https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Personalized_user_engagement_with_machine_learning_AIM346-R1.pdf
  7. https://github.com/aws-samples/amazon-personalize-samples
  8. https://github.com/aws-samples/amazon-personalize-automated-retraining
  9. https://github.com/aws-samples/amazon-personalize-ingestion-pipeline
  10. https://github.com/aws-samples/amazon-personalize-monitor
  11. https://github.com/aws-samples/amazon-personalize-data-conversion-pipeline
  12. https://github.com/james-jory/segment-personalize-workshop
  13. https://github.com/aws-samples/amazon-personalize-samples/tree/master/next_steps/workshops/POC_in_a_box
  14. https://github.com/Imagination-Media/aws-personalize-magento2
  15. https://github.com/awslabs/amazon-personalize-optimizer-using-amazon-pinpoint-events
  16. https://github.com/aws-samples/amazon-personalize-with-aws-glue-sample-dataset
  17. https://github.com/awsdocs/amazon-personalize-developer-guide
  18. https://github.com/chrisking/NetflixPersonalize
  19. https://github.com/aws-samples/retail-demo-store
  20. https://github.com/aws-samples/personalize-data-science-sdk-workflow
  21. https://github.com/apac-ml-tfc/personalize-poc
  22. https://github.com/dalacan/personalize-batch-recommendations
  23. https://github.com/harunobukameda/Amazon-Personalize-Handson
  24. https://www.sagemakerworkshop.com/personalize/
  25. https://github.com/lmorri/vodpocinabox
  26. https://github.com/awslabs/unicornflix

DLRM

  1. https://www.youtube.com/watch?v=r9J3UZmddC4&t=966s
  2. https://www.youtube.com/watch?v=kTufCK76Yus&t=1436s
  3. https://www.youtube.com/watch?v=hY_XzglTkak&t=66s

Adobe Sensei

  1. https://business.adobe.com/lv/summit/2020/adobe-sensei-powers-magento-product-recommendations
  2. https://magento.com/products/product-recommendations
  3. https://docs.magento.com/user-guide/marketing/product-recommendations
  4. https://vod.webqem.com/detail/videos/magento-commerce/video/6195503645001/magento-commerce---product-recommendations?autoStart=true&page=1
  5. https://blog.adobe.com/en/publish/2020/11/23/new-ai-capabilities-for-magento-commerce-improve-retail#gs.yw6mtq

Google Recommender

  1. https://developers.google.com/recommender/docs/reference/rest
  2. https://www.youtube.com/watch?v=nY5U0uQZRyU&t=6s