1. A computer-implemented method of predicting a user behavior with respect to an item, the method comprising: arranging a memory to store a factor graph specifying a bi-linear collaborative filtering model, wherein the factor graph is updated based on: one or more latent user traits, the latent user traits including one or more demographic traits; one or more latent item traits, the latent item traits including one or more product feature descriptions or service feature descriptions; and a determination of an inner product of at least one latent user trait and at least one latent item trait, the factor graph comprising a plurality of probability distributions representing belief about the one or more latent user traits and the one or more latent item traits of the bi-linear collaborative filtering model; predicting the user behavior with respect to a plurality of different user and item pairs by arranging a first processor to apply an inference process to the factor graph; recommending, via an output, at least one of the plurality of items to the user based at least in part on the predicted user behavior; and updating a variance of the plurality of probability distributions based at least in part on actual user behavior.