Я запустил простую модель LSTM для оценки объема продаж:
model = Sequential()
model.add(LSTM(4, input_shape=(1, time_steps)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(x_train, y_train, epochs=100, batch_size=1, verbose=2
, и полученный результат был неплохим: https://i.stack.imgur.com/VzMFP.png
Затем я добавил несколько функции для повышения точности во время экстремальных событий, таких как Праздник, Выходные, .. но я получил плохие результаты: https://i.stack.imgur.com/yPhWu.png
конечный кодер:
### DEFINE LSTM AUTOENCODER ###
inputs_ae = Input(shape=(sequence_length, 1))
encoded_ae = LSTM(128, return_sequences=True, dropout=0.3)(inputs_ae, training=True)
decoded_ae = LSTM(32, return_sequences=True, dropout=0.3)(encoded_ae, training=True)
out_ae = TimeDistributed(Dense(1))(decoded_ae)
sequence_autoencoder = Model(inputs_ae, out_ae)
sequence_autoencoder.compile(optimizer='adam', loss='mse', metrics=['mse'])
### TRAIN AUTOENCODER ###
sequence_autoencoder.fit(X[:int(0.7*(len(X)))],X[:int(0.7*(len(X)))],
batch_size=128, epochs=100, verbose=2, shuffle=True)
и LSTM после кодирования:
### DEFINE FORECASTER ###
inputs1 = Input(shape=(X_train1.shape[1], X_train1.shape[2]))
lstm1 = LSTM(128, return_sequences=True, dropout=0.3)(inputs1, training=True)
lstm1 = LSTM(32, return_sequences=False, dropout=0.3)(lstm1, training=True)
dense1 = Dense(50)(lstm1)
out1 = Dense(1)(dense1)
model1 = Model(inputs1, out1)
model1.compile(loss='mean_squared_error', optimizer='adam')
Можете ли вы сказать мне, почему это происходит?
Спасибо всем !!!