def _update_user_features(self):
# Gibbs sampling for user features
for user_id in xrange(self.n_user):
indices = self.ratings_csr_[user_id, :].indices
features = self.item_features_[indices, :]
rating = self.ratings_csr_[user_id, :].data - self.mean_rating_
rating = np.reshape(rating, (rating.shape[0], 1))
covar = inv(
self.alpha_user + self.beta * np.dot(features.T, features))
lam = cholesky(covar)
# aplha * sum(V_j * R_ij) + LAMBDA_U * mu_u
temp = (self.beta * np.dot(features.T, rating) +
np.dot(self.alpha_user, self.mu_user))
# mu_i_star
mean = np.dot(covar, temp)
temp_feature = mean + np.dot(
lam, self.rand_state.randn(self.n_feature, 1))
self.user_features_[user_id, :] = temp_feature.ravel()
评论列表
文章目录