Матрица и машина оценки факторизационной машины Amazon SageMaker - PullRequest
0 голосов
/ 23 января 2019

Я создаю рекомендательную систему, используя модель машины для факторизации sagemaker.

Мой желаемый результат - иметь матрицу рейтинга , где я могу найти прогнозируемый результат по идентификатору пользователя и идентификатору элемента .

Я понимаю, что есть 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 Ответ

0 голосов
/ 23 января 2019

Я думаю, можно подумать о 2 сценариях:

1) если вам нужна очень низкая задержка, вы можете заполнить матрицу действительно, то есть вычислить все реко для всех пользователей и сохранить их в бэкэнде ключ / значение, запрашиваемом вашим приложением. Вы можете определенно предсказать несколько пользователей одновременно, используя метод горячего кодирования выше.

2) прогнозировать по требованию, вызывая конечную точку непосредственно из приложения. Это намного проще, за счет небольшой задержки.

Надеюсь, это поможет.

...