1. A method of preparing a user recommendation comprising: generating, in memory, a sparse unary ratings matrix from users' selected preferences, wherein each user's selected preferences are represented as unary data entries in said sparse unary ratings matrix, wherein each unary data entry has a value of either zero or one; forming in at least one data processing device a plurality of data structures representing said sparse unary ratings matrix, wherein the plurality of data structures includes a matrix of co-rates, and 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 at least one data processing device a runtime recommendation model from said plurality of data structures; determining in the at least one data processing device a recommendation from said runtime recommendation model in response to a request for a recommendation; and providing said recommendation in response to said request.