QuantML-Qlib Model | ICLR 24: 基于独立Patch的时序预测模型

QuantML-Qlib Model | ICLR 24: 基于独立Patch的时序预测模型

原创 QuantML QuantML 2024年07月12日 19:23 上海

Content

图片

论文提出了一种新的时间序列嵌入方法,主要观点是独立地嵌入时间序列块(patches),而不是捕捉这些块之间的依赖关系。

1. 引言 (Introduction)

引言部分介绍了时间序列数据在多种下游任务中的应用,并强调了深度学习在时间序列分析中的优越性能,特别是在表示学习方面。作者指出,自我监督学习,特别是对比学习(CL)和掩码建模(MM),是利用未标记数据的有效策略。论文提出了一种新的时间序列表示学习策略,称为Patch Independence for Time Series (PITS),它通过独立嵌入时间序列块而不是捕捉块之间的依赖关系,来提高时间序列预测和分类的性能,并且在参数数量和训练/推理时间上更为高效。

图片

2. 相关工作 (Related Works)

本章深入探讨了自我监督学习(SSL)在时间序列分析中的进展,特别是对比学习(CL)和掩码建模(MM)作为SSL的两种有效策略。本章回顾了SSL在自然语言处理和计算机视觉中的应用,并详细讨论了时间序列领域的MTM任务,该任务通过部分掩蔽时间序列并预测掩蔽部分来学习表示。此外,本章还对比了不同的时间序列预训练方法,并提出了PITS方法,它通过独立地嵌入时间序列块,而不是依赖于块之间的依赖关系,从而提供了一种新颖的视角来改进时间序列的表示学习。

图片

3. 方法 (Methods)

第三章详细介绍了论文提出的Patch Independence for Time Series (PITS) 方法。PITS方法的核心思想是独立地嵌入时间序列块,而不是依赖于块之间的复杂依赖关系。

3.1 块独立任务:块重建 (Patch-Independent Task: Patch Reconstruction)

PITS方法提出了一种新的预训练任务,称为块重建任务。与传统的掩码建模任务不同,块重建任务不是预测被掩蔽的块,而是自编码未掩蔽的块。这种方法不需要考虑其他块的信息,从而实现了块的独立性。

3.2 块独立架构:多层感知器 (Patch-Independent Architecture: MLP)

为了进一步实现块的独立性,PITS采用了简单的多层感知器(MLP)作为编码器架构。MLP架构专注于提取每个块的独立表示,不编码时间序列块之间的交互。这与传统的Transformer架构不同,后者依赖于多头自注意力机制来捕捉序列内部的依赖关系。

3.3 补充对比学习 (Complementary Contrastive Learning)

为了提高学习表示的性能,PITS引入了补充对比学习(CL)。CL通过生成两个视图(通过互补掩码策略)来创建正样本对。这种方法不需要额外的前向传递,因此在计算上非常高效。

图片

3.4 目标函数 (Objective Function)

PITS的目标函数是重建损失和分层对比损失的总和。重建损失用于确保模型能够准确重建未掩蔽的块,而对比损失则用于确保模型能够区分不同块的表示。

    3.4.1 重建损失 (Reconstruction Loss)

    重建损失是衡量模型重建未掩蔽块的准确性的指标。它通过计算重建块和原始块之间的差异来定义。

    3.4.2 对比损失 (Contrastive Loss)

    对比损失是基于相似性度量的softmax概率来定义的。它鼓励模型将相似的块表示拉近,同时将不相似的块表示推远。

4. 实验 (Experiments)

4.1 实验设置 (Experimental Settings)

实验部分首先介绍了任务和评估指标。作者选择了时间序列预测(TSF)和分类(TSC)两个下游任务来验证PITS方法的有效性。对于评估指标,TSF任务使用了均方误差(MSE)和平均绝对误差(MAE),而TSC任务使用了准确率、精确率、召回率和F1分数。

4.2 时间序列预测 (Time Series Forecasting)

在这一部分,作者详细描述了用于时间序列预测的数据集和基线方法。数据集包括四个ETT数据集(ETTh1, ETTh2, ETTm1, ETTm2)、天气、交通和电力数据集。基线方法涵盖了基于Transformer的模型,如PatchTST、SimMTM、FEDformer和Autoformer,以及线性/MLP模型,如DLinear和TSMixer。

    4.2.1 标准设置 (Standard Setting)

    表2展示了PITS方法与现有最先进方法在多变量时间序列预测任务上的性能比较。结果显示,PITS在效率和性能上都具有竞争力。

    4.2.2 迁移学习 (Transfer Learning)

    作者还探讨了PITS在迁移学习场景下的表现,包括领域内和跨领域迁移学习。表4展示了PITS在不同迁移学习设置下的平均MSE结果,证明了其在大多数情况下都优于现有方法。

4.3 时间序列分类 (Time Series Classification)

在这一部分,作者使用了五个不同的数据集进行时间序列分类任务的实验,包括SleepEEG、Epilepsy、FD-B、Gesture和EMG数据集。基线方法包括TS-SD、TS2Vec、CoST、LaST、Mixing-Up、TS-TCC、TF-C、TST、TimeMAE和SimMTM。

图片

    4.3.1 标准设置 (Standard Setting)

    表5展示了PITS方法在SleepEEG数据集上的性能,与所有现有最先进方法相比,PITS在所有评估指标上都取得了最佳性能。

    4.3.2 迁移学习 (Transfer Learning)

    表6展示了PITS在迁移学习设置下的性能,包括领域内和跨领域迁移学习。结果表明,PITS在所有场景中都优于现有方法,尤其是在具有挑战性的跨领域迁移学习设置中。

图片

4.4 消融研究 (Ablation Study)

作者进行了一系列消融研究来评估PITS中不同组件的影响。

    4.4.1 PI/PD任务/架构的影响 (Effect of PI/PD Tasks/Architectures)

    表7展示了使用不同预训练任务和架构对时间序列预测性能的影响。结果表明,无论架构选择如何,使用PI任务进行预训练始终优于PD任务。

图片

    4.4.2 隐藏维度和dropout (Hidden Dimension and Dropout)

    图4展示了不同隐藏维度和dropout率对模型性能的影响。结果表明,使用dropout对于学习高维表示是必要的。

图片

    4.4.3 不同预训练任务的性能 (Performance of Various Pretrain Tasks)

    表8比较了使用不同预训练任务对模型性能的影响,强调了所提出的PI任务的有效性。

图片

    4.4.4 下游任务的表示选择 (Which Representation to Use for Downstream Tasks)

    表9和表10探讨了在下游任务中使用不同层级的表示对性能的影响。

图片

    4.4.5 对比学习的层次设计 (Hierarchical Design of Complementary CL)

    表11评估了对比学习的层次设计对性能的影响。

图片

    4.4.6 与PatchTST的比较 (Comparison with PatchTST)

    表12展示了PITS与PatchTST相比,通过改变预训练任务和编码器架构对性能的改进。

图片

5. 分析 (Analysis)

本章深入探讨了PITS方法的鲁棒性、效率和解释性。通过一系列实验,作者评估了块独立(PI)任务与块依赖(PD)任务在面对分布偏移时的表现,证明了PI任务在所有情况下都更为稳健。同时,比较了多层感知器(MLP)和Transformer架构对不同补丁大小的鲁棒性,发现MLP在各种补丁尺寸下均表现更佳。此外,论文还讨论了MLP在解释性方面的优势,展示了其在捕捉时间序列季节性方面的能力。最后,通过可视化和效率分析,论文进一步证实了PITS方法在时间序列表示学习中的有效性和实用性。

图片

6. 结论 (Conclusion)

本文强调了PITS方法在时间序列表示学习中的有效性。作者提出,与以往侧重于时间序列块之间依赖性的工作不同,PITS通过引入块重建任务和采用块级独立多层感知器(MLP),展示了在预测和分类任务上的卓越性能。此外,PITS在面对分布偏移和不同补丁大小时的鲁棒性,以及在参数数量和训练效率方面的优势,使其在实际应用中具有重要价值。论文还讨论了PITS在不同领域应用的潜力,并强调了简单预训练任务和模型架构在未来研究中的重要性。

2. 代码部分

我们在QuantML-Qlib实现Supervised PITS模型。由于有部分c代码,需要编译后再使用,在QuantML-Qlib根目录下运行以下命令进行编译

python  setup.py build_ext --inplace

然后将我们的代码拷贝进examples/benchmarks,目前quantml-qlib在qlib的基础上已经支持40多个模型,包括线性模型,树模型,MLP类,CNN类,RNN类,GNN类,Transformer类以及KAN等,各类SOTA模型会不断更新。

图片

在yaml文件中设置好数据路径,超参数后,运行run.py即可。

模型代码在PITS.py中, 代码下载地址见星球。

模型回测结果:

策略alpha:18.25%,超额最大回撤6.80%,超额信息比1.98

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQl高级篇-主从复制

主从复制 复制的基本原理 slave会从master读取binlog来进行数据同步 MySQL复制过程分成三步: master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;slave将master的binary log events拷贝到它的中继日志(r…

SpringBoot+Vue实现简单的文件上传(txt篇)

SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI 2 页面 3 效果&#xff1a;只能上传txt文件且大小限制为2M&#xff0c;选择文件后自动上传。 4 前端代码 <template><div class"container"><el-…

2024-07-13 Unity AI状态机2 —— 项目介绍

文章目录 1 项目介绍2 模块介绍2.1 BaseState2.2 ...State2.2.1 PatrolState2.2.2 ChaseState / AttackState / BackState 2.3 StateMachine2.4 Monster 3 其他功能4 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2…

SQL 字段类型-上

总 数据类型关键字描述整数迷你整型tinyint使用1个字节存储整数短整型smallint使用2个字节存储整数中整型mediumint使用3个字节存储整数标准整型int使用4个字节存储整数小数大整型bigint使用8个字节存储单进度float (.. , ..)使用4个字节 ...表示宽度 后面的... 表示小数位双精…

链接追踪系列-08.mac m1安装logstash-番外

下载地址&#xff1a;https://elasticsearch.cn/download/ 配置es相关&#xff1a; #安装plugin&#xff1a; jelexbogon bin % ./logstash-plugin install logstash-codec-json_lines启动&#xff1a;指定配置文件运行 jelexbogon bin % nohup ./logstash -f ../config…

docker安装mysql, 虚拟机连接mysql

docker已安装&#xff1a;安装教程docker和docker的安装-CSDN博客docker是容器技术&#xff08;软件&#xff09;&#xff0c;提供标准的应用镜像&#xff08;包含应用&#xff0c;和应用的依赖&#xff09;可以轻松在docker里安装应用&#xff0c;每个应用独立容器。https://b…

Linux系列--命令详解

目录 一、Linux资源管理方式 二、查询类型命令详解 三、文件管理类型命令详解 四、文件压缩与解压 五、文件编辑 六、系统命令 七、文件内容查看命令 一、Linux资源管理方式 linux操作系统采用一个文档树来组织所有的资源。这棵树的根目录的名字叫做&#xff1a;//…

Spring AOP 实现 Excel 导出统一处理

你好&#xff0c;我是柳岸花开。在实际开发中&#xff0c;经常会遇到需要导出 Excel 数据的需求。为了避免代码重复&#xff0c;我们可以使用 Spring AOP&#xff08;面向切面编程&#xff09;来实现 Excel 导出的统一处理。本文将介绍如何使用 Spring AOP 在项目中统一处理 Ex…

三参数陷波器

传统陷波器特性 传统陷波器的传递函数为&#xff1a; 传统陷波器的 Bode 图如图所示&#xff0c;根据图中曲线表明&#xff0c;当ξ 0.1、ξ 1、 ξ 10 时&#xff0c;随着ξ 值的增加&#xff0c;陷波宽度增大&#xff0c;陷波幅值也增大&#xff0c;此时&#xff0c;陷波…

线程安全(五)volatile 修饰共享变量(JIT即时编译器、指令重排序)

目录 一、volatile 简介1.1 定义1.2 volatile 的两个特性二、特性1:保证线程间的可见性示例1:普通场景1)代码示例:2)执行结果:3)总结:示例2:被 JIT 即时编译器优化1)代码示例:2)执行结果:3)原因分析:4)什么是 JIT 即时编译器?4)解决方案一:5)解决方案二:三…

三相PWM整流器PI双闭环控制Simulink

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Rb&#xff09;软件。建议采用matlab2017 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.拓扑结构&#xff1a; 3.模型算法架构&#xff1a; 4.仿真算法&#xff1a; &am…

Camunda如何通过外部任务与其他系统自动交互

文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介 前面我们已经介绍了Camunda的基本操作、任务、表&#xff1a; Camunda组件与服务与…

OpenStack Yoga版安装笔记(六)glance练习

1、glance架构 Glance api处理来自用户端&#xff08;OpenStackClient等&#xff09;的请求&#xff0c;如果是读写镜像元数据&#xff0c;则对glance db进行读写操作&#xff0c;因为镜像元数据都保存在glance db里面&#xff1b;如果是存取镜像本身&#xff0c;则对后端存储…

Ubuntu系统上安装Apache和WordPress

** 第一步跟新系统包 ** 首先跟新系统包 sudo apt update sudo apt upgrade第二步下载安装apache sudo apt install apache2 ##查看apache的状态是否启动成功 sudo systemctl status apache2 ##查看服务器的ip地址 sudo ip a通过ip地址进行访问apache页面 第三步下载安装…

vue3+vite从零架构:写组件、构建、打包并上传个人前端组件库至私有npm仓库最终在自己项目中下载并使用(超详细的流程,小编已实现)

目录 第一章 前言 第二章 准备工作 第三章 封装组件 3.1 文件结构 3.2 编写组件代码 第四章 项目打包 第五章 发布到npm 5.1 npm准备工作 5.2 发布npm包 ​编辑 第六章 从npm安装使用 第一章 前言 在我们很多开发过程中&#xff0c;不管是使用vue还是react&#x…

github相关命令

如果我们要从 GitHub 上拉取一个项目到本地&#xff0c;进行修改并上传回去&#xff0c;通常需要以下步骤&#xff1a; 1. 克隆远程仓库到本地 使用 git clone 命令将 GitHub 上的项目克隆到本地&#xff1a; (网址示例如下所示&#xff09; git clone https://github.com/你的…

DP- 使用最小花费爬楼梯 DAY19

使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。 …

STM32对flash中程序的加密保护

2024.7.14 今天学习了很多关于STM32对于程序的保护措施&#xff0c;原先一直不理解为什么DF CAR需要做加密&#xff0c;他的加密流程我也不是很知道&#xff0c;后面发现他是在控制任务初始化的时候&#xff0c;加了一个判断flash中某个区域的数值的程序&#xff0c;如果判断失…

易懂的吉文斯(Givens)变换(一)

文章目录 二阶Givens旋转矩阵作用于向量作用于矩阵更一般的情况 二阶Givens旋转矩阵 在QR分解中&#xff0c;Givens旋转是一种用于将矩阵变成上三角形的技术。 别的教程里面往往会直接给出一个n*n阶的通用Givens矩阵形式&#xff0c;但是这样太过抽象难懂了&#xff0c;而且难…

ceph 部署

端口号 NFS 2049 rpcbind 111 NFS 目录越深&#xff0c;写入性能越差 操作简单&#xff0c; 一.前言&#xff1a;存储知识 1、存储基础 单机存储设备 【1】DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS…