John Winn

Chapter 5

Making Recommendations

Whether you’re into music, books, films or video games, a good recommendation can be a real joy – and can help less well known works get into the spotlight. But what one person considers a new classic, another will write off as a dud. Can a model be used to understand what someone likes and dislikes well enough to provide tailored recommendations?

Retailers of all kinds are keen to make accurate, personalized recommendations to their customers. But developing an automatic recommendation system requires expertise and investment beyond the means of many retailers, especially smaller ones. Instead, such retailers can turn to the cloud and make use of online recommendation services.

In Microsoft, the Azure Machine Learning team wanted to make it easy for developers and data scientists to embed predictive analytics and machine learning into their applications. The team’s solution was a cloud-based platform for building and exploring analytics pipelines, constructed from a number of machine learning building blocks (Figure 5.1). Crucially, the platform also lets these pipelines be deployed as web services which can then be accessed from within an application. With high demand for automated recommendation, the Azure ML team wanted to have building blocks for making recommender systems, flexible enough to meet the needs of different customers.

Figure 5.1The goal: make it possible to construct customized recommendation services in Azure Machine Learning.

Potential customers had varying requirements that a recommender system needed to fulfill. Some wanted to make recommendations based solely on other items that a user has liked or disliked. Some had extra information about each item (such as the genre of a movie) that they wanted the system to take into account. Similarly, some had additional data about their users (such as age or gender) that they wanted to use to improve recommendations. Furthermore, while some user feedback came in the form of star ratings, other feedback systems only allowed users to like or dislike items. In addition, the items being recommended varied from traditional retail products like books and films, to restaurants and online services.

We needed to construct a model that could meet all of these requirements. In this chapter, we’ll show how to develop such a flexible model and how to use it to make personalised recommendations. As an example, we will be using movies as the items to make recommendations for, since these have been very well explored and there are freely available data sets of movie ratings. We will start with an initial model that can predict like or dislike and then extend it to meet the additional customer requirements mentioned above. The model that we will develop in this chapter is closely based on the Matchbox model of Stern et al. [2009].

You can recreate all results in this chapter using the companion source code [Diethe et al., 2019].


[Stern et al., 2009] Stern, D., Herbrich, R., and Graepel, T. (2009). Matchbox: Large Scale Bayesian Recommendations. In Proceedings of the 18th International World Wide Web Conference.

[Diethe et al., 2019] Diethe, T., Guiver, J., Zaykov, Y., Kats, D., Novikov, A., and Winn, J. (2019). Model-Based Machine Learning book, accompanying source code.