繁体   English   中英

训练基于个性化的机器学习模型

[英]Training personalized based machine learning models

i work on a php project along with python which uses flask as api which predict user like on a post based on the previous engagement on other posts and its purely user based.

我的要求是假设我们的系统中有 1000 名用户。 他们之前对旧帖子做过喜欢。当新帖子到达时,我需要以某种方式确定用户是否喜欢它。这是通过 cron 作业完成的

方法1

我正在使用逻辑回归作为 model 所以可能需要为每个用户提供动态 pkl 文件。因为不同用户在同一个帖子上的参与度不同所以我需要保存一些类似 model_{user_id}.pkl 文件的东西,其中 user_id 是用户的用户 ID

方法2

使用基于内容的推荐系统。但据我所知,它不能像生产中的 pkl 文件那样存储。 所以对于来自 1000 个用户的每个用户,我需要运行推荐器 function。

方法1缺点

为每个用户创建动态 pkl 文件,这意味着更多文件。我在互联网上从未见过这种方法

方法2缺点

我相信为每个用户调用推荐器 function 可能是一个坏主意。这将严重影响 CPU 使用等。

有人可以帮我如何正确解决这个问题。我是机器学习的新手。 请考虑我的问题。 提前致谢。

我会建议这样的事情:

  • 将用户模型创建为模型的数组(或数据框)
  • 将此数组保存为 pkl
  • 加载应用程序时(不是在每个 API 调用上),将模型数组加载到 memory
  • 当调用 API 时,model 已经在 memory 中 - 使用它来预测结果

像这样的东西(未经测试 - 只是一个概念):

#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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM