我遇到时间序列预测问题,无法预测日终余额。我有2年的数据,每日结算余额约100个账户。尝试使用MLP和LSTM创建预测以预测未来值,但两者都给出了不令人满意的结果。两个模型都正确捕获数据中的线性趋势,但无法识别任何非线性变化。
这是我的方法:
功能Engg执行:
因此,我有8列作为模型的输入,数据在传递给模型之前使用MinMaxScaler进行缩放。
LSTM型号:
model = Sequential()
model.add(LSTM(32,return_sequences = True, input_shape=(1, 8)))
model.add(LSTM(32))
model.add(Dense(1 , activation='linear'))
model.compile(loss='mae', optimizer='adam')
MLP模型:
model = Sequential()
model.add(Dense(8, activation='relu', input_dim=trainX.shape[1]))
model.add(Dense(20, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mae', optimizer='adam')
model.fit(trainX,trainY, epochs=100, batch_size=32, verbose=0,
shuffle=False)
我做错了什么?如何改进此模型以更好地执行非线性值?以下是我得到的实际值与预测的示例。
predicted actual Mape %
date
2017-11-01 3.427375e+07 75248606.05 74.82
2017-11-02 3.516451e+07 65382560.38 60.11
2017-11-03 3.592537e+07 64244508.86 56.54
2017-11-04 3.796975e+07 64244508.86 51.41
2017-11-05 3.806401e+07 64244508.86 51.18
2017-11-06 3.994756e+07 60844214.61 41.47
2017-11-07 4.147836e+07 57346364.66 32.11
2017-11-08 4.280740e+07 48821953.03 13.13
2017-11-09 4.481559e+07 49061219.17 9.05
2017-11-10 4.662069e+07 45530356.65 2.37