A recommender system is a type of information filtering system that uses historical ratings or preferences to predict and recommend items to users. Factorization machines are a type of recommender system that use matrix factorization to build the recommendation model. Recommender systems predict the rating a user would give an item. For example, an online movie streaming company might want to offer recommendations to its subscribers based on historical data and feedback. The customers (or users, in terms of the recommender system) provide feedback, or ratings, which the company then uses to recommend new items for the user to view. To maximize profit and user experience, the company needs to recommend items that the users are likely to enjoy. Recommender systems help evaluate the possible relationships between users and items to predict the rating a user would give an item. There are two major types of recommender systems: content filtering and collaborative filtering. In content filtering, there’s additional information about the items of the analysis, referred to as side information. For example, there might be additional information when recommending movies to users, such as the genre. One benefit of the additional information is that content filtering is able to estimate the rating of a new item that has no ratings in the system. In this course, we focus on collaborative filtering, which does not assume access to side information. As a result, this system is unable to estimate ratings for new items. The system uses only the rating given to items by its users. Therefore, the data in collaborative filtering is represented as a large sparse matrix with all possible users and items. Users represent the rows, and items represent the columns. The entries are the ratings for each user and item combination. For example, the first user gave item 2 a rating of 2, but the user did not rate item 3. The goal becomes to predict a rating for user 1 for item 3, and all the other missing entries of the matrix, in order to recommend highly rated items to users. Mathematically speaking, we want to impute the sparse entries of the matrix.