期间序列预测的最新模型以及Python经常使用示例 SOFTS
近年来,深度学习不时在期间序列预测中追逐着优化树模型,其中新的架构曾经逐渐为最先进的性能设定了新的规范。
这一切都始于2020年的N-BEATS,而后是2022年的NHITS。2023年,PatchTST和TSMixer被提出,最近的iTransformer进一步提高了深度学习预测模型的性能。
这是2024年4月《SOFTS: Efficient Multivariate Time Series Forecasting with Series-Core Fusion》中提出的新模型,驳回集中战略来学习不同序列之间的交互,从而在多变量预测义务中取得最先进的性能。
在本文中,咱们具体讨论了SOFTS的体系结构,并引见新的STar聚合调度(STAD)模块,该模块担任学习期间序列之间的交互。而后,咱们测试将该模型运行于单变量和多变量预测场景,并与其余模型作为对比。
SOFTS是 Series-cOre Fused Time Series的缩写,面前的动机来自于常年多元预测对决策至关关键的意识:
首先咱们不时钻研Transform er的模型,它们试图经过经常使用补丁嵌入和通道独立等技术(如PatchTST)来降低Transformer的复杂性。然而由于通道独立性,消弭了每个序列之间的相互作用,因此或者会疏忽预测消息。
iTransformer 经过嵌入整个序列局部地处置了这个疑问,并经过留意机制处置它们。然而基于transformer的模型在计算上是复杂的,并且须要更多的期间来训练十分大的数据集。
另一方面有一些基于mlp的模型。这些模型通常很快,并发生十分强的结果,但当存在许多序列时,它们的性能往往会降低。
所以出现了SOFTS:钻研人员倡导经常使用基于mlp的STAD模块。由于是基于MLP的,所以训练速度很快。并且STAD模块,它准许学习每个序列之间的相关,就像留意力机制一样,但计算效率更高。
在上图中可以看到每个序列都是独自嵌入的,就像在iTransformer 中一样。
而后将嵌入发送到STAD模块。每个序列之间的交互都是集中学习的,而后再调配到各个系列并融合在一同。
最后再经过线性层发生预测。
这集体系结构中有很多物品须要剖析,咱们上方更具体地钻研每个组件。
首先经常使用归一化来校准输入序列的散布。经常使用了可逆实例的归一化(RevIn)。它将数据以单位方差的平均值为中心。而后每个系列区分启动嵌入,就像在iTransformer 模型。
在上图中咱们可以看到,嵌入整个序列就像运行补丁嵌入,其中补丁长度等于输入序列的长度。
这样,嵌入就蕴含了整个序列在一切期间步长的消息。
而后将嵌入式系列发送到STAD模块。
STAD模块是soft模型与其余预测方法的真正区别。经常使用集中式战略来查找一切期间序列之间的相互作用。
嵌入的序列首先经过MLP和池化层,而后将这个学习到的示意衔接起来构成核(上图中的黄色块示意)。
核构建好了就进入了“重复”和“衔接”的步骤,在这个步骤中,核示意被分派给每个系列。
MLP和池化层未捕捉的消息还可以经过残差衔接减少到核示意中。而后在融合(fuse)操作的环节中,核示意及其对应系列的残差都经过MLP层发送。最后的线性层驳回STAD模块的输入来生成每个序列的最终预测。
与其余捕捉通道交互的方法(如留意力机制)相比,STAD模块的关键好处之一是它降低了复杂性。
由于STAD模块具备线性复杂度,而留意力机制具备二次复杂度,这象征着STAD在技术上可以更有效地处置具备多个序列的大型数据集。
上方咱们来实践经常使用SOFTS启动单变量和多变量场景的测试。
这里,咱们经常使用 Electricity Transformer>
pip install githttpsgithubcomNixtlaneuralforecastgit