我正在尝试使用小型 MovieLens 数据集构建一个简单的 CF 推荐系统。为了做到这一点,我尝试使用 ALS 将我的(用户,项目)矩阵分解为(用户,潜在空间)矩阵和(项目,潜在空间)矩阵使得: To这样做我使用的是 Python 的 Implicit 包中定义的 ALS 算法,当我乘以大不相同。我的问题是,我对 ALS 到底是什么感到困惑吗?我认为它类似于 SVD 或任何其他矩阵分解算法。我使用显式数据而不是隐式数据是否重要?这是我用来执行矩阵分解的代码:
from implicit.als import AlternatingLeastSquares
from scipy import sparse
def matrix_decomposition(matrix, k, i):
matrix = sparse.csr_matrix(matrix.T)
model = AlternatingLeastSquares(factors=k, iterations=i)
model.fit(matrix)
user_latent = model.user_factors
item_latent = model.item_factors
return user_latent, item_latent