最近,我一直在尝试为时间序列数据训练回归模型。当我训练一个小时数据点(大约7,000个数据点)时,两个模型都显示了OKey结果。
我对每个功能都进行了归一化。然后将数据管道输入到模型中。
以下图片是按小时数据训练的。
此外,当我根据每小时数据对一个每日数据点(约400个数据点)进行训练时,两个模型似乎均拟合不足。
以下图片是按每日数据训练的。
LightGBM
和LSTM为Keras
参数和型号
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)
参数和型号
# 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)
为什么我得到的结果不理想?是因为数据点太少了吗?
有什么想法吗?预先感谢!