我正在尝试构建一个玩具推荐引擎来围绕奇异值分解(SVD)。我已经阅读了足够多的内容来理解矩阵 A(用户x电影矩阵)实际分解背后的动机和直觉。
我需要更多地了解之后发生的事情。
from numpy.linalg import svd
import numpy as np
A = np.matrix([
[0, 0, 0, 4, 5],
[0, 4, 3, 0, 0],
...
])
U, S, V = svd(A)
k = 5 #dimension reduction
A_k = U[:, :k] * np.diag(S[:k]) * V[:k, :]
三个问题:
矩阵的值是否
A_k
代表预测/近似评级?余弦相似度在推荐中起什么作用/什么步骤?
最后,我使用平均绝对误差 (MAE) 来计算我的误差。但我在比较什么价值观?类似的东西
MAE(A, A_k)
还是别的什么?