我对机器学习算法很陌生。我正在学习回归,分类,聚类,序列建模,在线算法等基本算法.互联网上的所有文章都说明了如何对特定数据使用这些算法。没有关于在生产环境中部署这些算法的文章。所以我的问题是
1) 如何在生产环境中部署机器学习算法?
2)机器学习教程中的典型方法是利用一些训练数据建立模型,并将其用于测试数据。但是,在生产环境中使用这种模型是否明智呢?输入的数据可能会不断变化,因此模型将无效。模型刷新周期的持续时间应该是多少以适应这样的更改?
发布于 2014-12-09 14:25:00
我不确定这是否是一个好问题(因为它太笼统,也不是很好的表述),但我建议您阅读关于偏差-方差权衡的文章。长话短说,您可以拥有低偏差\高方差的机器学习模型,并在您的测试数据(用于实现模型的数据)上获得100%的精确结果,但您可能会导致您的模型过度适应培训数据。因此,当您尝试在培训期间未使用的数据上使用它时,会导致性能低下。另一方面,您可能有高偏差\低方差模型,这将不适合您的培训数据,并将表现同样糟糕的新的生产数据。铭记这一点,一般准则是:
1)获取大量的数据,用于建立机器学习系统的原型。
2)将数据划分为火车集、交叉验证集和测试集。
3)建立一个模型,该模型对测试数据具有相对较低的偏差(很好的准确性,实际上是良好的F1分数)。然后在交叉验证集上尝试这个模型以查看结果。如果结果不好重写您的模型,使用模型参数或使用不同的算法。重复,直到你在简历集上得到一个好的结果。
4)由于我们使用该模型是为了在简历集上获得一个好的结果,所以您需要在测试集上测试您的最终模型。如果它是好的-就是这样,您有一个最终版本的模型,并可以使用它的prod环境。
第二个问题没有答案,它是基于你的数据和你的应用程序。但可采用2种一般办法:
1)做我前面提到的每一件事,在测试集上构建一个性能良好的模型。在某段时间内,在新数据上重新训练一次模型(尝试不同的时间段,但一旦看到模型的性能下降,您可以尝试重新训练模型)。
2)采用网上学习的方法。这不适用于许多算法,但在某些情况下可以使用。一般来说,如果你看到你可以使用随机梯度下降学习方法--你可以使用在线学习--让你的模型与最新的生产数据保持同步。
请记住,即使您使用#2 (在线学习方法),您也不能确定您的模型将永远是好的。您得到的数据迟早会发生很大的变化,您可能希望使用完全不同的模型(例如,切换到ANN,而不是SWM或logistic回归)。
发布于 2017-04-27 02:49:07
免责声明:我在这家公司工作, 达特莫 为ML构建了一个更好的工作流。我们总是希望帮助从事ML开发的其他开发人员,所以如果您有任何问题,可以在anand@datmo.com与我联系。。
1)为了进行部署,首先应该将代码分为预处理、培训和测试。通过这种方式,您可以轻松地封装部署所需的组件。通常,您会想要将您的预处理,测试,以及您的权重文件(您的培训过程的输出),并将它们放在一个文件夹。接下来,您将希望将其托管在服务器上,并将API服务器封装在此。我建议使用一个烧瓶Restful,以便您可以使用查询参数作为输入,并以标准JSON输出响应。
要在服务器上托管它,可以使用这篇文章,它讨论如何在EC2上部署Flask。
您可以按照这个代码中给出的API来加载和建模,并将其作为API提供。
2)如果没有更多的细节,我很难回答。这在很大程度上取决于数据类型和模型类型。例如,对于深度学习,没有在线学习这样的东西。
发布于 2021-03-25 08:00:31
很抱歉,我的评论没有包括太多的细节*因为我也是一个新手在“部署”的ML。但由于作者在ML方面也是新手,我希望这些基本指导也能有所帮助。对于“部署”,您应该
然后,您可以在生产上部署这些保存的模型。在生产中,您应该有自己开发的应用程序来运行保存的模型(例如:一个使用Python开发的应用程序,该应用程序以经过训练和保存的.pickle文件和TestData作为输入;只需将“测试数据的预测”作为输出),或者您应该有一个运行保存模型的环境/框架(在云上搜索ML环境/框架)。首先,你应该澄清你的需要:你是否需要一个独立的生产计划,或者你是通过一个内部的网络服务,还是通过云等等。
关于第二个问题;如上所述,答案表明问题在于模型的“在线培训能力”。另外,请注意,对于“在线学习”,您的生产环境也必须向您的生产工具/系统提供真实正确的测试数据标签。你会有这种能力吗?
注:以上只是小的“评论”,而不是一个清晰的答案,但从技术上讲,我还不能写评论。(谢谢你没有取消投票:)
https://stackoverflow.com/questions/27380791
复制相似问题