1. A computer-implemented method, comprising: obtaining a dataset representing a plurality of users, a plurality of items, and a plurality of ratings given to items by users; clustering the plurality of users into a plurality of user-groups such that at least one user belongs to more than one user-group; clustering the plurality of items into a plurality of item-groups such that at least one item belongs to more than one item-group; inducing a model describing a probabilistic relationship between the plurality of users, items, ratings, user-groups, and item-groups, the induced model defined by a plurality of model parameters; and predicting a rating of a user for an item using the induced model.