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

2023-10-27

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

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 小程序通过webview实现本地任意文件上传

    微信小程序做文件上传的时候 只能选择相册的图片或者视频 没办法选择手机内存卡里的文件 比如 word pdf文件等等 下面可以通过 webview 的方式 借用 h5 的方式即可实现上面的功能 添加业务域名 webview里面打开的地址 首
  • Mybatis操作数据库--通用

    选中 xml 右键 Junite 测试的时候 Test位于这个包中 import org junit jupiter api Test 根据条件进行查询总记录数 条件如果涉及到两个表的内容 你也就只写一个表里面的 select count
  • 简易版python爬虫--通过关键字爬取网页

    背景 帮同学写了个爬虫程序 特此记录 怕以后忘了 这里是爬取百度https www baidu com 不为什么 主要就是百度老实 能爬 爬着简单 爬着不犯法 关键字爬取基本模板 import requests from bs4 impor
  • Flutter学习四:Flutter开发基础(五)资源管理

    目录 0 引言 1 资源管理 1 1 指定 assets 1 2 Asset 变体 variant 1 3 加载 assets 1 3 1 加载文本 1 3 2 加载图片 1 3 2 1 声明分辨率相关的图片 1 3 2 2 加载图片 1
  • SIFT特征提取分析

    SIFT Scale invariant feature transform 是一种检测局部特征的算法 该算法通过求一幅图中的特征点 interest points or corner points 及其有关scale 和 orientat
  • 音视频开发(13)---视频监控系统必须知道的一些基础知识

    视频监控系统必须知道的一些基础知识 前言 在视频监控系统中 视频文件的传输带宽很重要 那视频文件的传输带宽怎么计算呢 首先给大家介绍几个名词 正文 1 比特率 比特率是指每秒传送的比特 bit 数 单位为bps BitPerSecond 比
  • XSS靶场第三关秘籍

    查看页面源代码 直接插入我们的代码进行尝试 没有弹窗 查看页面源代码 发现我们的 被实体编码了 这里把 改成
  • DBUtils工具类的使用方法详解

    DBUtils使用方法详解 目录 DBUtils使用方法详解 一 前言 二 JDBC介绍 1 基本概念 2 JDBC访问数据库的流程 三 DBUtils介绍 1 基本概念 2 配置文件 3 创建JDBCUtils类 4 实现对数据表的增删改
  • springboot整合knife4j,从此告别手写接口文档

    关于knife4j Knife4j的前身是swagger bootstrap ui 前身swagger bootstrap ui是一个纯swagger ui的ui皮肤项目 一开始项目初衷是为了写一个增强版本的swagger的前端ui 但是随
  • 递归求和

    用阶乘求1到100的和 思路 递归结束条件 n 1 递归公式 n sum n 1 include
  • 泛型T E K V ?

    Java泛型中E T K V等的含义 Java泛型中的标记符含义 E Element 在集合中使用 因为集合中存放的是元素 T Type Java 类 K Key 键 V Value 值 N Number 数值类型 表示不确定的java类型
  • 蓝牙模块调试总结(BLE\HC-05\HC-06\HC-01\MLT-BT05)

    最近在使用蓝牙模块与手机进行联合调试 遇到了一些问题 在此总结一下 1 蓝牙模块分类 MLT BT05 4 0蓝牙模块 指令集详细说明 MLT BT05 4 0 蓝牙串口模块指令为 Command 指令集 注 发 AT 指令时必须回车换行
  • 针对三角形问题,使用边界值分析法设计测试用例

    一 测试问题描述 输入三个整数a b c 分别作为三角形的三条边 通过程序判断这三条边是否能构成三角形 如果能构成三角形 则判断三角形的类型 等边三角形 等腰三角形 一般三角形 要求输入三个整数a b c 必须满足以下条件 1 a 200
  • Satck与Queue要点

    Satck Stack定义 核心接口 stack源码 栈的实现 静态数组实现栈 动态数组实现栈 链表实现栈 queue queue与stack queue的实现 Satck Stack定义 stack的特点是先进先出 与queue正好相反
  • 一个局域网中,不同网段的服务器能通信吗?

    文章目录 起步 环境说明 B ping A A ping B 子网的误判 感谢 起步 在一个局域网中存在两台服务器 A B A IP 192 168 211 110 NETMASK 255 255 255 0 B IP 192 168 21
  • QT 新手小白USBCAN 学习

    一 介绍CAN总线 CAN总线介绍 二 USBCAN总线 2 1 产品介绍 USBCAN 转换器模块实现了将 CAN 总线接口与 USB 接口进行相互转换 可以 简单方便的通过电脑监视 CAN 总线网络 同时可以实现工业现场数据稳定的双 向
  • php xml数据类型,PHP实现XML与数据格式进行转换类实例

    xml2array will convert the given XML text to an array in the XML structure Link http www bin co com php scripts xml2arra
  • Java架构师成长升级历程

    目录 前言 一 学习途径整理 目录 前言 一 学习途径整理 二 如何高效的学习 三 书籍推荐 MQ相关 云原生相关 Redis相关 架构相关 Mybaits 四 优秀博文整理 五 极客时间 六 硬核公众号推荐 七 宝藏学习网站 八 架构设计
  • just4fun:神奇的代码生成好看的图片

    原文链接 用三段 140 字符以内的代码生成一张 1024 1024 的图片 在VS2015下 试了一下生成下图的代码 生成ppm格式图片的代码如下 include
  • 论文笔记:TIMESNET: TEMPORAL 2D-VARIATION MODELINGFOR GENERAL TIME SERIES ANALYSIS

    ICLR 2023 1 intro 时间序列一般是连续记录的 每个时刻只会记录一些标量 之前的很多工作着眼于时间维度的变化 以捕捉时间依赖关系 gt 可以反映出 提取出时间序列的很多内在特征 比如连续性 趋势 周期性等 但是现实时间序列数据