Python 如何提高深度学习回归模型的预测能力

Python 如何提高深度学习回归模型的预测能力,python,tensorflow,keras,deep-learning,regression,Python,Tensorflow,Keras,Deep Learning,Regression,我的数据集有50000行,从35列到50列不等,根据它,我需要为每行预测3个值 e、 g.43208.7032;(37)增加值;48743.4976 -> 3.7707; 372.9719; 1.158718 到目前为止,我得到的最佳结果是平均绝对误差接近0.05,而我需要它接近0.001-0.0005 我已经用零填充了缺失的数据,并用keras.layers.experimental.preprocessing.Normalization规范化了X,创建了回调: callbackPlateau

我的数据集有50000行,从35列到50列不等,根据它,我需要为每行预测3个值

e、 g.43208.7032;(37)增加值;48743.4976 -> 3.7707; 372.9719; 1.158718

到目前为止,我得到的最佳结果是平均绝对误差接近0.05,而我需要它接近0.001-0.0005

我已经用零填充了缺失的数据,并用keras.layers.experimental.preprocessing.Normalization规范化了X,创建了回调:

callbackPlateau = ReduceLROnPlateau(
    monitor='val_loss',
    factor=0.8,
    patience=5,
    verbose=1,
    mode='min',
    min_lr=0.0000001
)
并创建了一个模型,其结果接近0.05平均绝对误差:

model = Sequential()
model.add(Dense(60, input_dim=amount_of_columns, activation=LeakyReLU(alpha=0.6)))
model.add(Dense(90, activation=LeakyReLU(alpha=0.4)))
model.add(Dense(270, activation=LeakyReLU(alpha=0.4)))
model.add(Dense(90, activation=LeakyReLU(alpha=0.4)))
model.add(Dense(45, activation=LeakyReLU(alpha=0.4)))
model.add(Dense(15, activation=LeakyReLU(alpha=0.4)))
model.add(Dense(45, activation=LeakyReLU(alpha=0.4)))
model.add(Dense(3, activation=LeakyReLU(alpha=0.4)))
opt = Adam(learning_rate=0.01)
model.compile(loss='mean_absolute_error', optimizer=opt)
我训练它:

history = model.fit(
    training_x, 
    training_y, 
    epochs=550, 
    batch_size=128, 
    callbacks=[callbackPlateau, callbackEarly], 
    validation_data=(validation_x, validation_y))
在最后一个纪元中给出:

Epoch 343/550
274/274 [==============================] - 2s 6ms/step - loss: 0.0409 - val_loss: 0.0507

Epoch 00343: ReduceLROnPlateau reducing learning rate to 6.805647899454925e-07.
Epoch 00343: early stopping
并评估为:

79/79 [==============================] - 0s 2ms/step - loss: 0.0476
这是我的损失图:

下面是示例结果:

 Example predictions:
3.6658335; 374.98608; 1.2702768 (expected 3.6646; 374.9678; 1.271311), abs_err: 0.0025;
3.742614; 373.0805; 1.1156969 (expected 3.7444; 373.0549; 1.116855), abs_err: 0.0032;
3.6771998; 369.40353; 1.2375629 (expected 3.6812; 369.4603; 1.231281), abs_err: 0.0108;


 Worst:
3.5641375; 362.88254; 1.1704892 (expected 3.6136; 376.969; 1.137181), abs_err: 0.2236;
我尝试了各种数量的节点和层,并尝试使用线性和relu激活

有什么我可以做得更好或额外,使模型提供更好的最终结果?
这是我的第一个深度学习项目。

你可能想尝试增加
min_lr
我没有从0.0001、0.00001和0.000001得到任何改进