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").
Example
Tutorial: Matrix Factorization for Movie Recommendations in Python
URL: https://beckernick.github.io/matrix-factorization-recommender/
Users (userID, gender, ageGroup, occupationGroup, zipCode)
Items (movieID, title, genres)
Ratings (userID, movieID, rating, timestamp)
Then we do some cleaning and build a matrix of users-to-items with ratings as the values.
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?