1. Some materials are taken from machine learning course of Victor Kitov
Everyday people have to make decisions:
Multitude of choices
To filter out the seach people can rely on recommendations
These recommendations are too narrow and standard
Need automatic recommendation system!
A method of making automatic predictions about the interests of a user by collecting prefences or taste information from similar users
Intuition
Define similarity function on users: $s \in \mathbb{R}^{U \times U}$
Algorithm with level normalization:
$\bar{R}_u$ - adjustment to compensate average rating behaviour of u
Algorithm with level and scale normalization:
where $\sigma_u$ is standard deviation of user $u$ ratings
For each pair $(u,v)$ the intersection of rated items should be considered!
Pearson correlation $$ s_{uv} = \frac{\sum\limits_{i \in I_u\cap I_v} (R_{ui} - \bar{R}_u)(R_{vi} - \bar{R}_v)}{\sqrt{\sum\limits_{i \in I_u\cap I_v}(R_{ui} - \bar{R}_u)^2}\sqrt{\sum\limits_{i \in I_u\cap I_v}(R_{vi} - \bar{R}_v)^2}}$$
tends to give high similarity for users with few ratings
For item $i$ find a set of items similar to it and rated by user $u$: $N(i)$
Predict $R_{ui}$ by averaging over $N(i)$ $$ \hat{R}_{ui} = \frac{\sum_{j \in N(i)} s_{ij}R_{uj}}{\sum_{j \in N(i)} \left| s_{ij}\right|} \qquad (1)$$
When user is active - his ratings change
Due to possible precomputations, item-item becomes more efficient
For each user $u$ build a vector $p_u\in \mathbb{R}^{k}$ and for each item $i$ - a vector $q_i \in \mathbb{R}^{k}$ s.t.: $$ R_{ui} \approx p_u^\top q_i $$
Each matrix $X\in \mathbb{R}^{n \times d}$ with rank $r$ can be decomposed as $$ X = U \Sigma V^\top ,$$ where
Truncated SVD with rank $K$ $$ X \approx \hat{X} = U_k \Sigma_k V_k^\top ,$$ where
It turns out that $$ \hat{X} = \arg \min\limits_{A\in \mathbb{R}{n \times d}, rank(A) \leq k} \| X-A \|_{Frobenius} $$