All the tutorials I can find about matrix factorization recommendation systems start with importing users, items, and user-item-ratings, but then only use the rating matrix to train the recommender (not features of the users or items themselves like "age").
Tutorial: Matrix Factorization for Movie Recommendations in Python
Then we proceed to to only use the matrix built from ratings (not other features of the user like age which I might guess has some predictive value).
# normalize data import numpy as np R = R_df.as_matrix() user_ratings_mean = np.mean(R, axis=1) R_demeaned = R - user_ratings_mean.reshape(-1,1) # import numpy as np R = R_df.as_matrix() user_ratings_mean = np.mean(R, axis=1) R_demeaned = R - user_ratings_mean.reshape(-1,1) # SVD import scipy from scipy.sparse.linalg import svds U, sigma, Vt = svds(R_demeaned, k=2) # convert to diagonal matrix sigma2 = np.diag(sigma) # build predication matrix all_user_predicted_ratings = np.dot(np.dot(U, sigma2), Vt) + user_ratings_mean.reshape(-1, 1) preds_df = pd.DataFrame(all_user_predicted_ratings, columns = R_df.columns, dtype='float')
Theres more in the tutorial but at this point our predication matrix is already set.
I wondered if this is just how matrix factorization recommenders work (aka. not use user/item features) or if online tutorials are just too simple?
If I wanted to incorporate a user feature like age, would it be possible with matrix factorization?