还有其他减少泛化误差的方法吗?

时间:2019-07-30 19:00:18

标签: tensorflow machine-learning keras data-science

您好,我正在建模线性回归模型,更多描述可以在这里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

结果可以在train error and val error graph heremodel results

中找到

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法来防止过度拟合:

  1. 如有可能,获取更多数据

  2. 限制模型的复杂度,以使其不适合您所拥有数据的特质。使用神经网络,可以通过限制隐藏层的数量和/或每层的单位数来实现。

  3. 权重衰减:对大权重使用平方值(L2)或绝对值(L1)进行惩罚

  4. 向输入添加高斯噪声

  5. 平均许多不同的模型

  6. 使用具有不同形式的不同模型

  7. 针对不同训练数据子集(“装袋”)的训练模型

  8. 使用单个神经网络体系结构,但是学习不同的权重集,并对这些不同的权重集进行平均预测