1. A method for determining a recommendation comprising: banding into bands, by a data processing device, a sparse unary ratings matrix having unary data values representing clients' ratings, wherein the bands of the sparse unary ratings matrix partition the ratings by client; distributing the bands to a plurality of computing nodes; receiving respective output from the plurality of computing nodes, the received output together forming 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 received 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; and generating a recommendation output representative of the recommendation.