我熟悉算法实现和新机器学习,但我在学术和生产之间存在差距。
我正在实施推荐系统和学习模型,结果很好,然后我停下来问下一步该做什么?如何使用现有网站进行部署
在学习期间,我使用了CSV数据集和本地计算机,但在线将是数十万用户和数千用户的数据库。所以我认为无法加载所有数据并向用户推荐内容。
问题是: 我将如何在生产中使用我训练过的模型?
答案 0 :(得分:1)
当你说"数据库有成千上万的用户和成千上万的用户时。"我想你的意思是"成千上万的用户和成千上万的项目"。 您是否有用户协作过滤或项目项过滤?
如果是这样,我猜数字(10K * 1K)对任何体面的关系数据库都不会有问题。 基本上你创建一个表,让你说" Rattings",你存储的地方:UserId,ItemId和Ratting(如果你的"功能"是二进制文件,你可以省略这个鼠标:商品购买或不是)。
如果您的用户项矩阵稀疏,则此表将很小。 你也创建了一个"用户"在任何插入" Rattings"之后的表格例如,如果您需要对预测和其他可能需要的数据进行标准化,则可以预先计算用户平均值。根据经验,在插入时不要进行非常复杂的微积分,包括扫描其他表格,但如果这有助于避免在检索数据以计算预测/建议时在其他表格中执行复杂扫描,则不要进行简单的数学运算。
你可以从这里得到一些想法:http://lemire.me/fr/documents/publications/webpaper.pdf
考虑到Relational Db是一个存储,即使它可以使用Sql计算几乎所有内容,常规方案是使用关系Db进行过滤和连接,然后在其他层/ trier中进行数学运算。
答案 1 :(得分:0)
您可以通过创建API并在与负载均衡器连接的至少两个实例上部署经过训练的模型来自己生产。
另一种方法是使用为您处理该服务的服务。我的服务mlrequest使创建和部署高可用性,低延迟的模型变得非常简单。
您可以使用非常适合提出建议的强化学习模型。以下是电影推荐器的示例。
from mlrequest import RL
rl = RL('your-api-key')
features = {'favorite-genre': 'action', 'last-movie-watched': 'die-hard'}
r = rl.predict(features=features, model_name='movie-recommender', session_id='the-user-session-id', negative_reward=0, action_count=3)
best_movie = r.predict_result[0]
当模型表现出色时(例如,用户单击或开始观看预测的电影),则应通过给模型一个正值(在这种情况下为1)来奖励该模型。
r = rl.reward(model_name='movie-recommender', session_id='the-user-session-id', reward=1)
每当模型因采取的正确措施而获得奖励时,它将学会在这种情况下更频繁地执行这些操作。因此,该模型从其自身的环境中实时学习并调整其行为以提供更好的建议。无需人工干预。
答案 2 :(得分:-1)
我真的不明白你的意思。通常,您使用一组训练数据训练模型。然后使用一组测试数据验证模型。如果模型显示有希望的结果(例如,#34;训练良好")它将进入生产阶段。
以购物推荐为例。您已经培训了一个模型,根据以前的产品推荐下一个产品。现在,在生产中,如果您的客户购买/查看新产品,您可以使用此产品提供算法,并为您提供一组您可能选择的其他产品。这与您的培训/验证数据相同。
数据来源基本上不相关。但也许我真的没有得到你的问题。你能详细说说吗?
答案 3 :(得分:-1)
这里是一个如何将机器学习模型集成到Web应用程序https://www.youtube.com/watch?v=mu-R0dQ3-Qo中的示例,其代码可以在https://github.com/shivasj/Integrating-a-Machine-Learning-Model-into-a-Web-app
中找到。