Not my area, but I need a landing page to refer to for some layperson contacts of mine.
Recommender systems are a weird area. There have been some high profile examples of recommender models (e.g. the Netflix Prize) and they are clearly commercially important. At time of writing, though, there is relatively little material introducing them to wide audiences compared to say linear regressions and image classifiers and so on. I would like to refer to a simple and good introduction to the area, but I do not know one, so here is a scruffy word salad.
Starting from an overview by Javier we can find many approaches.
- Most Popular recommendations (the baseline)
- Item-User similarity based recommendations
- kNN Collaborative Filtering recommendations
- Gradient Boosting Machine based recommendations
- Non-Negative Matrix Factorization recommendations
- Factorization Machines (Rendle 2010)
- Field Aware Factorization Machines (Juan et al. 2016)
- Deep Learning based recommendations (Wide and Deep, Cheng et al. (2016))
- Neural Collaborative Filtering (He et al. 2017)
- Neural Graph Collaborative Filtering (Xiang Wang et al. 2019)
- Variational Autoencoders for Collaborative Filtering (Liang et al. 2018)
This is moving fast. I have the suspicion that the neural network methods are speciating at the moment. Also, filtering based on monitoring the brains of subjects is not mentioned (Davis III, Spapé, and Ruotsalo 2021).
Ben Lorica in Questioning the Efficacy of Neural Recommendation Systems interviews Paolo Cremonesi and Maurizio Ferrari Dacrema, who are the authors of some recent review papers (Dacrema, Cremonesi, and Jannach 2019; Dacrema et al. 2021).
(Cheng et al. 2016) feels overcomplicated, but at least it is documented, and comes with an implementation: jrzaurin/pytorch-widedeep: A flexible package to combine tabular data with text and images using Wide and Deep models in Pytorch. Note that the author of that package advises using gradient boosting machines to get this job done.
Cremonesi and Dacrema maintain reproduction code for several popular algorithms which is probably pedagogically useful.
This repository contains examples and best practices for building recommendation systems, provided as Jupyter notebooks. The examples detail our learnings on five key tasks:
- Prepare Data: Preparing and loading data for each recommender algorithm
- Model: Building models using various classical and deep learning recommender algorithms such as Alternating Least Squares (ALS) or eXtreme Deep Factorization Machines (xDeepFM).
- Evaluate: Evaluating algorithms with offline metrics
- Model Select and Optimize: Tuning and optimizing hyperparameters for recommender models
- Operationalize: Operationalizing models in a production environment on Azure
Vowpal wabbit can do recommendation extremely efficiently, but the manual has historically been famously abstruse. Now it is merely gruff. There are two tutorials in the documentation:
- Contextual Bandits Reinforcement Learning | Vowpal Wabbit
- Content Personalization with Contextual Bandits | Vowpal Wabbit