我与python一起使用php项目进行工作,该Python使用flask作为api,根据以前在其他帖子上的参与度(纯粹基于用户)来预测用户喜欢该帖子。
我的要求是假设我们的系统中有1000个用户。而且他们以前也喜欢旧帖子。当新帖子到来时,我需要以某种方式确定用户是否喜欢。这是通过cron作业完成的
方法1
我正在使用Logistic回归作为模型,因此可能每个用户都需要动态pkl文件。因为不同用户对同一帖子的参与度不同,所以我需要保存诸如model_ {user_id} .pkl之类的文件,其中user_id是用户ID用户的
方法2
使用基于内容的推荐系统。但是据我所知,它不能像生产中的pkl文件那样存储。因此,对于1000个用户中的每个用户,我都需要运行荐荐功能。
解决1个缺点
为每个用户创建动态pkl文件,这意味着会有更多文件。我在互联网上从未见过这种方法
解决2个缺点
为每个用户调用推荐功能可能是一个坏主意。这会严重影响cpu的使用等。
有人可以帮助我如何正确解决此问题吗?我是机器学习的新手。请考虑我的问题。预先感谢。
答案 0 :(得分:1)
我建议这样的事情:
类似这样的东西(未经测试-只是一个概念):
#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