1. A method for preparing a recommendation comprising: providing, in memory, a sparse unary ratings matrix from users' selected preferences, wherein each user's selected preferences are represented as unary data entries in the sparse unary ratings matrix, wherein each unary data entry has a value of either zero or one; banding by a data processing device the sparse unary ratings matrix, wherein bands of the sparse unary ratings matrix partition ratings by client; distributing the bands to a plurality of computing nodes, wherein the plurality of computing nodes generate from the bands respective output that together form a matrix of co-rates, wherein the matrix of co-rates includes either a pre-multiplication of the sparse unary ratings matrix by a transpose of the sparse unary ratings matrix or a post-multiplication of the sparse unary ratings matrix by the transpose of the sparse unary ratings matrix; forming in the data processing device a runtime recommendation model from the output of the plurality of computing nodes; determining in the data processing device a recommendation from the runtime recommendation model in response to a request from a user; and providing the recommendation to the user.