Keras的MAE和MSE偏高的原因可能是什么?

时间:2020-01-23 11:18:21

标签: pandas tensorflow keras

我的MAE和MSE很高。但是训练数据(不包括20%的测试数据)(1030,23)实例(在应用IQR和Z评分之后)。顺便说一句,所有分类列都已完全编码。

Epoch: 1900, loss:50195632.3010,  mae:3622.3535,  mse:50195636.0000,  val_loss:65308249.2427,  val_mae:4636.2290,  val_mse:65308244.0000,  

以下是我对Keras的设置。

model = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=[len(dftrain.keys())]),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)
  ])

  optimizer = tf.keras.optimizers.RMSprop(0.001)

  model.compile(loss='mse',
                optimizer=optimizer,
                metrics=['mae', 'mse'])

EPOCHS = 2000

history = model.fit(
    normed_train_data, 
    train_labels,
    epochs=EPOCHS, 
    validation_split = 0.2, 
    verbose=0,
    callbacks=[tfdocs.modeling.EpochDots()])

你怎么看?

3 个答案:

答案 0 :(得分:1)

“高” MAE本身是相对的,并根据数据而变化,并且可能有多个因素对其造成影响。

如果您是入门者,我建议您执行探索性数据 分析(EDA)并提出功能,并准备该数据进行培训。 验证数据后,请尝试调整模型的参数以适合您的用例。机器学习更多的是实验而不是编码。

Kaggle中的此类笔记本将帮助您入门。

  1. Neural Network Model for House Prices
  2. Comprehensive data exploration with Python

答案 1 :(得分:0)

实际上可能有很多原因。我的快速猜测就是您的数据集。训练数据。它符合模型的期望吗? (形状,格式等)就像在文本分类的情况下一样,是在输入模型之前对文本进行编码。 标签是否正确转换为神经网络期望值?

如果是,剩下的就在您的网络定义上,您是否正在使用正确的丢失功能,层等?

尝试解决您的问题的基本模型体系结构,该基本体系结构模型可以从互联网上发现的类似问题的实现中获取。这将为您提供一个良好的起点。

答案 2 :(得分:0)

其他答案已经提到了一些优点,但是您可以做的另一件事是对数据进行规范化(如果还没有的话)。 NNs are highly sensitive to this。您可以在此处尝试的一些方法是Batch NormalizationStandard ScalerMin-Max Scaler

此外,如果模型过度拟合(训练损失减少,但验证损失却没有),请考虑在各层之间以Dropout的形式添加正则化,看看它是否有所改善。

这些链接可能会有所帮助:

  1. link1
  2. link2