1. TimesNet:时序预测领域的革新者
第一次接触TimesNet是在处理一组复杂的销售预测数据时。传统方法在捕捉周期性变化和多尺度特征上表现乏力,直到发现了这个将时序数据转换到频域处理的创新架构。TimesNet的核心思想是把一维时间序列转换成二维张量,通过二维卷积网络同时捕捉周期内(intra-period)和周期间(inter-period)的依赖关系。
关键突破:传统方法要么专注时域特征(如LSTM),要么单独分析频域信息(如傅里叶变换),而TimesNet首次实现了两者的有机统一。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构深度解析
2.1 时序到频域的转换机制
TimesNet的核心是快速傅里叶变换(FFT)模块。给定长度为T的输入序列X∈R^(T×d),首先对每个维度计算FFT得到振幅谱A∈R^(T×d)。选取前k个显著频率(默认k=5),其对应周期长度计算为T/f。例如:
- 日数据中发现周周期(f=1/7)
- 小时数据中发现日周期(f=1/24)
python复制# FFT实现示例
import torch
def FFT_for_Period(x, k=5):
xf = torch.fft.rfft(x, dim=1)
freq = torch.fft.rfftfreq(x.size(1))
amp = torch.abs(xf)
_, topk_indices = torch.topk(amp, k, dim=1)
return torch.gather(freq.expand_as(topk_indices), 1, topk_indices)
2.2 二维张量构建技巧
对每个选定的周期p,将原始序列reshape为3D张量:
- 第一维:周期数量(T/p)
- 第二维:周期长度(p)
- 第三维:特征维度(d)
例如处理日数据时,若发现周周期(p=7),则把T天数据转换为(T/7)×7×d的张量。这种表示天然适合用二维卷积处理:
python复制# 张量reshape示例
def reshape_to_2d(x, period):
B, T, D = x.shape
x = x.reshape(B, T//period, period,
