我试图构建一个玩具推荐引擎,将我的思维包围在奇异值分解(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)
或其他东西?