嗨,我是机器学习和堆栈溢出的新手,我试图从我的回归模型中解释两个图。
Training error and Validation error from my machine leanring model
我的情况类似于这些人Very large loss values when training multiple regression model in Keras,但我的MSE和RMSE非常高。
我的造型是否合适?如果是,我该怎么解决这个问题?
这是我用来解决回归问题的神经网络
def build_model():
model = keras.Sequential([
layers.Dense(128, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mean_squared_error',
optimizer=optimizer,
metrics=['mean_absolute_error', 'mean_squared_error'])
return model
这是我的数据集Data set_1 我有500个样本,10个功能和1个目标(res_0)
答案 0 :(得分:3)
恰恰相反:看起来您的模型过度拟合。如果您的训练集错误率较低,则意味着您的模型已经从数据中很好地学习了,并且可以准确地推断出结果。但是,如果之后的验证数据很高,则意味着从训练数据中学到的信息不能成功地应用于新数据。。这是因为您的模型过于“适合”您的训练数据,并且仅学习了如何根据这些数据很好地进行预测。
为解决此问题,我们可以引入Stores来减少过度拟合。一种非常常见的技术是使用Dropout层。这将随机删除一些节点,以使模型不会与它们过分关联-从而减少了对那些节点的依赖性,并也使用其他节点来“学习”更多信息。我提供了一个示例,您可以在下面进行测试;尝试发挥价值和其他技巧,以了解最有效的方法。另外请注意:您确定在密集层中需要多个节点吗?似乎对您的数据集相当多,并且这也可能导致过拟合。
def build_model():
model = keras.Sequential([
layers.Dense(128, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]),
Dropout(0.2),
layers.Dense(64, activation=tf.nn.relu),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mean_squared_error',
optimizer=optimizer,
metrics=['mean_absolute_error', 'mean_squared_error'])
return model
答案 1 :(得分:1)
正如@omoshiroiii在现有答案中所述,您的模型实际上似乎过拟合,这就是RMSE和MSE太高的原因。您的模型了解了训练数据中的细节和噪声,以至于现在对模型在新数据上的性能产生负面影响,因此解决方案是随机删除一些节点,以使模型无法与它们建立过多关联。 / p>
答案 2 :(得分:1)
好吧,我认为您的模型过拟合
有几种方法可以帮助您:
1-减少网络的容量,您可以通过删除层或减少隐藏层中的元素数量来实现
2-滤除图层,通过将某些要素设置为零将随机删除某些要素
3-常规化
如果我想对此做一个简短的解释:
-减少网络的容量:
某些模型具有大量可训练的参数。该数字越高,模型越容易记住每个训练样本的目标类别。显然,这对于概括新数据并不理想。通过降低网络容量,它将学习重要的模式或将损失最小化的模式。但是请记住,过多降低网络容量会导致容量不足。
正则化:
此页面可以为您提供很多帮助 https://towardsdatascience.com/handling-overfitting-in-deep-learning-models-c760ee047c6e
-退出图层
您可以使用这样的图层
model.add(layers.Dropout(0.5))
这是一个辍学层,有50%的机会将输入设置为零。
有关更多详细信息,请参见以下页面:
https://machinelearningmastery.com/how-to-reduce-overfitting-with-dropout-regularization-in-keras/