I hope everything is clear up to now. The next topic we're going to talk about is the taxonomy of recommender systems. Recommender algorithms can be first classified into two categories, personalized and non-personalized algorithms. With non-personalized recommendations, all users receive the same recommendations. Examples of non-personalized recommendations are the most popular movies, recent music hits, or the best rated hotels, for instance. With personalized recommendations, different users receive different recommendations. The focus of this course is on personalized recommendations, although we will use non-personalized recommendations as baselines. The goal of a personalized recommender is to make better recommendations than non-personalized techniques. Later on in the course, we will define how to measure if a recommendation is good or bad. Moreover, we will see that there are some scenarios in which non-personalized recommendations are still a good choice. For instance, if you recommend the most popular movies, by definition, you will recommend movies that most users like. Personalized recommendation techniques can be further categorized into a number of different categories. The most important being content-based filtering and collaborative filtering. The basic idea with content-based recommendations is to recommend items similar to the items the user liked in the past. For instance, if you like the movie Indiana Jones, the recommender system could recommend you other movies directed by the same director Steven Spielberg, or with the same main actor, Harrison Ford. As a second example, when you were looking at a page describing a product on the Amazon website, you receive recommendations listing products similar to the one you are looking at. Content-based filtering has been one of the first approach is used to build recommender systems. One important prerequisite for content based filtering to work is to have, for each product, a list of good quality attributes. We will see later in the course what makes an attribute a good attribute. Collaborative filtering techniques, on the contrary, do not require any item attribute to work, but rely on the opinions of a community of users. The first type of collaborative recommender invented was based on user-user similarities. The basic idea is to search for users with similar taste, that is, users sharing the same opinion on a number of items. As an example, if Paula and Suzy have the same opinion on many movies, it is likely that if Paula like Star Wars, Suzy will like Star Wars too. This idea seems reasonable, but we will see later in the course, but the user-user approach does not work always well. The second type of collaborative recommenders are based on item-item algorithms. Item-based collaborative filtering was first used by Amazon.com in 1998. The basic idea is to calculate the similarity between each pair of items according to how many users have the same opinions on the two items. For instance, if most users who like to Indiana Jones also like Star Wars, it is highly probable that a user who likes Indiana Jones will likely appreciate Star Wars. Nowadays, many commercial recommenders rely on item-item algorithms. Netflix used to organize a competition awarding the best algorithm for their recommender systems. During one of them, a new family of collaborative filtering algorithms has been invented based on a technique called matrix factorization, which is part of a more general family of algorithms called dimensionality reduction. Contrary to use-user and item-item algorithms, it is not easy to provide an intuitive explanation on how algorithms based on matrix factorization work. These algorithms will be described later in the course. We have seen that a user may have different opinions on the same item based on the context, such as the day of the week, the hour of the day, the mood of the user, and so on. Context-aware recommender systems, also known as CARS, extend collaborative filtering in order to be able to use the context and to improve the quality of recommendations. Modern algorithms are able to simultaneously use multiple heterogeneous sources of information in order to build hybrid recommender systems, that merge and improve the capabilities of content, collaborative and context-based techniques. These hybrid algorithms can be roughly considered as collaborative filtering techniques, in which users, items, and interactions are enriched with side information. For instance, we can build a recommender system for restaurants able to take into account the description of the restaurant, the comments written by the users, and the photos of the dishes served at the restaurant. In order to build hybrid algorithms, able to take advantage of side information, new techniques must be used, such as factorization machines or deep learning techniques. These techniques can also be used as collaborative filtering algorithms, but their main advantage is when used with contextual or other sources of side information.