首页 > 解决方案 > 预测具有跳跃(异常值)的输出的最佳归一化技术和 LSTM 结构是什么?

问题描述

我有一个具有十个特征(输入)和一个输出的时间序列预测案例。我使用 LSTM 使用 22 个时间步(特征历史)进行一步预测。另外,我申请MinMaxScaler输入规范化,但我不规范输出。输出包含一些罕见的跳跃(例如 20、50 或超过 100),但其他值介于 0 和 ~5 之间(所有值都是正数)。在这种情况下,正确预测正常输出和异常输出非常重要,因此我不想错过预测模型中的跳跃。我认为如果我MinMaxScaler用于输出,大多数值将接近零,但其他值(异常值)将接近 1。

标签: kerastime-serieslstmnormalizationforecasting

解决方案


我认为首先,您应该决定衡量绩效的指标。例如,您想使用 MAE 还是 MSE?或者您根据手头的任务决定的其他一些指标。例如,对于“罕见的跳跃”,您可能会容忍更大的错误,但对于正常情况则不会,反之亦然。一旦确定了错误度量,理想情况下,您应该将其设置为 LSTM 网络最小化的成本函数。

现在的目标是最小化您设置的所需错误度量。如果这是一个凸问题,则输出的缩放将无关紧要。但我们现在认为复杂的深度学习架构并非如此。这意味着,虽然通过梯度下降来最小化成本函数,但它可能会陷入局部最小值,并且收敛非常延迟。在这种情况下,标准化输出可能会有所帮助。如何?

假设您的输出的平均值为 5。最后一层参数初始化为零附近且偏差值为零(即 relu 的线性变换),网络需要了解偏差应该在 5 左右。取决于复杂性这可能需要一些时期。但是,如果您对数据进行归一化,或将偏差初始化为 5,那么您的网络会从对偏差的良好估计开始,从而更快地收敛。

现在回到你的问题:

  1. 我至少会使输出均值为零,并使用具有线性输出的 Dense 层。

  2. 您的架构看起来不错,如果您认为输入具有复杂的时间依赖性,可以尝试堆叠 2-4 个 LSTM 层。

随意使用您获得的代码和性能更新 OP,我们可以讨论还有什么可以改进的。


推荐阅读