1. A method comprising: determining a set of item-item affinities between a first item and a first plurality of items from a set of user-item data; determining a first set of nearest neighbor items from the first plurality of items based in part on the set of item-item affinities; determining a set of user feature-item affinities between a second plurality of items and a set of user features; determining a second set of nearest neighbor items based at least in part on the set of user feature-item affinities; determining affinity weights for a set of candidate items, the set of candidate items to be determined at least in part on the first set of nearest neighbor items and the second set of nearest neighbor items; and presenting to a user as a recommendation a candidate item from the set of candidate items, the candidate item to be determined at least in part based on an affinity weight of the candidate item; wherein determining the set of item-item affinities between the first item and the first plurality of items comprises for each particular column of a user-item matrix, setting an item-item affinity between the first item and another item represented by the particular column equal to a cosine similarity between the particular column and a first column of the user-item matrix representing the first item; wherein said each particular column of the user-item matrix indicates multiple ratings that multiple users have given to an item represented by said each particular column; wherein determining the set of user feature-item affinities between the second plurality of items and the set of user features comprises performing least square regression relative to an equation involving both said user-item matrix and a user profile matrix that is separate from said user-item matrix; wherein each particular column of the user profile matrix corresponds to a different user feature of a plurality of user features; wherein all user features in said plurality of user features differ from all items represented by columns of said user-item matrix; wherein each particular row of said user profile matrix corresponds to a different user of a plurality of users; and wherein the method is performed by one or more computing devices programmed to be special purpose machines pursuant to program instructions.