【论文阅读】基于深度学习的时序异常检测——TimesNet

news2024/9/25 19:22:39

系列文章链接
参考数据集讲解:数据基础:多维时序数据集简介
论文一:2022 Anomaly Transformer:异常分数预测
论文二:2022 TransAD:异常分数预测
论文三:2023 TimesNet:基于卷积的多任务模型

论文链接:TimesNet.pdf
代码库链接:https://github.com/thuml/Time-Series-Library
项目介绍:https://github.com/thuml/TimesNet
参考作者解读:ICLR2023 | TimesNet: 时序基础模型,预测、填补、分类等五大任务领先

本文和Anomaly Transformer都是清华大学的团队,也是同一个作者。本文研究基于深度学习异常检测有两个背景:

  1. 基于RNN或者CNN的算法,很难捕捉到时序数据的长期以来关系,因此都只能针对局部窗口内的数据进行建模,这个观点和TransAD是一样的;
  2. 近年来transformer表现出了提取时序数据长期依赖关系(如:周期性、季节性等)的优势,因此能够基于transformer进行依赖关系提取,但是简单的分散点位很难作为这种长序列依赖关系的强有力的表征,而且时序数据的周期性会受到多种周期性因素(天气、节假日等)的影响,因此需要考虑如何处理这种多周期变化带来的影响;

基于上述两点思考,作者提出了TimesNet这样的模型架构,具体创新点表现如下:

  • 一维到二维的时序数据转换:将一维的时间序列转换成二维的数据表征,同时对时序数据周期内(连续邻近点位变化)和周期间(长期规律性变化)的变化进行建模;对于一个长度为 T T T、通道数为 C C C的一维时间序列 X 1 D ∈ R T ∗ C X_{1D}\in \mathbb R^{T*C} X1DRTC,对于长时间序列而言,其周期性可以通过傅立叶变换计算得到: A = A v g ( A m p ( F F T ( X 1 D ) ) ) \bold A=Avg(Amp(FFT(X_{1D}))) A=Avg(Amp(FFT(X1D))) f 1 , . . . f k = a r g f ∗ ∈ { 1 , . . . , [ T 2 ] } A f_1,...f_k=\underset {f_*\in \{1,...,[\frac {T}{2}]\}}{arg} \bold A f1,...fk=f{1,...,[2T]}argA p 1 , . . . p k = [ T f x ] , . . . , [ T f k ] p_1,...p_k=[\frac{T}{f_x}],...,[\frac{T}{f_k}] p1,...pk=[fxT],...,[fkT]其中 A \bold A A代表了一维时间序列中每个频率分量的强度,强度最大的 k k k个频率 { f 1 , . . . f k } \{f_1,...f_k\} {f1,...fk}对应最显著的 k k k个周期长度 { p 1 , . . . p k } \{p_1,...p_k\} {p1,...pk},上述过程简记如下: A , { f 1 , . . . f k } , { p 1 , . . . p k } = P e r i o d ( X 1 D ) \bold A,\{f_1,...f_k\},\{p_1,...p_k\}=Period(X_{1D}) A,{f1,...fk},{p1,...pk}=Period(X1D)这样基于上述计算就可以根据不同的周期长度进行计算出不同的二维张量表示: X 2 D i = R e s h a p e p i , f i ( P a d d i n g ( X 1 D ) ) , i ∈ { 1 , . . . k } X_{2D}^i=Reshape_{p_i,f_i}(Padding(X_{1D})),i\in\{1,...k\} X2Di=Reshapepi,fi(Padding(X1D)),i{1,...k}其中Padding 操作是为了保持张量维度的一致性; X 2 D i X_{2D}^i X2Di就可以表示在频率 f i f_i fi、周期长度 p i p_i pi的基础上转换的第 i i i个二维张量,行和列分别表示周期内和周期间的变化,经过这个转换,一维的时间序列数据就可以被转换成 k k k个不同频率和周期下的二维的张量集合 { X 2 D 1 , . . . X 2 D k } \{X_{2D}^1,...X_{2D}^k\} {X2D1,...X2Dk},经过这种转换,就可以采用二维卷积核来进行特征提取;
    在这里插入图片描述
    在这里插入图片描述
  • TimesBlock:在完成一维到二维的转换后,采用Inception模型进行二维的张量集合处理(简化了一下表示,具体看原文): X ^ 2 D = I n c e p t i o n ( X 2 D ) \hat X_{2D}=Inception(X_{2D}) X^2D=Inception(X2D)然后就像残差模块的处理一样,通过聚合将卷积后的数据转换到一维空间: X ^ 1 D = T r u n c ( R e s h a p e 1 , p ∗ f ( X ^ 2 D ) ) \hat X_{1D}=Trunc(Reshape_{1,p*f}(\hat X_{2D})) X^1D=Trunc(Reshape1,pf(X^2D))然后采用加权求和的方式得到最终的输出:在这里插入图片描述
    在这里插入图片描述
    该模型可以应用于多种任务:时序数据分类、预测、异常检测、缺失值填充等,从实验效果来看很全能;

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

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

相关文章

《乡村振兴战略下传统村落文化旅游设计》浙江新华书店已售罄!

《乡村振兴战略下传统村落文化旅游设计》浙江新华书店已售罄!

CTF Stegano练习之隐写初探

今天要介绍的是CTF练习中的Stegano隐写题型 。做隐写题的时候,工具是很重要的,接下来介绍一些工具。 1、TrID TrID是一款根据文件二进制数据特征进行判断的文件类型识别工具。虽然也有类似的文件类型识别工具,但是大多数都是使用硬编码的识…

11个点告诉你 如何用Docker+jenkins 运行 python 自动化

一、实现思路 在 Linux 服务器安装 docker 创建 jenkins 容器 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目 执行完成之后删除容器 二、环境准备 Linux 服务器一台(我的是 C…

面向数据科学家和分析师的统计基础

推荐:使用 NSDT场景编辑器助你快速搭建可编辑的3D应用场景 “统计学是科学的语法。 卡尔皮尔逊 统计学在数据科学和数据分析中的重要性不容低估。统计提供了查找结构和提供更深入数据见解的工具和方法。统计学和数学都喜欢事实,讨厌猜测。了解这两个重要…

网络安全(黑客)零基础入门

导语 什么是 Web 安全?我又该如何入门学习它呢?学习过程中又应注意哪些问题呢?... 或许你的心中有着这样的疑问、不过别着急,本文会为你一一解答这些问题。 正文 定义 Web 安全,顾名思义便是由保障 Web 应用能够持续…

微信私域更好玩了

之前分享过,“小绿书”“公众号文章转音频”等内测中或悄悄已升级的功能。 其实,微信还在内测很多新功能,只是没公开 今天,小编又发现新升级 就是『附近』功能 增加了一个本地生活的入口,这里面是短视频和图文 展示…

IoTDB 1.x 开启外部访问

对于部署的IoTDB数据库,如果需要局域网内其他设备进行访问的处理。 1、防火墙开放端口 无论windows还是liunx都需要你将6667默认的端口加入防火墙中,否则肯定是无法访问端口 2、修改配置文件 对conf/iotdb-datanode.properties文件中的 修改为本机的…

Oracle DB 安全性 : TDE HSM TCPS Wallet Imperva

• 配置口令文件以使用区分大小写的口令 • 对表空间进行加密 • 配置对网络服务的细粒度访问 TCPS 安全口令支持 Oracle Database 11g中的口令: • 区分大小写 • 包含更多的字符 • 使用更安全的散列算法 • 在散列算法中使用salt 用户名仍是Oracle 标识…

Python入门02

0目录 1.容器操作(序列操作) 2.函数 3.模块 1.容器操作(序列操作) 列表的基本操作 定义一个列表[] 访问列表(打印或者通过下标和索引) 新增元素 Append(在末尾) 指定位置新增元素 Insert 删除&…

【算法篇C++实现】算法的时间、空间复杂度

文章目录 🚀一、算法的概念🚀二、算法的特征1.可行性2.确定性3.有穷性4.输入5.输出 🚀三、算法的评价1.正确性2.可读性3.健壮性 🚀四、算法的复杂度⛳(一)时间复杂度1、时间复杂度的概念2、大O的渐进表示法…

多线程案例(4)-线程池

文章目录 多线程案例四四、线程池 大家好,我是晓星航。今天为大家带来的是 多线程案例-线程池 相关的讲解!😀 多线程案例四 四、线程池 线程池是什么 虽然创建线程 / 销毁线程 的开销 想象这么一个场景: 在学校附近新开了一家…

MyBatis查询数据库之四(动态SQL -- if、trim、where、set、foreach 标签)

目录 动态SQL 一、 标签 二、标签 三、标签 四、标签 五、标签 动态SQL 动态 SQL 是 MyBatis 的强大特性之一,使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。…

【脚踢数据结构】链表(2)

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔&…

Effective Java笔记(29)优先考虑泛型

一般来说 ,将集合声 明参数化,以及使用 JDK 所提供的泛型方法,这些都不太困难 。编写自己的泛型会比较困难一些,但是值得花些时间去学习如何编写 。 以简单的(玩具)堆校实现为例 : // Object -…

【OpenGauss源码学习 —— 执行算子(SeqScan算子)】

执行算子(SeqScan算子) 执行算子概述扫描算子SeqScan算子ExecInitSeqScan函数InitScanRelation函数ExecSeqScan函数 总结 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和学术成果,力求遵…

IoTDB1.X windows运行失败问题的处理

在windows运行 IoTDB1.x时 会出现如图所示的问题 为什么会出现这样的问题?java没有安装还是未调用成功,我是JAVA8~11~17各种更换都未能解决问题,最后对其bat文件进行查看,发现在conf\datanode-env.bat、conf\confignode-env.bat这…

拆解与重构:慕云游首页组件化设计

目录 前言1 项目准备1.1 创建项目目录1.2 搭建项目开发环境 2 项目组件化2.1 在当前环境启动原有项目2.2 顶部组件2.3 幻灯片组件2.3.1 功能实现2.3.2 加载中组件2.3.3 结构和样式2.3.4 使用Ajax获取数据 2.4 机酒自由行组件2.5 拆分余下的css文件 3 项目完善4 源码 前言 在现代…

C 语言的逻辑运算符

C 语言的逻辑运算符包括三种: 逻辑运算符可以将两个关系表达式连接起来. Suppose exp1 and exp2 are two simple relational expressions, such as cat > rat and debt 1000 . Then you can state the following: ■ exp1 && exp2 is true only if bo…

用库造一个list的轮子 【C++】

文章目录 list的模拟实现默认成员函数构造函数拷贝构造函数赋值运算符重载析构函数 迭代器迭代器为什么要存在?const_iteratorbegin和end inserterasepush_back && pop_backpush_front &&pop_frontswap 完整代码 list的模拟实现 默认成员函数 构造…

SpringBoot 底层机制分析[上]

文章目录 分析SpringBoot 底层机制【Tomcat 启动分析Spring 容器初始化Tomcat 如何关联Spring 容器】[上]搭建SpringBoot 底层机制开发环境Configuration Bean 会发生什么,并分析机制提出问题:SpringBoot 是怎么启动Tomcat ,并可以支持访问C…