  A collaborative filtering recommender system predicts user preferences by
discovering common features among users and items. We implement such inference
using a Bayesian double feature allocation model, that is, a model for random
pairs of subsets. We use an Indian buffet process (IBP) to link users and items
to features. Here a feature is a subset of users and a matching subset of
items. By training feature-specific rating effects, we predict ratings. We use
MovieLens Data to demonstrate posterior inference in the model and prediction
of user preferences for unseen items compared to items they have previously
rated.
  Part of the implementation is a novel semi-consensus Monte Carlo method to
accomodate large numbers of users and items, as is typical for related
applications. The proposed approach implements parallel posterior sampling in
multiple shards of users while sharing item-related global parameters across
shards.
