Обучение персонализированным моделям машинного обучения - PullRequest
0 голосов
/ 29 сентября 2019

я работаю над проектом php вместе с python, который использует flask в качестве api, который предсказывает пользователя как пост на основе предыдущего участия в других постах и ​​исключительно на основе пользователя.

мое требование - предположить, что есть1000 пользователей в нашей системе. и они делали лайки для старых постов раньше. Когда приходят новые посты, мне нужно каким-то образом определить, нравится ли это пользователю или нет. И это делается с помощью задания cron

подход 1

Я использую Логистическую регрессию в качестве модели, поэтому, вероятно, нужен динамический файл pkl для каждого пользователя. Потому что участие разных пользователей в одном посте отличается, поэтому мне нужно сохранить что-то вроде файла model_ {user_id} .pkl, где user_id - это пользовательидентификатор пользователя

подход 2

использовать основанный на контенте рекомендуемый system.but, насколько я знаю, он не может храниться как файл pkl в производстве. так что для каждого пользователя из 1000 пользователей мне нужно запустить функцию рекомендателя.

недостаток подхода 1

создание динамического файла pkl для каждого пользователя, что означает большеfiles.i никогда не видел такого подхода в интернете

недостаток подхода 2

вызов функции рекомендателя для каждого пользователя, вероятно, плохая идея, я считаю. это сильно повлияет на процессориспользование и т. д.

Может кто-нибудь, пожалуйста, помогите мне, как правильно решить эту проблему. Я новичок в машинном обучении. пожалуйста, рассмотрите мой вопрос. заранее спасибо.

1 Ответ

1 голос
/ 16 октября 2019

Я бы предложил что-то вроде этого:

  • Создание пользовательских моделей в виде массива (или фрейма данных) моделей
  • Сохранение этого массива в виде pkl
  • При загрузке приложения (не при каждом вызове API) загружайте массив моделей в память
  • Когда вызывается API, модель уже находится в памяти - используйте его для прогнозирования результата

Примерно так (не проверено - просто понятие):

#for saving the model
model_data = pd.DataFrame(columns=['user','model'])
temp_model = RandomForestClassifier().fit(X,y)
new = pd.DataFrame({'user':[user_id],'model':[temp_model]})
model_data = model_data.append(new)
packed_model = jsonpickle.pickler.Pickler.flatten(model_data)

#for loading the model
unpacked_model = jsonpickle.unpickler.Unpickler.restore(packed_model) #this should be in the begining of your flask file - loaded into the memory
user_model=unpacked_model.at(user_id,'model') #this should be inside every api call
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...