首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在生产环境中部署机器学习算法?

如何在生产环境中部署机器学习算法?
EN

Stack Overflow用户
提问于 2014-12-09 14:02:42
回答 4查看 3.2K关注 0票数 5

我对机器学习算法很陌生。我正在学习回归,分类,聚类,序列建模,在线算法等基本算法.互联网上的所有文章都说明了如何对特定数据使用这些算法。没有关于在生产环境中部署这些算法的文章。所以我的问题是

1) 如何在生产环境中部署机器学习算法?

2)机器学习教程中的典型方法是利用一些训练数据建立模型,并将其用于测试数据。但是,在生产环境中使用这种模型是否明智呢?输入的数据可能会不断变化,因此模型将无效。模型刷新周期的持续时间应该是多少以适应这样的更改?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-09 14:25:00

我不确定这是否是一个好问题(因为它太笼统,也不是很好的表述),但我建议您阅读关于偏差-方差权衡的文章。长话短说,您可以拥有低偏差\高方差的机器学习模型,并在您的测试数据(用于实现模型的数据)上获得100%的精确结果,但您可能会导致您的模型过度适应培训数据。因此,当您尝试在培训期间未使用的数据上使用它时,会导致性能低下。另一方面,您可能有高偏差\低方差模型,这将不适合您的培训数据,并将表现同样糟糕的新的生产数据。铭记这一点,一般准则是:

1)获取大量的数据,用于建立机器学习系统的原型。

2)将数据划分为火车集、交叉验证集和测试集。

3)建立一个模型,该模型对测试数据具有相对较低的偏差(很好的准确性,实际上是良好的F1分数)。然后在交叉验证集上尝试这个模型以查看结果。如果结果不好重写您的模型,使用模型参数或使用不同的算法。重复,直到你在简历集上得到一个好的结果。

4)由于我们使用该模型是为了在简历集上获得一个好的结果,所以您需要在测试集上测试您的最终模型。如果它是好的-就是这样,您有一个最终版本的模型,并可以使用它的prod环境。

第二个问题没有答案,它是基于你的数据和你的应用程序。但可采用2种一般办法:

1)做我前面提到的每一件事,在测试集上构建一个性能良好的模型。在某段时间内,在新数据上重新训练一次模型(尝试不同的时间段,但一旦看到模型的性能下降,您可以尝试重新训练模型)。

2)采用网上学习的方法。这不适用于许多算法,但在某些情况下可以使用。一般来说,如果你看到你可以使用随机梯度下降学习方法--你可以使用在线学习--让你的模型与最新的生产数据保持同步。

请记住,即使您使用#2 (在线学习方法),您也不能确定您的模型将永远是好的。您得到的数据迟早会发生很大的变化,您可能希望使用完全不同的模型(例如,切换到ANN,而不是SWM或logistic回归)。

票数 8
EN

Stack Overflow用户

发布于 2017-04-27 02:49:07

免责声明:我在这家公司工作, 达特莫 为ML构建了一个更好的工作流。我们总是希望帮助从事ML开发的其他开发人员,所以如果您有任何问题,可以在anand@datmo.com与我联系。

1)为了进行部署,首先应该将代码分为预处理、培训和测试。通过这种方式,您可以轻松地封装部署所需的组件。通常,您会想要将您的预处理,测试,以及您的权重文件(您的培训过程的输出),并将它们放在一个文件夹。接下来,您将希望将其托管在服务器上,并将API服务器封装在此。我建议使用一个烧瓶Restful,以便您可以使用查询参数作为输入,并以标准JSON输出响应。

要在服务器上托管它,可以使用这篇文章,它讨论如何在EC2上部署Flask。

您可以按照这个代码中给出的API来加载和建模,并将其作为API提供。

2)如果没有更多的细节,我很难回答。这在很大程度上取决于数据类型和模型类型。例如,对于深度学习,没有在线学习这样的东西。

票数 5
EN

Stack Overflow用户

发布于 2021-03-25 08:00:31

很抱歉,我的评论没有包括太多的细节*因为我也是一个新手在“部署”的ML。但由于作者在ML方面也是新手,我希望这些基本指导也能有所帮助。对于“部署”,您应该

  1. 有ML算法:您可以使用免费工具,或者使用Python、R、Java、.Net、.中的库开发自己的工具。或者在云上使用一个系统)
  2. 使用训练数据集训练那些ML模型
  3. 保存那些训练有素的模型(您应该根据您的开发环境搜索这个主题。有些文件格式是Tensorflow/Keras提供的,或者是泡菜、ONNX、.我想在这里写一个完整的列表,其中包括它们的支持语言和环境、优缺点和可加载性,但作为新手,我也试图研究这个主题)

然后,您可以在生产上部署这些保存的模型。在生产中,您应该有自己开发的应用程序来运行保存的模型(例如:一个使用Python开发的应用程序,该应用程序以经过训练和保存的.pickle文件和TestData作为输入;只需将“测试数据的预测”作为输出),或者您应该有一个运行保存模型的环境/框架(在云上搜索ML环境/框架)。首先,你应该澄清你的需要:你是否需要一个独立的生产计划,或者你是通过一个内部的网络服务,还是通过云等等。

关于第二个问题;如上所述,答案表明问题在于模型的“在线培训能力”。另外,请注意,对于“在线学习”,您的生产环境也必须向您的生产工具/系统提供真实正确的测试数据标签。你会有这种能力吗?

注:以上只是小的“评论”,而不是一个清晰的答案,但从技术上讲,我还不能写评论。(谢谢你没有取消投票:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27380791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档