Amazon SageMaker 分解机评级矩阵和端点

Amazon SageMaker factorisation machine rating matrix and endpoint

我正在使用 sagemaker 的内置因子分解机模型构建推荐系统。

我想要的结果是有一个评分矩阵,我可以在其中通过用户ID项目编号.

我了解到模型提供了一个预测API

result = fm_predictor.predict(X_test[1000:1010].toarray())

但我不确定如何使用它来达到预期的目的。如果我想知道,比如说,如果用户#123 对电影#456 感兴趣,我该如何使用上面的 API?

参考: https://medium.com/@julsimon/building-a-movie-recommender-with-factorization-machines-on-amazon-sagemaker-cedbfc8c93d8

https://www.slideshare.net/AmazonWebServices/building-a-recommender-system-on-aws-aws-summit-sydney-2018(第 41,43 页)


已更新:

我想我现在明白了如何使用 API,你必须构建另一个单热编码数据集作为输入,例如:

X_new = lil_matrix((1, nbFeatures)).astype('float32')
X_new[0, 935] = 1
X_new[0, 1600] = 1

prediction2 = X_new[0].toarray()
result2 = fm_predictor.predict(prediction2)

print(result2)

但是这样填推荐矩阵好像效率很低。最佳做法是什么?

我认为可以考虑两种情况:

1) 如果您需要非常低的延迟,您确实可以填充矩阵,即计算所有用户的所有 recos,并将其存储在您的应用程序查询的 key/value 后端中。使用上面的单热编码技术,您绝对可以一次预测多个用户。

2) 通过直接从应用程序调用端点来按需预测。这很简单,代价是有一点延迟。

希望对您有所帮助。