0

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

我想要的结果是有一个评分矩阵,我可以在其中通过user iditem 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 (p.41,43)


更新:

我想我现在了解如何使用 API,您必须构建另一个 one-hot 编码数据集作为输入,例如:

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)

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

4

1 回答 1

0

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

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

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

希望这可以帮助。

于 2019-01-23T10:08:22.360 回答