## 2 Background and Related Work  
### Collaborative Filtering  
There are currently many proposals for recommendation methods, most of which are based on collaborative filtering (CF). This approach consists of making predictions about the rating that a user would assign to an item from the ratings of other users who have similar preferences. It requires either implicit or explicit knowledge of user personal preferences for items in the form of ratings. Collaborative filtering methods can be classified into memory-based and model-based methods. Memory-based methods fall into the group of lazy learning methods, which do not require a training phase since the calculations needed to make recommendations are specific to the instance of recommendation at each particular time by using all the ratings available in the system. On the contrary, in model-based methods, recommendations are obtained from a model that has been induced prior to the recommendation time through a training phase. In the first group, the nearest neighbor algorithms are commonly used to compute the similarities between users or between items, in which case we can differentiate between user-based and item-based methods [5]. The last approach can be also used as a model-based schema since rating-based similarities between items can be computed before the recommendation time [6]. In this scenario, the active user is recommended items similar to those he/she previously rated positively. Item, rather than user, similarity models are used because the former are more stable over time than the latter. It is expected that new ratings given to items in large databases do not significantly change the similarity between them, while the change in user preferences is more noticeable. User-based collaborative filtering methods provide the active user with recommendations based on the ratings of his/her neighbors. Two users are neighbors if they have some items in common that they have rated with similar scores. Several metrics can be applied to computer user similarities, although the Pearson correlation coefficient and cosine similarity are the most frequently used due to good results. The ratings given to products by the nearest neighbors and similarity coefficients are used to predict the rating that a given user would assign to an item that he or she has not yet rated. The process is formally described as follows. Let \(U=\{u_{1},\,u_{2},\,.\,.\,.\,u_{m}\}\) be a set of \(m\) users and \(I=\{i_{1},\,i_{2},\,.\,.\,.\,i_{n}\}\) a set of \(n\) items, where each user \(u_{i}\) has a list of ratings that he has given to a set of items \(I_{ui}\), where \(I_{ui}\subseteq I\). The ratings are stored in a \(m\times n\) matrix called the rating matrix, where each element is the rating that a user \(u_{i}\) gives to an item \(i_{j}\). Given that users have not rated all the items, this matrix has some empty elements, in such a way that the fewer the number of rated items the sparser the matrix is. This can be a problem that is typical of collaborative filtering (CF) methods. If the number of ratings is high enough, recommendations can be made to the active user \(u_{a}\) by calculating the similarities with the other users in the system who have rated the same products. The Pearson correlation coefficient, \(\omega\)\((u_{a},u_{i}\,)\), can be used to compute the similarity between the active user \(u_{a}\) and another user \(u_{i}\). This coefficient evaluates the linear relationship between two variables and is obtained from its covariance according to Equation (1) [7].