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

我对机器学习算法是新手,正在学习回归、分类、聚类、序列建模和在线算法等基础算法。网上的文章大多展示了如何使用这些算法处理特定数据,但没有关于在生产环境中部署这些算法的文章。因此,我的疑问是:

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

2) 机器学习教程中常见的做法是使用一些训练数据构建模型,然后用它来测试数据。但这种模型是否适合在生产环境中使用?因为传入的数据可能会不断变化,导致模型失效。模型刷新周期的持续时间应为多久,以适应这些变化?


回答:

我不确定这是否是一个好问题(因为它过于宽泛且表述不够好),但我建议你阅读关于偏差-方差权衡的内容。简而言之,你可能有一个低偏差/高方差的机器学习模型,在测试数据(用于实现模型的数据)上获得100%的准确结果,但这可能会导致模型过度拟合训练数据。结果,当你尝试在未用于训练的数据上使用它时,性能会很差。另一方面,你可能有一个高偏差/低方差的模型,它对训练数据的拟合很差,在新的生产数据上的表现也同样糟糕。考虑到这一点,一般的指导原则是:

1) 获得足够多的数据,用于构建机器学习系统的原型

2) 将数据分为训练集、交叉验证集和测试集

3) 创建一个在测试数据上具有相对低偏差(良好的准确性,实际上是良好的F1分数)的模型。然后在交叉验证集上尝试这个模型,看看结果。如果结果不好——你有高方差问题,你使用的模型过度拟合了数据,无法很好地泛化。重新编写你的模型,调整模型参数或使用不同的算法。重复这一过程,直到你在交叉验证集上获得良好结果

4) 由于我们调整了模型以在交叉验证集上获得良好结果,你需要在测试集上测试你的最终模型。如果结果好——那就行了,你已经有了最终版本的模型,可以在生产环境中使用它。

第二个问题没有确定的答案,这取决于你的数据和应用。但可以使用两种一般方法:

1) 按照我之前提到的步骤构建一个在测试集上表现良好的模型。在某个时间段内用新数据重新训练你的模型(尝试不同的时间段,但你可以尝试在看到模型性能下降时重新训练模型)。

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

请记住,即使你使用了第2种方法(在线学习方法),你也不能保证你的模型会永远有效。迟早你获取的数据可能会发生显著变化,你可能需要使用完全不同的模型(例如,从SWM或逻辑回归切换到ANN)。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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