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


9

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

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

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

我可以在调度程序上重新运行整个模型,例如,每15分钟重新训练一次模型,也就是使用整个1000值来训练LOESS模型,但是它效率很低,因为每次只插入一个值,而另一个999个值则被插入仍与上次相同。

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

非常感谢


3
什么是“黄土/ ARIMA模型”?您是否表示带有ARIMA误差的非线性时间趋势,其中使用LOESS估算了非线性趋势?
罗伯·海德曼

抱歉,我的意思是LOESS或ARIMA模型。例如,我用LOESS查找残差为:residuals(loess(x〜time))。因为数据x是具有1000个值的向量,每15分钟更新一次。如何有效地获得残差,但又不每次都重新运行整个数据集?由于每次仅更新1个值,其他999个值仍与上次相同。

一种可能的方法是,也许使用前1000个值来预测接下来的1000个值(尽管LOESS仅支持预测4个值),然后将残差计算为实际值与对应的预测值之间的差,然后每1000个值重新训练一次模型。这根本不是我想要的原始LOESS模型:-(
zhang 2010年

Answers:


1

让我将其重新构造为我更熟悉的东西。ARIMA是PID近似的模拟。我是不可或缺的。MA是P。AR可以表示为D项的差分方程。LOESS是最小二乘拟合的模拟(实际上是高科技的老大哥)。

因此,如果我想改善二阶模型(PID),该怎么办?

  • 首先,我可以使用卡尔曼滤波器用一条新信息来更新模型。
  • 我还可以看一下“梯度助推树”。使用它们的模拟,我将创建第二个ARIMA模型,其输入均为馈入第一个的原始输入,并增加第一个的误差。
  • 我会考虑查看多种模式错误的PDF。如果我可以对错误进行聚类,则可能要拆分模型,或者使用混合模型将输入分成子模型。与单个大型模型相比,子模型在处理局部现象方面可能更好。

我未能提出的问题之一是“性能是什么意思?”。如果我们没有明确规定善良程度,那么就无法判断候选方法是否“有所改进”。似乎您想要更好的建模,更短的计算时间和更有效的信息使用。关于实际数据的星历表也可以告知这一点。如果要对风进行建模,则可以知道在哪里寻找增强模型,或为有用的数据找到转换。


1

根据您使用的是黄土还是ARIMA模型,这是一个不同的问题。我现在仅回答黄土问题,因为我怀疑ARIMA案例中的效率几乎没有,可能还有一套很好的初始值。

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

您可以破解用于拟合模型的任何软件包,以便它可以吸收以前拟合的大部分局部回归,而仅拟合数据开始和结束时所需的那些。

但是,在我看来,这仅是值得的,如果额外的编程时间的成本大大低于仅每15分钟从头开始拟合模型的计算机时间的成本。当然,只有1000个数据点,每次从头开始拟合模型并不是一件大事。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.