接着上次的【学习资源】时间序列数据分析方法(1)-CSDN博客,本次介绍mWDN和AutoEncoder 解决时序数据分类的方法。介绍模型原理、应用场景和参考代码。也从模型性能、训练效率、模型复杂度、计算复杂度、可解释性、适应性和泛化能力、健壮性、数据需求等方面介绍模型的优点和缺点。
1 mWDN
1.1 原理
mWDN是指 Multilevel Wavelet Decomposition Network for Interpretable Time Series Analysis ,分析时序数据的频域特征,将小波分析与深度学习融合。
参考来源:https://arxiv.org/abs/1806.08946 arXiv:1806.08946 [cs.LG]
论文摘要
近年来,几乎所有学术和工业领域的时间序列都出现了前所未有的增长。各种深度神经网络模型已被引入时间序列分析,但重要的频率信息仍然缺乏有效的建模。鉴于此,本文提出了一种基于小波的神经网络结构,称为多级小波分解网络(mWDN),用于构建时间序列分析的频率感知深度学习模型。mWDN保留了多级离散小波分解在频率学习中的优势,同时可以在深度神经网络框架下对所有参数进行微调。基于mWDN,我们进一步提出了两个深度学习模型,分别称为残差分类流(Residual Classification Flow,RCF)和多频率长短期记忆(multi-frequecy Long Short-Term Memory,mLSTM),用于时间序列分类和预测。这两个模型将不同频率的所有或部分mWDN分解子序列作为输入,并采用反向传播算法全局学习所有参数,从而将基于小波的频率分析无缝嵌入到深度学习框架中。在40个UCR数据集和一个真实用户数据集上进行的广泛实验表明,我们基于mWDN的时间序列模型具有卓越的性能。特别是,我们为基于mWDN的模型提出了一种重要性分析方法,该方法能够成功识别出对时间序列分析至关重要的那些时间序列元素和mWDN层。这确实表明了mWDN的可解释性优势,可以被视为对可解释深度学习的深入探索。
代码使用模型说明:https://timeseriesai.github.io/tsai/models.mwdn.html
代码来源
https://github.com/JacobWang95/mWDN
关于小波分析,可参考【工程数学】笔记3:数字信号处理_brick-wall filter-CSDN博客
1.2 优点和缺点
表1 mWDN的优点和缺点
优点 | 缺点 | |
模型性能 | 在处理非平稳时序数据时表现优越,因其通过小波变换捕捉多频率特征,提升了模型的准确性。 | 性能可能依赖于参数选择的准确性,例如小波函数类型和分解层数。 |
训练效率 | 在处理具有良好结构的时序数据时,可能较传统方法更快达到理想性能。 | 由于多级小波分解和神经网络的结合,训练时间可能较长,尤其在资源有限的情况下。 |
模型复杂度 | 多层结构允许更细致的特征提取,适合复杂数据分析。 | 高度复杂的模型结构可能导致理解和调试的难度增加。 |
计算复杂度 | 有效处理高维度数据,保持了较高的信息完整性。 | 高计算需求,尤其在大规模数据处理时,需要更多硬件资源支持。 |
可解释性 | 小波变换的多层次分解提供了比传统神经网络更高的可解释性。 | 尽管比黑箱模型更好,整体可解释性仍然有待提高,尤其在面对非技术用户时。 |
适应性和泛化能力 | 能够在不同特征频率的时序数据上保持良好性能,体现出较强的泛化能力。 | 若参数未优化好,可能导致在某些特定场景下的适应性不足。 |
健壮性 | 对噪声数据具有较好的鲁棒性,能够提取有价值的信号。 | 如果噪声特征与真实信号频率接近,可能难以分辨。 |
数据需求 | 能够在较小数据集上启动有效的学习过程,但需要较大数据集以获得最佳性能。 | 仍然需要大量标注数据以充分训练模型,尤其在多样性高的数据集中。 |
1.3 应用场景
适用于非平稳时序数据分析、复杂信号处理、高解释性的应用、噪声健壮性需求以及动态环境下的实时分析。
1.4 参考代码
[TPS-Apr] Let's go over the wall - mWDN | Kaggle
【演示】用mWDN分类时序数据UCR LSST
使用数据集数据集:UCR LSST,此案例CPU运行时间可以忍耐,可以不用GPU
https://github.com/bettermorn/IAICourse/blob/main/Code/TSAI/16_CPU_Jump_Time_Series_Classification_with_mWDN.ipynb
2 AutoEncoder
2.1 原理
AutoEncoder是一个有点历史的概念了,Hinton2006年提出了AutoEncoder,参考论文
Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. "Reducing the dimensionality of
data with neural networks." Science 313.5786 (2006): 504-507
图片来源:
Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. "Reducing the dimensionality of
data with neural networks." Science 313.5786 (2006): 504-507
自编码器分编码器和解码器两个部分,编码器通过降维的方法抓住输入对象最本质的特征,也即内部表示,而解码器根据本质特征再还原出原始输入对象。自编码器类似于识别主要模式的检测器。对异常输入对象来说,在编码器的环节无法发现与正常值相同的本质特征,所以解码器在还原出原始输入对象就会比较困难,这样,异常值就显现出来了。这种设计很巧妙。
自编码器的本质是无监督学习。
相比使用线性代数转换降维的PCA,自编码器技术可以通过其非线性激活函数和多层结构进行非线性转换。用自编码器训练多层结构比用PCA训练一个巨大的转换结构更有效。因此,当数据问题复杂且具有非线性性质时,自编码器技术就显示出其优势。
2.2 优点和缺点
优点如下
轻松处理高维数据。
非线性特点,可以找到复杂的模式。
缺点如下
成本较高。
优点 | 缺点 | |
模型性能 | 自编码器能够有效地对数据进行特征提取和降维,在保留主要信息的同时去除冗余。 | 对于复杂的高维数据,重构的精确性可能较差。 |
训练效率 | 结构相对简单的自编码器通常收敛较快,适合快速特征提取任务。 | 需要大量数据进行训练,以保证模型的泛化能力和稳定性。 |
模型复杂度 | 具有灵活的结构设计,可以调整层数和节点数以适应不同的任务需求。 | 如果设计不当,可能导致模型复杂度过高,增加计算和存储开销。 |
计算复杂度 | 相比于其他深度模型,基本的自编码器计算复杂度较低。 | 增加模型深度和卷积层等复杂结构时,计算需求会显著增加。 |
可解释性 | 通过学习紧凑的低维表示,可以在一定程度上解释特征的主要变化方向。 | 作为黑箱模型,输出编码通常不具备良好的可解释性。 |
适应性和泛化能力 | 对新数据的适应能力强,尤其适用于无监督学习场景。 | 如未进行适当的正则化,可能导致过拟合,影响泛化能力。 |
健壮性 | 去噪自编码器(Denoising AutoEncoder)在处理有噪声的数据时表现较好。 | 对极端噪声和异常值的敏感度较高,可能影响重构质量。 |
数据需求 | 在处理特定任务时,通常可以在无标签数据上训练。 | 对于复杂任务,需要大规模数据集来捕捉全面的特征信息。 |
2.3 应用场景
图像去噪:利用降温的特点获取主要特征。
异常检测:分析重构误差,可识别异常。
数据压缩:符合降维的本质。
特征生成与提取:降维的本质就是获取主要特征。
图像生成,例如
- 变分自编码器(Variational AutoEncoder, VAE)可用于生成与输入相似的图像数据。
举例来说,如果要用AutoEncoder处理异常,过程如下
- 在正常数据子集上训练自编码器。
- 比较自编码器在正常数据子集和异常数据子集上的判据。
- 定义一个阈值,以便我们安全地将数据分类为异常或正常。
其中第三步比较难,如果我们对问题理解不深入,没有使用正确的工具,可能无法得出较好的结果。
训练自编码器的过程和其他多层感知器组成的神经网络类似,包括以下内容:
-
ReLU 激活层用于提高自编码器学习非线性表征的能力。
-
使用堆叠线性层(a stack of linear layers)可以增加网络的深度,而且收敛速度更快。
-
编码器会逐步将输入数据压缩为更小的内部表示。这是为了使自编码器通过丢弃不必要的信息来学习有意义的数据表示。
训练自编码器,需要设定标准或损失函数以及优化策略。对时间序列数据,使用基于残差(每个时间步的目标值与输出值相减得到的误差值)的损失函数(可使用平均绝对误差或 L1 损失)和性能稳健的Adam优化器。
2.4 参考代码
GitHub - vincrichard/LSTM-AutoEncoder-Unsupervised-Anomaly-Detection: University Project for Anomaly Detection on Time Series data
Time Series ECG Anomaly Detection w Autoencoders | Kaggle
如前所述,因为AutoEncoder涉及到两个神经网络的训练,必须要用GPU。
参考视频
【演示】用AutoEncoder检测心电图ECG异常
本次介绍了mWDN和AutoEncoder,下次再来介绍一些解决时序数据相关问题的模型。