论文笔记:TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

news2024/9/21 16:48:06

ICLR 2023

1 intro

  • 时间序列一般是连续记录的,每个时刻只会记录一些标量
    • 之前的很多工作着眼于时间维度的变化,以捕捉时间依赖关系
      • ——>可以反映出、提取出时间序列的很多内在特征,比如连续性、趋势、周期性等
    • 但是现实时间序列数据中的时间序列通常是由很复杂的时间特征组成,不同的时间维度上的变化会糅杂在一起,使得建模时间维度的变化异常困难
  • 在深度学习领域,很多模型有很强的建模非线性的能力,因而可以捕获时间序列中一些复杂的时间维度变化。但是他们各有一些弊端
    • RNN:基于马尔可夫假设(t-1时刻的观测影响t时刻的预测),建模连续时刻的时间序列特征
      • 这类方法经常难以建模长期时间依赖性
      • 同时由于不能并行,效率堪忧
    • TCN:在时间维度上使用卷积神经网络
      • 由于时间序列的一维邻接关系,TCN只能建模时间维度上相近时刻的时间序列特征
      • ——>仍然无法建模长期时间依赖关系
    • Transformer,self-attention
      • 仅仅使用各离散时刻时间序列观测值之前的点积关系,可能获得的并不一定是实际的相互依赖关系
  • 这篇paper从多周期的角度观测时间序列
    • 时间序列通常呈现出多周期
      • 比如天气数据可能有日周期和年周期
      • 电力消费数据可能有周周期和季度周期
    • 对每个周期来说,每个时刻时间序列的观测值不仅由相邻区域的时间特征影响,还由邻接周期相应位置的时间特征决定
      • 论文中称之为 intraperiod-variation(周期内变化)、interperiod-variation(周期间变化)
      • 周期内变化表示一个周期内的短期时间特征
      • 周期间变化表示周期间的长期时间特征
    • 如果一个时间序列没有周期性,那可以认为他的周期是无穷大,他的时间特征仅有周期内变化决定
  • 一维时间序列很难显示地表示两种不同的时间维度变化
    •  ——>论文将一维时间序列reshape到一组二维的张量,其中每一个张量的列表示一个周期,行表示不同周期内同一对应位置(同一相位)
    • 这样reshape之后,周期内和周期间的时间依赖关系都能够很好地建模了
    • 每一列相邻的元素表示邻接时间序列之前的时间依赖关系;每一行相邻元素表示的是不同周期同一相位之前的时间依赖关系
    •  

  •  基于上面的一维时间序列到二维张量的变化,作者提出了TimesNet,实验表明其在长期/短期时间序列预测、时间序列补全、时间序列分类、时间序列异常检测任务中都有不俗的表现
    • 同时,TimesNet考虑并解耦了多周期时间序列特征,可以更好地表征时间序列

 2 TImesNet

 

2.1 从一维时间序列到二维张量的转化

可以用如下三个公式表示

  1. \mathbf{A}=\operatorname{Avg}\left(\operatorname{Amp}\left(\operatorname{FFT}\left(\mathbf{X}_{1 \mathrm{D}}\right)\right)\right)
  2. \left\{f_1, \cdots, f_k\right\}=\underset{f_* \in\left\{1, \cdots,\left[\frac{T}{2}\right]\right\}}{\arg \operatorname{Topk}}(\mathbf{A})
  3. ,p_i=\left\lceil\frac{T}{f_i}\right\rceil, i \in\{1, \cdots, k\}
  • 式1
    • FFT(.)表示将一维时间序列进行快速傅里叶变化(个人理解就是将N长的时域信号转换为N/2长度的谱域信号)
    • Amp就是算各个时间序列转换后,在各个频率上的振幅
    • Avg就是对不同时间序列的振幅求平均
    • —>A是不同频率的平均振幅
  • 式2
    • 取平均振幅最大的k个频率
  • 式3
    • 得到对应的k个周期
  • 为了简便考虑,论文将上述三个式子简化成:
  • \mathbf{A},\left\{f_1, \cdots, f_k\right\},\left\{p_1, \cdots, p_k\right\}=\operatorname{Period}\left(\mathbf{X}_{1 \mathrm{D}}\right)

 基于\left\{f_1, \cdots, f_k\right\},\left\{p_1, \cdots, p_k\right\},可以将一维时间序列\mathbf{X}_{1 \mathrm{D}} \in \mathbb{R}^{T \times C}转化成一组二维张量\left\{\mathbf{X}_{2 \mathrm{D}}^1, \cdots, \mathbf{X}_{2 \mathrm{D}}^k\right\},其中第i个二维张量\mathbf{X}_{2 \mathrm{D}}^i \in \mathbb{R}^{p_i \times f_i \times C}的计算方式为:\mathbf{X}_{2 \mathrm{D}}^i=\operatorname{Reshape~}_{p_i, f_i}\left(\operatorname{Padding}\left(\mathbf{X}_{1 \mathrm{D}}\right)\right), i \in\{1, \cdots, k\}

  • 这里Padding的作用是在时间序列末端补0,使得正好能Reshape到二维张量

2.2 TimesBlock

  • 这里使用了残差连接
    • 对于输入\mathbf{X}_{1 \mathrm{D}} \in \mathbb{R}^{T \times C}
    • 第一层\mathbf{X}_{1 \mathrm{D}}^0 \in \mathbb{R}^{T \times d_{\text {model }}}是通过直接喂入embedding层得到的\mathbf{X}_{1 \mathrm{D}}^0=\operatorname{Embed}\left(\check{\mathbf{X}}_{1 \mathrm{D}}\right)
    • 之后的每一层,输入是\mathbf{X}_{1 \mathrm{D}}^{l-1} \in \mathbb{R}^{T \times d_{\text {model }}},输出是\mathbf{X}_{1 \mathrm{D}}^l=\operatorname{TimesBlock}\left(\mathbf{X}_{1 \mathrm{D}}^{l-1}\right)+\mathbf{X}_{1 \mathrm{D}}^{l-1}

     

     

2.2.1 捕获2D时间维度变化

\begin{aligned} \mathbf{A}^{l-1},\left\{f_1, \cdots, f_k\right\},\left\{p_1, \cdots, p_k\right\} & =\operatorname{Period}\left(\mathbf{X}_{1 \mathrm{D}}^{l-1}\right), \\ \mathbf{X}_{2 \mathrm{D}}^{l, i} & =\operatorname{Reshape}_{p_i, f_i}\left(\operatorname{Padding}\left(\mathbf{X}_{1 \mathrm{D}}^{l-1}\right)\right), i \in\{1, \cdots, k\} \\ \widehat{\mathbf{X}}_{2 \mathrm{D}}^{l, i} & =\operatorname{Inception}\left(\mathbf{X}_{2 \mathrm{D}}^{l, i}\right), i \in\{1, \cdots, k\} \\ \widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, i} & =\operatorname{Trunc}\left(\operatorname{Reshape}_{1,\left(p_i \times f_i\right)}\left(\widehat{\mathbf{X}}_{2 \mathrm{D}}^{l, i}\right)\right), i \in\{1, \cdots, k\}, \end{aligned}

  • 第一行:根据上一个TimesBlock的输出,得到对应的平均振幅,振幅最大的k个频率和对应的周期
  • 第二行,根据这k个频率,将一维时间序列reshape到不同的二维张量中
  • 第三行,这里使用的是inception v1 机器学习笔记:inceptionV1 inceptionV2_机器学习inception_UQI-LIUWJ的博客-CSDN博客,当然别的CNN衍生模型也可以
  • 第四行,将inception学到的二维表征\widehat{\mathbf{X}}_{2 \mathrm{D}}^{l, i}重新reshape回一维时间序列\widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, i} \in \mathbb{R}^{T \times d_{\text {model }}}
  • 使用Trunc将时间序列长度放缩到原来的T

2.2.2 自适应加和

  • 在上一步中,我们得到了\left\{\widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, 1}, \cdots, \widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, k}\right\},那怎么将他们结合呢?
  • \begin{aligned} \widehat{\mathbf{A}}_{f_1}^{l-1}, \cdots, \widehat{\mathbf{A}}_{f_k}^{l-1} & =\operatorname{Softmax}\left(\mathbf{A}_{f_1}^{l-1}, \cdots, \mathbf{A}_{f_k}^{l-1}\right) \\ \mathbf{X}_{1 \mathrm{D}}^l & =\sum_{i=1}^k \widehat{\mathbf{A}}_{f_i}^{l-1} \times \widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, i} \end{aligned}
    • 根据第一行得到的平均振幅,进行softmax得到对应的权重,将这k项进行加权求和

3 实验

3.1 数据集

论文比较了长期时间序列预测、短期时间序列预测、时间序列补全、时间序列分类、异常检测五个问题

 

 3.2 主要结果

3.2.1 短期时间序列预测

3.2.2 长期时间序列预测 

 3.2.3 时间序列补全

3.2.4 时间序列分类 

3.2.5 时间序列异常检测

 3.3 2D时间序列张量可视化

 3.4 超参数稳定性

  •  基本上都是稳定的,不过对预测和异常检测来说,k的选择会影响到最终的表现。

3.5 消融实验

3.5.1 不用Inception,使用别的卷积架构

 3.5.2 自适应加和部分

  • directly-sum:把得到的\left\{\widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, 1}, \cdots, \widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, k}\right\}直接求和
  • removing-sum:不用Softmax,直接\sum_{i=1}^k \mathbf{A}_{f_i}^{l-1} \times \widehat{\mathbf{X}}_{1 \mathrm{D}}^{l, i}

 3.6 regression效果可视化

3.6.1 imputation

 3.6.2  prediction

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux环境搭建私有gitlab仓库以及启动gitlab后出现卡顿处理办法

搭建之前,需要安装相应的依赖包,并且要启动sshd服务(1).安装policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]# sudo yum install -y curl policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]…

C++【类与对象】

文章目录类与对象(1)类与对象一1.0.面向过程和面向对象初步认识1.1.类的引入1.2.类的定义1.3.类的访问限定符及封装1.4.类的作用域1.5.类的实例化1.6.类的对象大小的计算1.8.类成员函数的this指针(2)类与对象二2.0类的6个默认成员…

LeetCode——51. N 皇后

一、题目 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案…

CS144-Lab4

概述 在实验0中,你实现了流量控制的字节流(ByteStream)的抽象概念。 在实验1、2和3中,你实现了该抽象概念与互联网提供的抽象概念之间的转换工具:不可靠的数据报(IP或UDP)。 现在,你已经接近顶峰:一个可以工作的TCP…

Word处理控件Aspose.Words功能演示:使用 C++ 在 Word 文档中查找和替换文本

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word Aspose API支持流行文件格式处理,并允…

如何使用MidJourney和ChatGPT制作动画短片?

Ammaar Reshi当我制作这部使用生成式人工智能制作的蝙蝠侠动画短片时——我不知道它会在不到一周的时间内获得 700 万次观看。想学!给我们讲解下是整体的制作流程吧!!opusAmmaar Reshi我不是电影制作人,也从未写过剧本。我只是有还…

高频面试题|JVM虚拟机的体系结构是什么样的?

一. 前言最近有很多小伙伴都在找工作,他们在面试时经常被面试官问到一个问题:请说说JVM虚拟机的体系结构是什么样的?很多小伙伴都能说出堆、栈等相关内容,但面试官紧接着又问,你还知道其他内容吗?这时不少小伙伴就语塞…

STM32模拟SPI协议获取24位模数转换(24bit ADC)芯片AD7791电压采样数据

STM32模拟SPI协议获取24位模数转换(24bit ADC)芯片AD7791电压采样数据 STM32大部分芯片只有12位的ADC采样性能,如果要实现更高精度的模数转换如24位ADC采样,则需要连接外部ADC实现。AD7791是亚德诺(ADI)半导体一款用于低功耗、24…

C语言--回调函数

1. 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分…

力扣-部门工资前三高的所有员工

大家好,我是空空star,本篇带大家了解一道稍微复杂的力扣sql练习题。 文章目录前言一、题目:185. 部门工资前三高的所有员工二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.其他总结前言 上一篇带大家练习了部门工资最高的…

CUDA硬件实现

CUDA硬件实现 文章目录CUDA硬件实现4.1 SIMT 架构4.2 硬件多线程NVIDIA GPU 架构围绕可扩展的多线程流式多处理器 (SM: Streaming Multiprocessors) 阵列构建。当主机 CPU 上的 CUDA 程序调用内核网格时,网格的块被枚举并分发到具有可用执行能力的多处理器。一个线程…

【C++】1.C++基础

1.命名空间 使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。 1定义 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对…

DepGraph:适用任何结构的剪枝

文章目录摘要1、简介2、相关工作3、方法3.1、神经网络中的依赖关系3.2、依赖关系图3.3、使用依赖图剪枝4、实验4.1、设置。4.2、CIFAR的结果4.3、消融实验4.4、适用任何结构剪枝5、结论摘要 论文链接:https://arxiv.org/abs/2301.12900 源码:https://gi…

软考高级-信息系统管理师之质量管理(最新版)

质量管理目录 项目质量管理质量管理基础质量与项目质量质量管理质量管理标准体系1、IS09000系列,8项基本原则如下。2、全面质量管理(TQM)3、六西格码意为“六倍标准差”,4、软件过程改迸与能力成熟度模型项目质量管理过程规划质量管理1、规划质量管理2、规划质量管理:输入3、…

【java】Spring Cloud --Spring Cloud 的核心组件

文章目录前言一、Eureka(注册中心)二、Zuul(服务网关)三、 Ribbon(负载均衡)四、Hystrix(熔断保护器)五、 Feign(REST转换器)六、 Config(分布式配…

【C++】RBTree——红黑树

文章目录一、红黑树的概念二、红黑树的性质三、红黑树节点的定义四、红黑树的插入五、代码实现一、红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上…

Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题

之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章 Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式 Python爬虫(2)-Selenium控制浏览…

看见统计——第四章 统计推断:频率学派

看见统计——第四章 统计推断:频率学派 接下来三节的主题是中心极限定理的应用。在不了解随机变量序列 {Xi}\{X_i\}{Xi​} 的潜在分布的情况下,对于大样本量,中心极限定理给出了关于样本均值的声明。例如,如果 YYY 是一个 N(0&am…

Spring系列-2 Bean的生命周期

背景: 作为Spring系列的第二篇,本文结合容器的启动流程介绍单例Bean的生命周期,包括Bean对象的创建、属性设置、初始化、使用、销毁等阶段;在此过程中会介绍Spring用于操作Bean或者BeanDefinition的相关扩展接口。 文章重心在于介…

Spring Boot 日志文件,你都会了吗?

目录 1、日志文件的作用 2、日志的使用 2.1、从程序中得到日志对象 2.2、使用日志 2.3、日志格式 3、日志级别 3.1、这样的日志级别有什么用? 3.2、日志级别分类和使用 3.3、日志级别设置 4、日志持久化 5、更简单的日志输出——lombok 5.1、对比 5.2、…