用于异常检测的 LSTM 自动编码器:偏移结果

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

我是深度学习领域的新手,正在尝试实现 LSTM 自动编码器来检测时间序列数据的异常。我遵循 YouTube 上的教程“使用 Python 中的 Keras 和 TensorFlow 2 使用 LSTM 自动编码器进行时间序列异常检测”,并使用了其 Github 存储库中提供的代码。

但是,当将代码应用到我自己的时间序列数据时,我遇到了问题。看来结果已经发生了一步变化。我所附图像中标记的点应被视为异常,但异常检测算法将前面的点识别为异常。

结果:

这是我使用的模型:


model = keras.Sequential()
model.add(keras.layers.LSTM(units=128, input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(keras.layers.Dropout(rate=0.2))
model.add(keras.layers.RepeatVector(n=X_train.shape[1]))
model.add(keras.layers.LSTM(units=128, return_sequences=True))
model.add(keras.layers.Dropout(rate=0.2))
model.add(keras.layers.TimeDistributed(keras.layers.Dense(units=X_train.shape[2])))
model.compile(loss='mae', optimizer='adam')

history = model.fit(X_train, y_train, epochs=30, batch_size=5, validation_split=0.1, shuffle=False)
python tensorflow deep-learning time-series lstm
1个回答
0
投票

魔鬼代言人?在这样的数据上运行复杂的 LSTM 是愚蠢的。您可以通过 70 年前的想法(统计过程控制)找到这些辍学者,无需使用任何训练数据 [a]。

[a] https://arxiv.org/abs/2009.13807 当前的时间序列异常检测基准存在缺陷,并且正在造成进步的错觉

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