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

时序必读论文11|ICLR23 TimesNet时间序列分析的二维变化建模

图片

论文标题:TEMPORAL 2D-VARIATION MODELING FOR GENERAL TIME SERIES ANALYSIS

开源代码:https://github.com/Thinklab-SJTU/Crossformer

前言

时间序列分析中,如何有效地建模时序数据中的时间变化是关键,然而直接从一维时序数据提取这种变化很困难。本文提出一种新的时序分析方法——二维变化建模TimesNet。该方法将一维时间序列数据转换为二维张量,作者基于时序数据的多周期性特点,将数据分解为多个周期内变化和周期间变化,并将这些变化分别嵌入到二维张量的列和行中

这样的好处在于可以利用二维卷积核对这些二维张量进行建模,从而提取出时间序列中更深层次的时间变化特征。基于TimesNet框架,可以自适应地发现时间序列中的多周期性特征,并从转换后的二维张量中提取复杂的时间变化。在五个主流时间序列分析任务中的卓越性能,包括短期和长期预测、插补、分类和异常检测等。与现有方法相比,TimesNet展现出了更高的准确性和稳定性,证明了其在通用时间序列分析中的有效性和通用性。

本文工作

基本观察:如图所示,现实世界中的时间序列通常表现出多周期性,例如天气观测中的日变化和年变化,以及电力消耗中的周变化和季变化。每个时间点的变化不仅受到其相邻区域时间模式的影响,而且与其相邻周期的变化密切相关。作者称之为周期内变化(intraperiod-variation)和周期间变化(interperiod-variation)。前者表示一个周期内的短期时间模式,而后者可以反映连续不同周期的长期趋势。

图片

作者基于多个周期将原始的一维时间序列转换为一组二维张量,从而统一了周期内变化和周期间变化。

将一维时序转换为二维时序

图片

对于长度为T、包含C个变量的时间序列,作者通过快速傅里叶变换(FFT)在频域中分析时间序列,具体如下:

图片

FFT(·) 和 Amp(·) 分别表示快速傅里叶变换和振幅值的计算。A ∈ R^T 表示从C个维度上平均得到的每个频率的振幅。作者只选择前k个振幅值,并获得具有非归一化振幅的{A_f1, ..., A_fk}的最显著频率{f1, ..., fk},其中k是超参数。这些选择的频率也对应于k个周期长度{p1, ..., pk}。上述过程总结如下:

图片

接下来如图以及以下公式所示,我们可以基于选定的周期对原始一维时序数据重塑为多个二维张量。

图片

Padding(·) 是沿着时间维度用零来扩展时间序列,以使其与 Reshape_{p_i, f_i}(·) 兼容,其中 p_i 和 f_i 分别表示转换后的二维张量的行数和列数。

关于使用傅立叶变换分解周期,在ICLR2024还有一篇文章[1],可以看我的另一篇解读。

TimesBlock

图片

如图所示,TimesNet由堆叠的TimesBlock组成。输入序列首先经过嵌入层得到深度特征,然后对于每一层Times Block通过2D卷积提取而为时序特征。此外,从结构图中还可以看到,作者加了残差连接。

如图3所示,对于第l个TimesBlock,整个过程包括两个连续的部分:捕获时间二维变化模式以及自适应地聚合不同周期下的表示

图片

  • 一维至二维的变换在上一节讲过,如以上公式1-2所示。

  • 二维时序特征的提取。作者采用了inception使用2D卷积从这些二维张量中方便地提取出有信息的表示。如公式3。

  • 二维至一维的变换。对于提取的时序特征,作者将其转回一维进行信息聚合。如公式4。

    自适应融合。融合k个不同的一维表示{X_1, ..., X_k}以供下一层使用。受到自相关(Auto-Correlation)思想的启发,基于幅度来加权求和聚合这些一维表示。

    图片

实验与总结

在长时、短时预测、缺失值填补、异常检测、分类五大任务上实现了全面领先。我看知乎对文章的讨论比较激烈,但作者比较耐心的对提出的疑问进行了解答,个人感觉学习解决问题的思路还是非常值得阅读的。另外在写作方面,文章可视化做的非常好,下面的雷达图我已经不止一次看到了。

图片

图片

图片


欢迎大家关注我的公众号【科学最top】,专注于时序高水平论文解读,回复‘论文2024’可获取,2024年ICLR、ICML、KDD、WWW、IJCAI五个顶会的时间序列论文整理列表和原文。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Https AK--(ssl 安全感满满)
  • 24.9.16数据结构|平衡二叉树
  • uniapp中实现<text>文本内容点击可复制或拨打电话
  • Miracast/WifiDisplay开发相关的深入调研分析-android投屏实战开发
  • PMP--一模--解题--111-120
  • 数据结构-链表
  • 【Java集合】ArrayList
  • Java HashMap 总结
  • LeetCode-160.相交链表
  • C#学习笔记(三)Visual Studio安装与使用
  • 第十一章 【后端】商品分类管理微服务(11.1)——创建父工程
  • linux 操作系统下dd 命令介绍和使用案例
  • 【有啥问啥】对比学习(Contrastive Learning,CL)的原理与前沿应用详解
  • 【目标检测数据集】锯子数据集1107张VOC+YOLO格式
  • 【踩坑】装了显卡,如何让显示器从主板和显卡HDMI都输出
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [数据结构]链表的实现在PHP中
  • Angular4 模板式表单用法以及验证
  • CODING 缺陷管理功能正式开始公测
  • C语言笔记(第一章:C语言编程)
  • Docker容器管理
  • js继承的实现方法
  • Median of Two Sorted Arrays
  • opencv python Meanshift 和 Camshift
  • PhantomJS 安装
  • 我这样减少了26.5M Java内存!
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • UI设计初学者应该如何入门?
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #控制台大学课堂点名问题_课堂随机点名
  • $.ajax()方法详解
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (待修改)PyG安装步骤
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)进入MySQL 【事务】
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net中的Queue和Stack
  • @private @protected @public
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • []我的函数库
  • [001-03-007].第07节:Redis中的事务
  • [AI 大模型] 百度 文心一言
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [C/C++] C/C++中数字与字符串之间的转换
  • [C++核心编程](四):类和对象——封装
  • [Flexbox] Using order to rearrange flexbox children
  • [HZNUCTF 2023 preliminary]ppppop
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [Linux内核驱动]模块参数
  • [Luogu 3958] NOIP2017 D2T1 奶酪
  • [luogu P1527]矩阵乘法(矩形k小)