【时间序列数据增强】Time Series Data Augmentation for Deep Learning: A Survey

原始题目:Time Series Data Augmentation for Deep Learning: A Survey

中文翻译:深度学习的时间序列数据增强:综述

发表时间:2022年3月31日

平台:IJCAI 2022-02

来源:DAMO Academy, Alibaba Group, Bellevue, WA, USA

文章链接:https://arxiv.org/pdf/2002.12478.pdf

开源代码:

摘要

        深度学习最近在许多时间序列分析任务中表现得非常好。深度神经网络的优越性能很大程度上依赖于大量的训练数据来避免过拟合。然而,许多现实世界的时间序列应用的标记数据可能是有限的,如医学时间序列的分类和 AIOps 的异常检测。作为提高训练数据规模和质量的有效方法,数据增强是深度学习模型成功应用于时间序列数据的关键。本文系统地回顾了不同的时间序列数据增强方法。我们建议对这些方法进行分类,然后通过强调它们的优点和局限性,对这些方法进行结构化审查。我们还实证比较了不同的数据增强方法的不同任务,包括时间序列分类,异常检测和预测。最后,我们讨论并强调了未来的五个方向,以提供有用的研究指导。

6 结论

        随着深度学习模型在时间序列数据上的普及,有限的标签数据需要有效的数据增强方法。本文对时间序列数据增强方法在不同任务中的应用进行了综述。我们将回顾的方法分为基本方法和先进方法,总结每个类别的代表性方法,并在典型任务中进行实证比较,并指出未来的研究方向。

1. 引言

 图1:时间序列数据增强技术的分类(taxonomy)

        本文旨在填补上述空白,总结现有的时间序列数据增强方法在常见任务中的应用,包括时间序列预测、异常检测、分类等,并提供有远见的未来发展方向。为此,我们提出了一种时间序列数据增强方法的分类,如图1所示。在分类法的基础上,对这些数据增强方法进行了系统的评述。我们首先从时域的简单变换开始讨论。然后在变换后的频率域和时频域讨论更多的时间序列变换。

        除了时间序列在不同域的转换,我们还总结了更高级的方法,包括基于分解的方法、基于模型的方法和基于学习的方法。对于基于学习的方法,我们进一步将其分为嵌入空间、深度生成模型(DGMs)和自动化数据增强方法。为了证明数据增强的有效性,我们在三个典型的时间序列任务中对增强方法进行了初步评估,包括时间序列分类、异常检测和预测。最后,我们讨论并强调了五个未来的方向: 增强(时频域、非平衡类、选择与组合、高斯过程和深度生成模型)。

4.2时间序列异常检测

        考虑到时间序列异常检测存在数据稀缺和数据不平衡的问题,采用数据增强的方法产生更多的标注数据是有益的。我们在[Gao等人,2020]中简要总结了结果,其中基于 U-Net 的网络被设计并在公开的 Yahoo! 数据集[Laptev等人,2015]用于时间序列异常检测。不同设置下的性能比较如表2所示,分别是对原始数据(U-Net-Raw)、分解残差(U-Net-DeW)和数据增强残差(U-Net-DeWA)应用该模型(U-Net)进行的性能比较。应用的数据增强方法包括翻转、裁剪、标签扩张(expansion)和基于APP的频域增强。可以看出,分解有助于F1分数的提高,数据扩充进一步提高了性能。

表2:基于数据增强的时间序列异常检测的 precision, recall, and F1 score的提升。

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
时间序列数据增强是指通过对原始时间序列数据进行一系列变换,生成新的时间序列数据,以扩充数据集,提高模型的泛化能力。以下是一个Python的时间序列数据增强代码示例: ```python import numpy as np from scipy import signal def time_series_augmentation(data, method='stretch', scale=0.1, window_size=5): """ 对时间序列数据进行增强 :param data: 原始时间序列数据 :param method: 增强方法,包括'stretch'(时间拉伸),'squeeze'(时间压缩),'shift'(时间平移),'flip'(时间翻转),'noise'(加噪声),'filter'(滤波) :param scale: 增强程度,对于'stretch'和'squeeze',表示时间缩放比例;对于'shift',表示时间平移量;对于'noise',表示噪声强度;对于'filter',表示滤波器截止频率 :param window_size: 滤波器窗口大小,仅对'filter'方法有效 :return: 增强后的时间序列数据 """ if method == 'stretch': # 时间拉伸 stretch_scale = 1 + scale * np.random.uniform(-1, 1) new_length = int(len(data) * stretch_scale) return signal.resample(data, new_length) elif method == 'squeeze': # 时间压缩 squeeze_scale = 1 - scale * np.random.uniform(0, 1) new_length = int(len(data) * squeeze_scale) return signal.resample(data, new_length) elif method == 'shift': # 时间平移 shift = int(scale * len(data) * np.random.uniform(-1, 1)) return np.roll(data, shift) elif method == 'flip': # 时间翻转 return np.flip(data) elif method == 'noise': # 加噪声 noise = np.random.normal(0, scale, len(data)) return data + noise elif method == 'filter': # 滤波 b, a = signal.butter(4, scale, 'lowpass') return signal.filtfilt(b, a, data) else: raise ValueError('Invalid method') # 示例 data = np.sin(np.arange(0, 10, 0.1)) aug_data = time_series_augmentation(data, method='stretch', scale=0.2) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理心炼丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值