def _udpate_item_features(self):
# Gibbs sampling for item features
for item_id in xrange(self.n_item):
indices = self.ratings_csc_[:, item_id].indices
features = self.user_features_[indices, :]
rating = self.ratings_csc_[:, item_id].data - self.mean_rating_
rating = np.reshape(rating, (rating.shape[0], 1))
covar = inv(self.alpha_item +
self.beta * np.dot(features.T, features))
lam = cholesky(covar)
temp = (self.beta * np.dot(features.T, rating) +
np.dot(self.alpha_item, self.mu_item))
mean = np.dot(covar, temp)
temp_feature = mean + np.dot(
lam, self.rand_state.randn(self.n_feature, 1))
self.item_features_[item_id, :] = temp_feature.ravel()
评论列表
文章目录