时间序列 - 当新的时间序列数据出现时是否有必要重新训练模型

数据挖掘 机器学习 时间序列 预测建模
2022-02-20 21:58:54

假设您正在构建一个销售预测模型来预测明天的销售价值,以及接下来 2 周的每日销售额。该模型使用过去 1.5 年的每日数据进行训练,并且遵循强烈的每周季节性模式。

显然,一旦您对模型性能感到满意,是否有必要每天重新训练模型以捕获直到昨天(包括昨天)的数据,以便对明天的销售价值进行最准确的预测?本质上,该模型将在一个滚动的 1.5 年数据集上进行训练,以捕捉昨天的销售价值。

还是取决于使用的模型类型?出现新数据时是否需要完全重新训练

我明白为什么重新训练您的标准时间序列预测模型(ARIMA 等)是有意义的,但我也可以理解更复杂的模型(神经网络等)可能泛化得很好,不必每天重新训练.

我正在寻找一个模型的解释,当新的时间序列数据出现时,你会和不会重新训练。

4个回答

偶尔重新训练模型是一种很好的做法。当然,“在一段时间内”取决于具体的任务。这是因为无数无法衡量的事物在不断变化。

以预测公司收入的模型为例:游戏规则不断变化,今天的市场不像一年前的市场,更不用说五年前的市场了。这是我想到的第一个例子,但它几乎适用于任何可能的 ML 应用。

这就是为什么观察到模型的性能会随着时间的推移而恶化的原因。因此,使用最新数据更新模型是一种很好的做法。

你是对的,就像在 ML 中一样,它完全取决于你的数据和你的模型泛化能力。

没有一般规则。理想情况下,模型应该经常重新校准。“经常”的概念完全取决于您的问题。但在实践中,应考虑统计和操作方面的考虑。

统计方面的考虑围绕着新数据的可用性(如果您有一个年度数据收集过程,那么在年中重新校准将是一个坏主意),以及基础数据生成过程的演变。您可以尝试通过研究有关变量/输出分布的基本统计数据来观察底层过程的演变,但这只会给您一个部分答案。对于这些统计考虑因素,您唯一能得到的真正答案是重新校准模型并将结果与​​之前的模型进行比较......所以此时您不妨使用新模型(如果您没有任何操作考虑因素)。

运营方面的考虑围绕重新校准过程的困难以及将新模型投入生产。这个过程是自动化的吗?它是否需要特定的数据提取?重新校准容易吗?是否有可用的资源(人力/硬件)来做到这一点?

请注意,某些约束也可能是监管的:在某些领域,有一些内部指南/外部法规给出了模型重新校准的最小频率。

在某些情况下,您知道基础过程会发生轻微变化,一个好的做法是拥有一个自适应预测模型。因此,模型参数在每次新观察时都会稍微重新校准(类似于在线学习)。一个例子是预测风力涡轮机的功率输出:由于叶片变脏和天气缓慢变化等因素,拥有时间自适应模型实际上符合您的最佳利益。

此外,由于内核权重被重新估计,本地学习算法基本上在每次新观察时都会重新训练。这包括 k-NN、核回归、局部线性回归等算法。在这种情况下,总是在需要预测时进行训练;唯一的要求是你更新你的历史观察。

关于再训练批处理模型,我没有看到普遍的共识,只有经验证据。在某些应用中,例如电价预测,许多研究人员使用滚动方法重新训练模型。滚动窗口的长度通常是最长季节周期长度的 2 倍。有时这种方法与指数衰减的权重相结合。但是,我注意到这通常适用于具有计量经济学背景的研究人员,而不是机器学习/计算智能。

每次要生成新预测时,都需要重新训练模型:

对于大多数 ML 模型,您训练模型、对其进行测试、必要时对其进行重新训练,直到获得满意的结果,然后在保留数据集上对其进行评估。在您对模型的性能感到满意后,您可以将其部署到生产环境中。一旦投入生产,您就会在新数据进入时对其进行评分。最终几个月后,如果有大量新训练数据进入,您可能需要更新模型。模型训练是一次性活动,或最多完成定期间隔以保持模型的性能以考虑新信息。例如,猫的视觉特性随着时间的推移是稳定的。我们不希望猫在下周、明年甚至十年后看起来会有所不同。如果有足够的数据,我们本周训练的模型在可预见的未来也足够好。

对于时间序列模型,情况并非如此。相反,每次我们想要生成新的预测时,我们都必须重新训练我们的模型。要理解为什么会发生这种情况,请考虑这个......趋势和相关的季节性变化,随着时间的推移而变化!