生产环境中的机器学习模型

数据挖掘 机器学习 交叉验证 模型选择 数据产品
2021-09-16 12:21:14

假设一个模型是在日期训练的 d1 使用可用的标记数据,分为训练和测试,即 r一个一世nd1, esd1. 然后将该模型部署到生产环境中,并对新的传入数据进行预测。一些X 几天过去了,在这之间收集了一堆带标签的数据 d1d1+X 天,让我们称之为 D一个一个X. 在我目前的方法中,我从 D一个一个X (例如 80/20 拆分),

所以, 80%D一个一个X = r一个一世nX (用于微调训练的现有模型的新数据 d1) 20%D一个一个X = esX (新数据添加到 esd1)

随着时间的推移,这种微调过程会不断重复。

通过这样做,我得到了一个不断扩展的测试集,并且我阻止了重新训练整个模型(基本上我可以丢弃旧数据,因为模型已经从中学习)。生成的新模型只是旧模型的微调版本。

关于这种方法,我有一些问题:

  1. 这样做有什么明显的缺点吗?
  2. 一段时间后,模型是否需要完全重新训练(忘记之前学过的所有内容,并使用新的训练/测试拆分训练模型),还是我上面描述的方法可以无限期地继续下去?
  3. 用新的微调模型交换现有部署模型的条件应该是什么?
2个回答

我认为这是一个很好的方法。然而:

  • 微调你的模型(在线学习)很大程度上取决于算法和模型的效果如何。根据您的算法,重新训练整个事情可能是明智的

  • 您的样本空间可能会随着时间而改变。如果您有足够的数据,可能每隔几天/几周/几个月重新训练一次,仅过去一年的数据价值可能会更好。如果您的旧样本不能代表当前情况,那么包含它们可能会比额外样本的帮助更严重地损害您的表现

  • 最大的条件是它是否经过测试以及它涉及多少停机时间,但通常交换更多次更好,这可以自动化

这主要取决于您的机器学习算法所做的学习类型。对于离线学习:重新训练整个事情是明智的,因为某些算法需要您的全部数据才能产生更好的假设。在线学习:您的模型可以微调到最近或最新的数据,并在数据到达时更新模型。