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?
已更新:
我想我现在明白了如何使用 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) 通过直接从应用程序调用端点来按需预测。这很简单,代价是有一点延迟。
希望对您有所帮助。
我正在使用 sagemaker 的内置因子分解机模型构建推荐系统。
我想要的结果是有一个评分矩阵,我可以在其中通过用户ID和项目编号.
我了解到模型提供了一个预测API:
result = fm_predictor.predict(X_test[1000:1010].toarray())
但我不确定如何使用它来达到预期的目的。如果我想知道,比如说,如果用户#123 对电影#456 感兴趣,我该如何使用上面的 API?
已更新:
我想我现在明白了如何使用 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) 通过直接从应用程序调用端点来按需预测。这很简单,代价是有一点延迟。
希望对您有所帮助。