1. A method comprising: generating a ratings matrix including matrix values, each row of the ratings matrix identifying one of a plurality of users, each column of the ratings matrix identifying one of a plurality of items, and each of the matrix values corresponding to a known affinity rating describing a degree of affinity associated with one of the users and one of the items, wherein the ratings matrix includes a missing entry representing an unknown affinity rating; and generating, using one or more processors, a revised ratings matrix by factoring the ratings matrix into a user matrix and an item matrix, the revised ratings matrix being the product of the user matrix and the item matrix and including at least one entry representing a predicted affinity rating in place of the missing entry.