# How do I choose the initial features vectors for a Stochastic Gradient Descent trained SVD++ algorithm?

I'm reading the SVD++ Netflix Recommender Systems paper because I want to be able to properly assess this approach to building a recommender system.

How should I choose the initial values of $q_i$ and $p_u$ in the SGD equation below (and why is the proposed initialization technique expected to yield a faster convergence rate)?

• $e_{ui}$ is the associated prediction error
• $q_i^T\cdot p_u$ yields a rating prediction from user $u$ to item $i$
• $r_{ui}$ is a known user to item ranking from user $u$ to item $i$
• $p_u$ is user $u$'s latent factors vector
• $q_i$ is item $i$'s latent factors vector
• $\gamma$ is the learning rate constant
• $\lambda$ is also a constant value

$$e_{ui} := r_{ui} - q^T_i\cdot p_u$$ $$q_i \leftarrow q_i + \gamma\cdot(e_{ui}\cdot p_u - \lambda\cdot q_i)$$ $$p_u \leftarrow p_u + \gamma\cdot(e_{ui}\cdot q_i - \lambda\cdot p_u)$$

The above calculations are run iteratively until convergence upon a minimized $e_{ui}$ value.

Initial values of $q_i$ and $p_u$ are just random values. Since they represent unknown latent factors, it is not possible to choose them in some predefined meaningful way to accelerate convergence.