如何将机器学习模型部署到现有网站
Posted
技术标签:
【中文标题】如何将机器学习模型部署到现有网站【英文标题】:How to deploy Machine learning Model to existing website 【发布时间】:2016-07-14 11:02:18 【问题描述】:我熟悉算法实现和机器学习新手,但我在学术和生产之间存在差距。
我正在实施推荐系统和学习模型,结果很好,然后我停下来问下一步该怎么做?如何在现有网站上部署它
在学习过程中,我使用了 CSV 数据集和本地机器,但在线将是拥有数十万用户和数千用户的数据库。所以我认为不可能加载所有数据并向用户推荐东西。
问题是: 我将如何在生产中使用我训练有素的模型?
【问题讨论】:
【参考方案1】:当您说“具有数十万用户和数千用户的数据库”时。我猜你的意思是“成千上万的用户和成千上万的项目”。 你有用户协同过滤或项目-项目过滤吗?
如果是这样,我想这些数字 (10K*1K) 对于任何体面的关系数据库来说都不是问题。 基本上,您创建一个表格,比如说“Rattings”,您存储的位置:UserId、ItemId 和 Ratting(如果您的“功能”是二进制文件,例如:是否购买了商品,则可以省略此评级文件)。
如果您的用户项矩阵是稀疏的,则此表会很小。 您还可以创建一个“用户”表,在“评分”表中插入任何内容后,您可以预先计算用户平均评分,例如,如果您需要标准化预测和您可能需要的其他数据。根据经验,在插入时不要进行涉及扫描其他表的非常复杂的计算,但如果这有助于避免在检索数据以计算预测/建议时在其他表中进行复杂的扫描,请进行简单的数学运算。
你可以从这里得到一些想法:http://lemire.me/fr/documents/publications/webpaper.pdf
考虑到关系数据库是一个存储,即使它可以使用 Sql 计算几乎所有内容,常规场景是使用关系数据库进行过滤和连接,然后在其他层/trier 中进行数学运算。
【讨论】:
【参考方案2】:我真的不明白你在这里的意思。通常,您使用一组特定的训练数据来训练您的模型。然后,您使用一组特定的测试数据来验证您的模型。如果模型显示出有希望的结果(例如“训练有素”),它就会投入生产。
以购物推荐为例。您已经训练了一个模型,可以根据以前的产品推荐下一个产品。现在,在生产中,如果您的客户购买/查看新产品,您可以使用该产品为您的算法提供服务,它会为您提供一组您可能选择的其他产品。这与您的训练/验证数据相同。
数据来源通常不相关。但也许我真的不明白你的问题。你能详细说明一下吗?
【讨论】:
我知道如何训练模型和检查效率,我的问题是如何使用关系数据库实现我的模型? ..如果我向在我推荐类似电影之前看过一部电影的新用户推荐一些电影..如何衡量这些相似性?会有like vector包含电影及其相似之处或用户相似之处..如何使用关系数据库实现这些方法说“mysql” 您用什么语言编写模型?那个应该有一个 mysql 连接器(请参阅here for python)。然后您连接到您的数据库服务器,获取您需要的数据并将其输入到您的算法中。 @AhmedSyam:该链接可能会回答您的问题。 link【参考方案3】:您可以通过创建 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)
每次模型因其采取的正确操作而获得奖励时,它都会学会在该上下文中更频繁地执行这些操作。因此,该模型从自己的环境中实时学习并调整其行为以提供更好的建议。无需人工干预。
【讨论】:
【参考方案4】:这是一个如何将机器学习模型集成到 Web 应用程序中的示例https://www.youtube.com/watch?v=mu-R0dQ3-Qo,代码可以在这里找到https://github.com/shivasj/Integrating-a-Machine-Learning-Model-into-a-Web-app
【讨论】:
以上是关于如何将机器学习模型部署到现有网站的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure 容器实例中部署机器学习模型时如何访问所有已注册的模型?
独家 | 手把手教你如何使用Flask轻松部署机器学习模型(附代码&链接)