当前位置:首页 > 科技  > 软件

TimesNet:时间序列预测的最新模型

来源: 责编: 时间:2023-10-16 17:10:32 413观看
导读2020年发布的N-BEATS、2022年发布的N-HiTS和2023年3月发布的PatchTST开始。N-BEATS和N-HiTS依赖于多层感知器架构,而PatchTST利用了Transformer架构。2023年4月发表了一个新的模型,它在时间序列分析的多个任务中实现了

2020年发布的N-BEATS、2022年发布的N-HiTS和2023年3月发布的PatchTST开始。N-BEATS和N-HiTS依赖于多层感知器架构,而PatchTST利用了Transformer架构。tLv28资讯网——每日最新资讯28at.com

2023年4月发表了一个新的模型,它在时间序列分析的多个任务中实现了最先进的结果,如预测、imputation、分类和异常检测:TimesNet。tLv28资讯网——每日最新资讯28at.com

TimesNet由Wu、Hu、Liu等人在他们的论文《TimesNet: Temporal 2D-Variation Modeling For General Time Series Analysis》中提出。tLv28资讯网——每日最新资讯28at.com

与以前的模型不同,它使用基于cnn的架构来跨不同的任务获得最先进的结果,使其成为时间序列分析的基础模型的绝佳候选。tLv28资讯网——每日最新资讯28at.com

在本文中,我们将探讨TimesNet的架构和内部工作原理。然后将该模型应用于预测任务,与N-BEATS和N-HiTS进行对比。tLv28资讯网——每日最新资讯28at.com

TimesNet

TimesNet背后的动机来自于许多现实生活中的时间序列表现出多周期性的认识。这意味着变化发生在不同的时期。tLv28资讯网——每日最新资讯28at.com

例如,室外温度有日周期和年周期。通常,白天比晚上热,夏天比冬天热。这些多个时期相互重叠和相互作用,使得很难单独分离和建模。tLv28资讯网——每日最新资讯28at.com

周期内变化是指温度在一天内的变化,周期间变化是指温度每天或每年的变化。所以TimesNet的作者提出在二维空间中重塑序列,以模拟周期内和周期间的变化。tLv28资讯网——每日最新资讯28at.com

TimesNet的架构

tLv28资讯网——每日最新资讯28at.com

从上图中,我们可以看到TimesNet是多个带有跳过连接的TimesBlock的堆栈。tLv28资讯网——每日最新资讯28at.com

在每个TimesBlock中,首先通过快速傅立叶变换(FTT)来找到数据中的不同周期。然后被重塑为一个2D向量,并发送到一个Inception块中,在那里它学习并预测该系列的2D表示。然后使用自适应聚合将该深度表示重塑回一维向量。tLv28资讯网——每日最新资讯28at.com

捕捉多周期性

为了捕获时间序列中多个时期的变化,作者建议将一维序列转换为二维空间,同时模拟周期内和周期间的变化。tLv28资讯网——每日最新资讯28at.com

tLv28资讯网——每日最新资讯28at.com

在上图中,我们可以看到模型是如何表示二维空间中的变化的。在红色矩形内可以看到周期内的变化,也就是数据在一个周期内的变化。然后蓝色矩形包含周期间变化,这是数据如何从一个时期到另一个时期的变化。tLv28资讯网——每日最新资讯28at.com

为了更好地理解这一点,假设我们有以周为周期的每日数据。周期间变化是指数据在周一、周二、周三等期间的变化情况。tLv28资讯网——每日最新资讯28at.com

那么,周期间变化就是数据从第1周的星期一到第2周的星期一,从第1周的星期二到第2周的星期二的变化。换句话说,它是同一阶段的数据在不同时期的变化。tLv28资讯网——每日最新资讯28at.com

然后,这些变化在二维空间中表示,其中周期间变化是垂直的,周期内变化是水平的。这使得模型能够更好地学习数据变化的表示。tLv28资讯网——每日最新资讯28at.com

一维矢量表示的是相邻点之间的变化,而二维矢量表示的是相邻点和相邻周期之间的变化,给出了一个更完整的图像。tLv28资讯网——每日最新资讯28at.com

原理看着很简单,但是还有一个最重要的问题:如何找到周期?tLv28资讯网——每日最新资讯28at.com

确定周期性

为了识别时间序列中的多个周期,该模型应用了快速傅里叶变换(FTT)。tLv28资讯网——每日最新资讯28at.com

这是一个数学运算,将信号转换成频率和幅度的函数。tLv28资讯网——每日最新资讯28at.com

tLv28资讯网——每日最新资讯28at.com

在上图中,作者说明了金融交易税是如何应用的。一旦我们有了每个周期的频率和幅度,幅度最大的就被认为是最相关的。tLv28资讯网——每日最新资讯28at.com

例如,下面是对eth1数据集执行FTT的结果。tLv28资讯网——每日最新资讯28at.com

tLv28资讯网——每日最新资讯28at.com

在上图中,快速傅里叶变换能够快速识别数据中的日周期和年周期,因为我们在这些周期中看到更高的振幅峰值。tLv28资讯网——每日最新资讯28at.com

一旦应用了FTT,用户可以设置一个参数k来选择top-k最重要的周期,这些周期是振幅最大的周期。tLv28资讯网——每日最新资讯28at.com

然后,TimesNet为每个周期创建2D向量,并将这些向量发送到2D内核以捕获时间变化。tLv28资讯网——每日最新资讯28at.com

TimesBlock

一旦序列进行了傅里叶变换,并为前k个周期创建了二维张量,数据就被发送到Inception 块,如下图所示。tLv28资讯网——每日最新资讯28at.com

tLv28资讯网——每日最新资讯28at.com

TimesBlock是最主要的模型组件:Inception模块是2015年发布的计算机视觉模型GoogLeNet的构建块。tLv28资讯网——每日最新资讯28at.com

Inception模块的主要思想是通过保持数据稀疏来有效地表示数据。这样就可以在技术上增加神经网络的大小,同时保持其计算效率。tLv28资讯网——每日最新资讯28at.com

这是通过执行各种卷积和池化操作来实现的,然后将所有内容连接起来。在TimesNet的上下文中,这就是Inception模块的样子。tLv28资讯网——每日最新资讯28at.com

tLv28资讯网——每日最新资讯28at.com

什么作者选择视觉模型来处理时间序列数据。tLv28资讯网——每日最新资讯28at.com

一个简单的答案是,视觉模型特别擅长解析2D数据,比如图像。另一个好处是可以在TimesNet可以更其他的视觉主干。tLv28资讯网——每日最新资讯28at.com

自适应聚合

要执行聚合,必须首先将2D表示重塑为1D向量。tLv28资讯网——每日最新资讯28at.com

使用自适应聚合的原因是不同的周期有不同的振幅,这表明了它们的重要性。tLv28资讯网——每日最新资讯28at.com

这就是为什么FTT的输出也被发送到softmax层,这样可以使用每个周期的相对重要性进行聚合。tLv28资讯网——每日最新资讯28at.com

聚合的数据是单个TimesBlock的输出。然后将多个TimesBlock与残差连接叠加创建TimesNet模型。tLv28资讯网——每日最新资讯28at.com

TimesNet预测

现在让我们将TimesNet模型应用于预测任务,并将其性能与N-BEATS和N-HiTS进行比较。tLv28资讯网——每日最新资讯28at.com

我们使用了知识共享署名许可下发布的Etth1数据集。这是文献中广泛使用的时间序列预测基准。它跟踪每小时的变压器油温,这反映了设备的状况。tLv28资讯网——每日最新资讯28at.com

导入库并读取数据,这里我们使用Nixtla提供的NeuralForecast实现。tLv28资讯网——每日最新资讯28at.com

import numpy as np import pandas as pd import matplotlib.pyplot as plt  from neuralforecast.core import NeuralForecast from neuralforecast.models import NHITS, NBEATS, TimesNet  from neuralforecast.losses.numpy import mae, mse

读取CSV文件。tLv28资讯网——每日最新资讯28at.com

df = pd.read_csv('data/etth1.csv') df['ds'] = pd.to_datetime(df['ds']) df.head()

tLv28资讯网——每日最新资讯28at.com

在上图中,请注意数据集已经具有NeuralForecast所期望的格式。包需要三列:tLv28资讯网——每日最新资讯28at.com

  • ds:日期列
  • id列:unique_id
  • y值列

然后,我们先看看数据tLv28资讯网——每日最新资讯28at.com

fig, ax = plt.subplots()  ax.plot(df['y']) ax.set_xlabel('Time') ax.set_ylabel('Oil temperature')  fig.autofmt_xdate() plt.tight_layout()

tLv28资讯网——每日最新资讯28at.com

现在我们开始预测,使用96小时的预测长度,这是文献中长期预测的常见长度。tLv28资讯网——每日最新资讯28at.com

我们还保留了两个96个时间步长的窗口来评估我们的模型。tLv28资讯网——每日最新资讯28at.com

我们定义一个我们想要用来执行预测任务的模型列表。这里将使用N-BEATS, N-HiTS和TimesNet。tLv28资讯网——每日最新资讯28at.com

保留所有模型的默认参数,并将最大epoch数限制为50。请注意,默认情况下,TimesNet将选择数据中最重要的前5个轮次。tLv28资讯网——每日最新资讯28at.com

horizon = 96  models = [NHITS(h=horizon,                input_size=2*horizon,                max_steps=50),          NBEATS(h=horizon,                input_size=2*horizon,                max_steps=50),          TimesNet(h=horizon,                  input_size=2*horizon,                  max_steps=50)]

下一步是用模型列表和数据频率(每小时一次)实例化NeuralForecasts对象。tLv28资讯网——每日最新资讯28at.com

nf = NeuralForecast(models=models, freq='H')

然后运行交叉验证,这样就有了数据集的预测值和实际值。可以评估每个模型的性能。tLv28资讯网——每日最新资讯28at.com

preds_df = nf.cross_validation(df=df, step_size=horizon, n_windows=2)

tLv28资讯网——每日最新资讯28at.com

我们可以看到实际值,以及来自我们指定的每个模型的预测。这样可以很容易地将预测与实际值相比较。tLv28资讯网——每日最新资讯28at.com

fig, ax = plt.subplots()  ax.plot(preds_df['y'], label='actual') ax.plot(preds_df['NHITS'], label='N-HITS', ls='--') ax.plot(preds_df['NBEATS'], label='N-BEATS', ls=':') ax.plot(preds_df['TimesNet'], label='TimesNet', ls='-.')  ax.legend(loc='best') ax.set_xlabel('Time steps') ax.set_ylabel('Oil temperature')  fig.autofmt_xdate() plt.tight_layout()

tLv28资讯网——每日最新资讯28at.com

在上图中,似乎所有的模型都无法预测测试集中观察到的油温下降。但是可以看到N-BEATS和N-HiTS已经捕捉到了一些在TimesNet的预测中没有观察到的周期性模式。tLv28资讯网——每日最新资讯28at.com

但是最终还需要通过计算MSE和MAE来评估模型,以确定哪个模型是最好的。tLv28资讯网——每日最新资讯28at.com

data = {'N-HiTS': [mae(preds_df['NHITS'], preds_df['y']), mse(preds_df['NHITS'], preds_df['y'])],        'N-BEATS': [mae(preds_df['NBEATS'], preds_df['y']), mse(preds_df['NBEATS'], preds_df['y'])],        'TimesNet': [mae(preds_df['TimesNet'], preds_df['y']), mse(preds_df['TimesNet'], preds_df['y'])]}  metrics_df = pd.DataFrame(data=data) metrics_df.index = ['mae', 'mse']  metrics_df.style.highlight_min(color='lightgreen', axis=1)

tLv28资讯网——每日最新资讯28at.com

从上图可以看出,N-HiTS获得最低的MAE,而N-BEATS获得最低的MSE。MAE的差异为0.002,MSE的差异为0.00025。由于MSE的差异非常小,特别是考虑到误差是平方的,所以我认为N-HiTS是这项任务的首选模型。tLv28资讯网——每日最新资讯28at.com

总结

本文并不是要证明TimesNet有多好,因为不同的模型可能适应不同的任务,并且我们也没有进行超参数优化,我们介绍TimesNet的主要目的是他的思路,它不仅将cnn的架构引入了时间序列预测,并且还提供了一种周期性判别的新的思路,这些都是值得我们学习的。tLv28资讯网——每日最新资讯28at.com

一如既往,每个预测问题都需要一个独特的方法和一个特定的模型,所以你可以在你的模型列表中增加一个TimesNet了。tLv28资讯网——每日最新资讯28at.com

本文代码:https://github.com/marcopeix/time-series-analysistLv28资讯网——每日最新资讯28at.com

TimesNet,论文地址:https://browse.arxiv.org/pdf/2210.02186.pdftLv28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-13626-0.htmlTimesNet:时间序列预测的最新模型

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 超简单,在IntelliJ IDEA中使用JUnit和Mockito进行单元测试

下一篇: Java反射机制:动态加载类与方法的调用

标签:
  • 热门焦点
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • 最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
  • 电博会上海尔智家模拟500平大平层,还原生活空间沉浸式体验

    电博会为了更好地让参展观众真正感受到智能家居的绝妙之处,海尔智家的程传岭先生同样介绍了展会上海尔智家的模拟500平大平层,还原生活空间沉浸式体验。程传
Top