(经验模式分解+CNN)用于时间序列预测

问题描述 投票:0回答:1

我目前正在做一个时间序列项目,我打算采用EMD+CNN技术来预测输出。将 EMD 应用于训练数据后,我总共获得了 14 个本征模态函数 (IMF)。因此,我构建了尺寸为 (30100, 20, 14, 1) 的 CNN 神经网络,其中 20 代表窗口大小。然而,我在尝试使用 EMD 分解测试数据时遇到了问题,因为它只产生了 11 个 IMF。这种不一致导致尝试执行 CNN 模型时出现错误。 请注意,我正在使用 Python 中的 EMD 信号库。

我有两个问题:是否有一种方法可以在 EMD 分解过程中强制执行一致数量的 IMF?如果没有,是否有一种自动方法来选择最重要的 IMF?

python keras time-series conv-neural-network forecasting
1个回答
0
投票

PyEMD 文档 来看,EMD.emd() 函数有一个参数 max_imf (int,默认=-1)。应执行分解的 IMF 数。负值表示全部。

对于替代方案,“最重要”可能取决于上下文,因为有多种方法可以测量信号/波形。一个明显的衡量标准是音量/幅度 - 请查看下图所示的第二个记录示例。初始边缘效应后,IMF1 的振幅约为 0.2,IMF 2、3 和 4 的振幅分别为 10、2 和 1。

要自动找到最大幅度,您可以查找每个 IMF 中间 50% 的最大/最小值(以避免边缘效应),然后选择最大的 n 个 IMF。但其他事情可能很重要 - 例如,如果波的时间段为 1 周/天/分钟,这可能在您的环境中具有重要意义。

© www.soinside.com 2019 - 2024. All rights reserved.