我的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()])
你怎么看?
答案 0 :(得分:1)
“高” MAE
本身是相对的,并根据数据而变化,并且可能有多个因素对其造成影响。
如果您是入门者,我建议您执行探索性数据 分析(EDA)并提出功能,并准备该数据进行培训。 验证数据后,请尝试调整模型的参数以适合您的用例。机器学习更多的是实验而不是编码。
Kaggle中的此类笔记本将帮助您入门。
答案 1 :(得分:0)
实际上可能有很多原因。我的快速猜测就是您的数据集。训练数据。它符合模型的期望吗? (形状,格式等)就像在文本分类的情况下一样,是在输入模型之前对文本进行编码。 标签是否正确转换为神经网络期望值?
如果是,剩下的就在您的网络定义上,您是否正在使用正确的丢失功能,层等?
尝试解决您的问题的基本模型体系结构,该基本体系结构模型可以从互联网上发现的类似问题的实现中获取。这将为您提供一个良好的起点。
答案 2 :(得分:0)
其他答案已经提到了一些优点,但是您可以做的另一件事是对数据进行规范化(如果还没有的话)。 NNs are highly sensitive to this。您可以在此处尝试的一些方法是Batch Normalization,Standard Scaler或Min-Max Scaler。
此外,如果模型过度拟合(训练损失减少,但验证损失却没有),请考虑在各层之间以Dropout的形式添加正则化,看看它是否有所改善。
这些链接可能会有所帮助: