LOESS时间序列模型的增量学习

机器算法验证 时间序列 模型评估
2022-03-25 07:07:20

我目前正在处理一些时间序列数据,我知道我可以使用 LOESS/ARIMA 模型。

数据写入一个长度为1000的向量,这是一个队列,每15分钟更新一次,

因此,当新数据推入向量时,旧数据将弹出。

我可以在调度程序上重新运行整个模型,例如每 15 分钟重新训练一次模型,即使用整个 1000 值来训练 LOESS 模型,但是效率非常低,因为每次只插入一个值,而另一个 999 个值还是和上次一样。

那么如何才能获得更好的性能呢?

非常感谢

2个回答

让我把它重新表述成我更熟悉的东西。ARIMA 是 PID 近似的模拟。我是一体的。MA是P。AR可以表示为D项的差分方程。LOESS 是最小二乘拟合的模拟(真的是高科技大哥)。

那么,如果我想改进二阶模型(PID)可以做什么呢?

  • 首先,我可以使用卡尔曼滤波器用一条新信息更新模型。
  • 我还可以查看称为“梯度增强树”的东西。使用它们的模拟,我将制作第二个 ARIMA 模型,其输入都是馈送到第一个的原始输入,并增加了第一个的错误。
  • 我会考虑查看多种模式的错误 PDF。如果我可以对错误进行聚类,那么我可能想要拆分模型,或者使用混合模型将输入分成子模型。子模型可能比单个大型模型更好地处理局部现象学。

我未能提出的问题之一是“性能意味着什么?”。如果我们没有明确说明好的衡量标准,那么就无法判断候选方法是否“改进”。您似乎想要更好的建模、更短的计算时间和更有效的信息使用。拥有有关实际数据的星历表也可以告知这一点。如果您正在建模风,那么您可以知道在哪里寻找增强模型,或者为您的数据找到有用的转换。

这是一个不同的问题,具体取决于您使用的是黄土模型还是 ARIMA 模型。我现在只回答 loess 问题,因为我怀疑 ARIMA 案例中除了可能有一组好的起始值之外几乎没有效率。

黄土模型通过将加权回归拟合到数据的不同子集来工作。每次拟合仅使用一部分数据。因此,每次您在一端删除一个数据点并在另一端添加另一个数据点后重新拟合模型时,从技术上讲,您只需要拟合使用第一个和最后一个点的局部回归。其间的所有局部回归都是相同的。这些未受影响的局部回归中有多少将取决于您在黄土中的平滑参数。

您可以破解您正在使用的任何包来拟合您的模型,以便它可以从以前的拟合中获取大部分本地回归,并且只拟合数据开始和结束时需要的那些。

但是,在我看来,只有当额外编程时间的成本大大低于每 15 分钟从头开始拟合模型的计算机时间成本时,才值得这样做。只有 1000 个数据点,每次从头开始拟合模型肯定不是什么大事。