python - 为什么欠拟合?使用 LGBM 回归模型建模时间序列数据
问题描述
问题陈述
最近我一直在尝试为时间序列数据训练回归模型。当我对每小时数据点(大约 7,000 个数据点)进行训练时,两个模型都显示了 OKey 结果。
我对每个功能都进行了标准化。然后将数据管道输入模型。
下图是按小时数据训练的。
此外,当我对每小时数据平均的每日数据点(大约 400 个数据点)进行训练时,两个模型似乎都欠拟合。
下图是通过日常数据训练出来的。
当前系统信息
- 数据集:数据集是来自 UCI 的空气质量数据集
- 包:我正在使用的是
LightGBM
和 LSTMKeras
- LGBM
参数和型号
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)
我的问题是
为什么我得到了一个欠拟合的结果?是因为数据点太少吗?
任何想法?提前致谢!
解决方案
推荐阅读
- excel - RSQ 函数公式中的多个范围
- android - Android 特定部分中的 Kotlin/Native 访问设备传感器
- javascript - 在 v-for 循环中仅检索一个元素的索引
- python - 从 bytearray python 中取一个字节
- c - flex 无法识别字符范围
- python - 在 python 中使用 callproc 调用包含记录集合的存储过程
- php - 为什么 amp-img 文件在 php 包含文件中不能按预期工作?
- smartcontracts - 如何使用 java 脚本从 web3.js 调用智能合约方法
- duplicates - opencart 重复运输方式
- java - 如何在 jsr352 中配置可重试/可跳过的异常