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

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍

ETT(电变压器温度):由两个小时级数据集(ETTh)和两个 15 分钟级数据集(ETTm)组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。

traffic(交通) :描述了道路占用率。它包含 2015 年至 2016 年旧金山高速公路传感器记录的每小时数据

electrity(电力):从 2012 年到 2014 年收集了 321 个客户每小时电力消耗。

exchange_rate(汇率):收集了 1990 年至 2016 年 8 个国家的每日汇率。

Weather:包括 21 个天气指标,例如空气温度和湿度。它的数据在 2020 年的每 10 分钟记录一次。

ILLNESS:描述了患有流感疾病的患者与患者数量的比率。它包括 2002 年至 2021 年美国疾病控制和预防中心每周数据。

  数据集链接:

https://drive.google.com/drive/folders/1ZOYpTUa82_jCcxIdTmyr0LXQfvaM9vIy

图片

参考文献:

[1]https://arxiv.org/abs/2407.05278

2. 处理方法

(1)方法

KAN(Kolmogorov–Arnold Networks)模块负责初始特征提取。KAN是一种针对时间序列的有效特征提取模块,可以帮助模型在更高维度上理解输入特征。Transformer使用编码器和解码器,编码器和解码器部分通过自注意力机制捕捉时间序列中的长程依赖,并实现信息在不同时间步间的高效传播。最后通过嵌入层和全连接层将输入和输出进行维度转换,实现特征的高效表达与映射。

·KAN

KAN 的核心是学习给定问题的组合结构(外部自由度)和单变量函数(内部自由度)。这使得 KAN 不仅可以像 MLP 一样学习特征,还可以非常准确地优化这些学习到的特征。KAN 利用了样条曲线和 MLP 的优点,同时避免了它们的缺点。样条对于低维函数来说是准确的,并且可以轻松地进行局部调整,但会受到维数灾难的影响。另一方面,MLP 更擅长利用组合结构,但难以优化单变量函数。通过结合这两种方法,KAN 可以比单独的样条曲线或 MLP 更有效地学习和准确地表示复杂函数。

图片

·Transformer

图片

(2)实验结果

训练集、验证集和测试集划分设置为6:2:2,实验参数设置如下:

parser = argparse.ArgumentParser(description='KAN')
parser.add_argument('--look_back', type=int, default='10', help='历史look_back步,修改这里也要修改model的look_back')
parser.add_argument('--T', type=int, default='1', help='预测未来的T步,修改这里也要修改model的T')
parser.add_argument('--epochs', type=int, default='300', help='训练轮数')
parser.add_argument('--batch_size', type=int, default='32', help='批大小')
parser.add_argument('--data_path', type=str, default='mydata/ETTm1.csv', help='文件路径')
parser.add_argument('--freq', type=str, default='15min', help='时间特征编码')# freq选项:[s:秒,t:分钟,h:小时,d:每天,b:工作日,w:每周,m:每月],也可以使用更详细的频率,如'15min'或'3h'
parser.add_argument('--num_features', type=int, default='6', help='数据一共多少个特征')
parser.add_argument('--target', type=str, default='OT', help='预测的目标变量')
parser.add_argument('--embed_dim', type=int, default='32', help='嵌入维度')
parser.add_argument('--dense_dim', type=int, default='128', help='隐藏层神经元个数')
parser.add_argument('--num_heads', type=int, default='4', help='头数')
parser.add_argument('--dropout_rate', type=float, default='0.1', help='失活率')
parser.add_argument('--num_blocks', type=int, default='2', help='编码器解码器数')
parser.add_argument('--learn_rate', type=float, default='0.001', help='学习率')args = parser.parse_args()

注:需根据数据集的特征进一步探索最合适的参数组合,以提升模型性能。

本文方法ETTm1数据集

图片

图片

本文方法ETTh1数据集

图片

图片

3. 代码下载

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

最后:

小编会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

http://www.lryc.cn/news/494050.html

相关文章:

  • 鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)
  • 【k8s深入理解之 Scheme 补充-2】理解 register.go 暴露的 AddToScheme 函数
  • uni-app写的微信小程序每次换账号登录时出现缓存上一个账号数据的问题
  • 数据分析流程中的Lambda架构,以及数据湖基于Hadoop、Spark的实现
  • Android 原生解析 Json 字符串
  • Windsurf可以上传图片开发UI了
  • Qt UI设计 菜单栏无法输入名字
  • blender 视频背景
  • 【python】OpenCV—Tracking(10.5)—dlib
  • 音视频入门基础:MPEG2-TS专题(9)——FFmpeg源码中,解码TS Header的实现
  • 解决“磁盘已插上,但Windows系统无法识别“问题
  • 论文笔记-WWW2024-ClickPrompt
  • 53 基于单片机的8路抢答器加记分
  • 【java数据结构】二叉树OJ题
  • IIC和SPI的时序图
  • MySQL数据库表的操作
  • .net core 创建linux服务,并实现服务的自我更新
  • springboot338it职业生涯规划系统--论文pf(论文+源码)_kaic
  • oracle将select作为字段查询
  • Java数据结构和算法相关面试题
  • 网络安全风险评估
  • ADAM优化算法与学习率调度器:深度学习中的关键工具
  • 岛屿数量C++11新特性
  • Git 快速入门:全面了解与安装步骤
  • 基于域自适应的双光融合
  • 迭代器模式 (Iterator Pattern)
  • 039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)
  • 如何将 GitHub 私有仓库(private)转换为公共仓库(public)
  • C++11 右值引用
  • WPS表格学习计划与策略