Time-Series-Library 时间序列数据增广实战:16 种方法与三步启用
2026/9/13 8:13:41 网站建设 项目流程

Time-Series-Library 时间序列数据增广实战:16 种方法与三步启用

【免费下载链接】Time-Series-LibraryA Library for Advanced Deep Time Series Models for General Time Series Analysis.项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library

Time-Series-Library 的 utils/augmentation.py 内置 16 种时间序列数据增广方法,按机制分为加噪扰动、几何扭曲、DTW 智能引导三类。样本少、采集贵、标注难时,打开开关即可成倍扩充训练集,无需重新采数。

🧩 一、方法全景:16 种增广方法按机制三分类

所有方法输入输出形状均为 (batch_size, sequence_length, num_channels),结果可直接拼回训练集。

增广作用在这类一维多通道序列上;TimesNet 等模型再将其转二维做卷积,多样性直接传到下游。

加噪扰动类:数值层面的随机微扰

原理:在原始数值上叠加噪声或做重排,改动小、开销几乎为零,是最便宜的扩充手段。

  • jitter(抖动):叠加 sigma=0.03 高斯噪声模拟测量误差,让模型忽略细微波动。
  • scaling(缩放):各通道乘以以 1 为中心(sigma=0.1)的随机系数,形状不变幅度变化,适合量级漂移数据。
  • rotation(旋转):随机翻转并打乱通道顺序,适合通道次序无关的多通道分类。
  • permutation(排列):把序列切成等长片段打乱(--randompermutation 为随机长度分段),保留局部模式、打散全局顺序。

几何扭曲类:时间轴与幅值轴上的连续形变

原理:用三次样条对时间轴或幅值轴做非线性拉伸压缩,波形整体变形但语义保持,是主力扩充手段。

时序常由多个周期叠加而成,几何扭曲正是在这些结构上做形变。

  • magnitude_warp(幅值扭曲):随机样条曲线乘入幅值,产生非均匀起伏,适合幅度漂移的数据。
  • time_warp(时间扭曲):沿时间方向重采样,模拟同一模式发生得更快或更慢,适合形状同、节拍不同的数据。
  • window_slice(窗口切片):截取约 90% 长度窗口再插值回原长,放大局部细节。
  • window_warp(窗口扭曲):对约 10% 长度小窗口做 0.5×或 2× 缩放后拼回,制造局部突起或凹陷。

DTW 智能引导类:借 DTW 对齐路径做有依据的变形

原理:DTW(动态时间规整)让时间轴弹性对齐来度量序列相似;先求与其他样本的对齐路径再沿路径变形,改动有参照而非纯随机,主要服务分类任务(需标签)。

  • spawner:配随机同类样本,沿对齐路径取平均并插值回原长,生成中间形态,适合稀疏类别。
  • random_guided_warp(随机引导扭曲):沿随机同类样本的 DTW 路径扭曲当前样本(--shapedtwwarp 为 ShapeDTW 版本)。
  • discriminative_guided_warp(判别式引导扭曲):同抽正例反例原型,朝"离正例近、离反例远"方向变形以拉大类间差异(--discsdtw 为 ShapeDTW 版本)。
  • wdba(加权 DBA 平均):先在类内找质心,再按 DTW 路径加权融合其余样本,产出更干净原型,适合类内噪声大的数据。

回头看动机:时序采集贵、标注难,样本常常有限,模型容易学不到稳定周期结构。这 16 种方法即用已有样本推导合理变体,把训练集撑大、分布撑满。

🚀 二、三步启用增广:从装环境到接入训练

第一步 装好环境

git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library cd Time-Series-Library && pip install -r requirements.txt

模块仅依赖 numpy、scipy、tqdm,装完即可用。

第二步 配置增广参数

run.py 把方法整理成命令行开关:--jitter、--scaling、--timewarp、--magwarp、--spawner、--dtwwarp、--discdtw、--wdba 等,配合 --augmentation_ratio(增广轮数)、--seed、--extra_tag(结果标记)使用。命令后追加 --jitter --timewarp --augmentation_ratio 2,即两方法各跑 2 轮。

第三步 调用 run_augmentation 并入训练

from utils.augmentation import run_augmentation args.jitter, args.timewarp, args.augmentation_ratio = True, True, 2 x_aug, y_aug, tags = run_augmentation(x, y, args) # (batch, seq_len, channels)

x 需为 (batch_size, sequence_length, num_channels);函数按开关依次变换、跑满 augmentation_ratio 轮后拼回原始数据,样本量约为原始 (ratio+1) 倍。官方流程已内置:data_provider/data_loader.py 取数时直接调用 run_augmentation_single,打开开关即自动生效;2D 整条序列也会自动补 batch 维再压回。

📈 三、效果验证:预测曲线对比与多任务基准

官方教程对比中,蓝线是真实值、橙线是模型预测;启用增广后曲线更贴真实轨迹,稀疏区域的拐点与振幅偏差明显收窄。

库内覆盖长短期预测、填补、分类、异常检测,常见基准含 ETT、ECL、Weather、Traffic、M4 等。经验上收益与数据量负相关:训练窗口短、数据量小(如 ILI)时提升最明显,大数据集上更多起防过拟合作用。建议先在小样本设置验证,再决定是否全量开启。

⚠ 四、选型建议与避坑清单

  1. 方法组合从少到多:先开 1~2 种(如 jitter + timewarp),确认有效再叠加;全部同开会让增广样本离原始分布过远,反而伤指标。
  2. 增广倍率控制在 2~5:--augmentation_ratio 取 2~5,最终样本量约为原始 3~6 倍;数据量大时 1~2 即可。
  3. 任务与方法匹配:分类优先 DTW 智能引导类(需标签),预测、填补优先几何扭曲类加 jitter/scaling。
  4. DTW 类计算更重:成对计算对齐路径,保留默认 window 约束(序列长的 1/10),大 batch 先小数据试跑。
  5. 固定 --seed、用好 --extra_tag:同开关组合才可复现;用 tag 标注方法组合,避免结果文件混淆。
  6. rotation/permutation 慎用:重排翻转通道,通道语义固定的预测任务不建议开。

16 种方法、三类机制,加一个 --augmentation_ratio,就是全部家当;小样本先上几何扭曲,分类再叠 DTW 引导,往往有可见收益。后续引入生成式增广,这套开关式接口也能平滑扩展。

【免费下载链接】Time-Series-LibraryA Library for Advanced Deep Time Series Models for General Time Series Analysis.项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询