时间序列预测使用神经网络

时间:2017-12-18 14:15:35

标签: neural-network recurrent-neural-network

我遇到时间序列预测问题,无法预测日终余额。我有2年的数据,每日结算余额约100个账户。尝试使用MLP和LSTM创建预测以预测未来值,但两者都给出了不令人满意的结果。两个模型都正确捕获数据中的线性趋势,但无法识别任何非线性变化。

这是我的方法:

功能Engg执行:

  1. 每天输入最后5个滞后值作为输入
  2. 日,月和工作日外推并作为输入提供
  3. 因此,我有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
    

0 个答案:

没有答案