为什么不合身?使用LGBM回归模型对时间序列数据建模

时间:2019-03-28 03:35:11

标签: python tensorflow keras lightgbm

问题陈述

最近,我一直在尝试为时间序列数据训练回归模型。当我训练一个小时数据点(大约7,000个数据点)时,两个模型都显示了OKey结果。

我对每个功能都进行了归一化。然后将数据管道输入到模型中。

以下图片是按小时数据训练的。

Hourly data

此外,当我根据每小时数据对一个每日数据点(约400个数据点)进行训练时,两个模型似乎均拟合不足

以下图片是按每日数据训练的。

Daily data

当前系统信息

参数和型号

    params = {
        'boosting_type': 'gbdt',
        'objective': 'regression',
        'metric': {'l2', 'l1'},
        'num_leaves': 40,
        'learning_rate': 0.01,
        'feature_fraction': 0.9,
        'bagging_fraction': 0.8,
        'bagging_freq': 5,
        'verbose': 0
    }

    gbm = lgb.train(params, lgb_train,
                    num_boost_round=300, # 300 num_iterations is not enough?
                    valid_sets=lgb_eval,
                    early_stopping_rounds=5)
  • RNN

参数和型号

    # design network            
    model = Sequential()
    # X_train_rnn is the input dataframe
    model.add(LSTM(rnn_hidden_neurons, activation='relu', kernel_initializer='glorot_uniform', input_shape=(X_train_rnn.shape[1], X_train_rnn.shape[2])))
    model.add(Dense(1))
    model.compile(loss='mae', optimizer='adam')
    history = model.fit(X_train_rnn, y_train_walk[labelY].values, 
                        epochs=50, 
                        batch_size=32, 
                        validation_data=(X_test_rnn, y_test_walk[labelY].values), 
                        callbacks=callbacks, # Early stopping
                        verbose=2, 
                        shuffle=False)

我的问题是

为什么我得到的结果不理想?是因为数据点太少了吗?

有什么想法吗?预先感谢!

0 个答案:

没有答案