当前位置: 首页 > article >正文

时序论文28|CycleNet:通过对周期模式进行建模增强时间序列预测

图片

论文标题:CycleNet: Enhancing Time Series Forecasting through Modeling Periodic Patterns

论文链接:https://arxiv.org/abs/2409.18479v1

代码链接:https://github.com/ACAT-SCUT/CycleNet

前言

这是今年NIPS的一篇时序论文,主要是提出了一种通过对周期模式进行建模来提高时间序列预测性能的方法。很明显,论文潜在的应用领域是那些具有周期模式的数据。这是一种很好的思路,就是把应用方向限制在具体问题上。时间序列领域有很多问题,比如:平稳性、周期性、长/短预测、趋势分解等等,一个模型肯定不能适应所有数据,解决所有问题,那么我就把问题定义清楚,只解决我定义的问题。

这里其实有个潜在的argue点,就是审稿人可能会觉得这样的论文应用面有限,一个回避的策略是:在论文中对结果做定量分析,解释本文方法为什么,并对其局限性和未来研究方向进行了讨论,这样相当于间接堵住审稿人的嘴。

研究背景

长周期预测的关键在于理解数据中的周期性,实际上就是发现数据的周期模式。像 Informer、Autoformer和 PatchTST 这类模型属于借助了Transformer 的长距离建模能力。ModernTCN 采用大卷积核来增强 TCN(时间卷积网络)捕捉长距离依赖关系的能力,而 SegRNN使用分段迭代来改进 RNN方法对长序列的处理。

图片

但这里就自然引出了一个问题,以上所有复杂模型的目的就是为了从长距离依赖关系中提取周期性特征,那为何不直接设计简单模型对模式进行建模呢?如图是电力数据,呈现出明显的日周期性模式。我们可以使用一个全局共享的每日片段来表示电力消耗中的周期性模式。通过将这个每日片段重复 N 次,我们就可以连续地表示 N 天电力消耗序列的循环组件。

本文模型

本文对数据中的周期性模式进行显式建模,提出了残差周期预测(RCF)技术。该技术包括使用可学习的循环周期来显式地对时间序列数据中的固有周期性模式进行建模,然后对建模后的周期的残差分量进行预测。将 RCF 技术与单层线性层或双层 MLP(多层感知机)相结合,就得到了 CycleNet。

RCF 技术包括两个步骤:第一步是通过独立通道内的可学习循环周期对序列的周期性模式进行建模,第二步是预测建模后的周期的残差分量。

图片

周期性模式建模:对于具有先验周期长度为 W 的 D 个通道的数据,首先生成可学习的循环周期 Q,其形状为 R^(W×D),且初始值全部为零。作者设置不同通道内是全局共享的,通过进行循环复制,可以得到与序列 X 长度相同的循环分量 C。长度为 W 的这些循环周期 Q 会和用于预测的主干模块一起进行梯度反向传播训练,从而产生不同于初始零值的学习表示,这种学习表示能够揭示出序列内部的循环模式。(我的一些想法:这里有改进空间,因为不同通道周期模式出现是有先后顺序的,这里就可以有一个对齐的过程!)

图片

残差预测:在第一步周期性模式建模后,残差预测针对建模后的周期的残差分量进行预测。具体而言,假设得到序列的循环分量和原始时间序列数据,先计算残差,残差包含时间序列中不能被周期性循环解释的部分。然后使用预测模块(如线性层或浅层 MLP)根据残差的过去观测值预测未来步的残差。最后将预测的残差部分与通过循环周期建模得到的未来循环分量相加,得到最终的时间序列预测结果。

本文实验

图片

图片

挺长的分析和巨长的附录,感兴趣的可以看看。

一些改进点

我觉得这篇论文改进空间挺大,比如:周期长度的确定依赖先验特征且需根据具体数据集手动设置最大稳定周期;通过自相关函数检查数据集周期的方法可能存在一定局限性,不一定能完全准确地确定周期。

可以考虑如何更智能的自动确定最优周期长度,减少对先验知识的依赖;优化残差预测模块,提升对复杂时间序列中残差部分的预测能力,从而提高整体预测的精度。还有,由于是通道独立且共享参数,对不同特征进行对齐也可以考虑!


大家可以关注我【科学最top】,第一时间follow时序高水平论文解读!!!


http://www.kler.cn/a/416790.html

相关文章:

  • 如何bug是前端还是后端
  • Axios与FastAPI结合:构建并请求用户增删改查接口
  • C语言:C语言实现对MySQL数据库表增删改查功能
  • 内网不出网上线cs
  • React进阶面试题目(三)
  • 模型 布鲁姆法则
  • 【Gitlab】gitrunner并发配置
  • Ps:存储 Adobe PDF
  • Golang HTTP 标准库的使用实现原理
  • 【设计模式系列】解释器模式(十七)
  • HTTP的主要特点
  • Java面试之多线程并发篇(9)
  • 单机环境下Caffeine和Redis两级缓存的实现与问题解决
  • 记一次 Golang pkg 性能提升 38147125738.8 倍之旅
  • 网络安全(一):信息收集之玩转nmap(理论篇)
  • C++多态---面向对象的心动信号:多态之美
  • Vue 将推出「无虚拟DOM」版本,又是新的前端框架趋势?
  • uniapp中父组件数组更新后与页面渲染数组不一致实战记录
  • 力扣98:验证二叉搜索树
  • [CTF/网络安全] 攻防世界 upload1 解题详析
  • js 中 file 文件 应用
  • 应急响应靶机——Windows挖矿事件
  • Istio笔记01--快速体验Istio
  • 使用 Spring AI + Elasticsearch 让 RAG 变得简单
  • jmeter基础(超详细总结)
  • 第五讲:运算符与表达式:算术、关系、逻辑、赋值等运算符及其优先级