您好,我正在建模线性回归模型,更多描述可以在这里My stack post进行,我正在尝试减少我的概化误差。根据这篇文章Stack post 2,泛化误差是列车误差和val误差之间的差距。从我的堆栈文章中,许多建议建议我进行规范化并添加退出图层。
我尝试了所有可以帮助我避免过拟合的方法,但是似乎没有办法降低MAE和MSE的损失。
我尝试过但不了解的东西(内核正则化(l1,l2和L1_l2)和this post with different ways to reduce error。我没有尝试过的东西(体重限制和增加噪音)
我可以做些什么来进一步减少我的损失/一般化错误以及MAE或MSE吗?
我的模特:
def build_model():
model = keras.Sequential([
layers.Dense(64, activation=tf.nn.relu ,activity_regularizer=regularizers.l1(0.01), input_shape=[len(train_dataset.keys())]),
layers.Dropout(.2),
layers.Dense(64, activation=tf.nn.relu ,input_shape=[len(train_dataset.keys())]),
layers.Dropout(.2),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.Adam(0.005)
model.compile(loss='mean_squared_error',
optimizer=optimizer,
metrics=['mean_absolute_error', 'mean_squared_error'])
return model
中找到
答案 0 :(得分:0)
您可以尝试以下方法来防止过度拟合:
如有可能,获取更多数据
限制模型的复杂度,以使其不适合您所拥有数据的特质。使用神经网络,可以通过限制隐藏层的数量和/或每层的单位数来实现。
权重衰减:对大权重使用平方值(L2)或绝对值(L1)进行惩罚
向输入添加高斯噪声
平均许多不同的模型
使用具有不同形式的不同模型
针对不同训练数据子集(“装袋”)的训练模型
使用单个神经网络体系结构,但是学习不同的权重集,并对这些不同的权重集进行平均预测