LSTM时间序列异常检测

时间:2019-06-28 06:48:46

标签: python lstm forecast lstm-stateful

我正在尝试在LSTM的时间序列中发现异常。而且我仍然想知道,应该根据过去的行为时间序列来查找异常的正确架构,时间步长,批处理大小,滑动窗口或非滑动窗口是什么

from numpy import array
from keras.models import Sequential, Model
from keras.layers import Input, Dense, LSTM, 
RepeatVector,TimeDistributed
from keras import optimizers
from keras.callbacks import EarlyStopping

X = array([0.1, 0.2, 0.3, 0.4, 25, 0.5, 0.6, 0.7]) 
X_train = X.reshape(1, 8, 1)
y = X.reshape(1, 8)


model = Sequential()
model.add(LSTM(4, input_shape=(8, 1), return_sequences=True))
model.add(TimeDistributed(Dense(1)))

model.compile(loss='mean_squared_error', optimizer='adam')
print(model.summary())

history = model.fit(X_train, y, epochs=500, batch_size=1, verbose=2)
result = model.predict(X_train, batch_size=1, verbose=0)

它给我输出

[0.11906812, 0.19180197, 0.30324116, 0.14811686, 25.3771758 ,
 0.52173275, 0.61532116, 0.7421335] 

对我来说,这看起来不像是异常迹象。有状态的基于过去的行为找到异常的更好方法吗?即使是正态高斯分布也可以很容易地告诉我这里的异常,但不会受到时间的影响

0 个答案:

没有答案