训练个性化机器学习模型

我正在进行一个PHP项目,同时使用Python和Flask作为API,该项目根据用户对其他帖子的之前互动来预测用户对帖子的喜好,这完全是基于用户的。

我的需求是,假设我们的系统中有数千名用户,他们之前已经对旧帖子进行了点赞。当有新帖子到来时,我需要某种方式来识别用户是否喜欢它,这通过定时任务来完成。

方法1

我使用逻辑回归作为模型,因此可能需要为每个用户创建动态的pkl文件。因为不同用户对同一帖子的互动不同,所以我需要保存类似于model_{user_id}.pkl的文件,其中user_id是用户的ID。

方法2

使用基于内容的推荐系统。但据我所知,它在生产环境中无法像pkl文件那样存储。因此,对于数千名用户中的每一个,我都需要运行推荐函数。

方法1的缺点

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

方法2的缺点

我认为为每个用户调用推荐函数可能不是一个好主意。这可能会严重影响CPU使用率等。

请问有人能帮我正确解决这个问题吗?我在机器学习方面是新手。请考虑我的问题。提前感谢。


回答:

我建议这样做:

  • 将用户模型创建为模型的数组(或数据框架)
  • 将这个数组保存为pkl文件
  • 在加载应用程序时(而不是每次API调用时),将模型数组加载到内存中
  • 当调用API时,模型已经在内存中 – 使用它来预测结果

类似这样(未经测试 – 只是一个想法):

#for saving the modelmodel_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 modelunpacked_model = jsonpickle.unpickler.Unpickler.restore(packed_model) #this should be in the begining of your flask file - loaded into the memoryuser_model=unpacked_model.at(user_id,'model') #this should be inside every api call

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注