【问题标题】:Is there other ways to Reducing generalisation error?还有其他方法可以减少泛化错误吗?
【发布时间】:2019-07-30 19:00:18
【问题描述】:

您好,我正在建模一个线性回归模型,更多描述可以在这里找到My stack post,我正在尝试减少我的泛化错误。根据这篇文章Stack post 2,泛化误差是训练误差和验证误差之间的差距。从我的堆栈帖子中,许多人建议我规范化并添加丢弃层。

我尝试了所有有助于我不过度拟合的方法,但我似乎无法减少损失、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找到

【问题讨论】:

    标签: tensorflow machine-learning keras data-science


    【解决方案1】:

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

    1. 尽可能获取更多数据

    2. 限制模型的复杂性,使其无法适应您拥有的数据的特性。对于神经网络,这可以通过限制隐藏层的数量和/或每层的单元数量来实现。

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

    4. 向输入添加高斯噪声

    5. 平均许多不同的模型

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

    7. 在训练数据的不同子集上训练模型(“bagging”)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-27
      • 2014-09-17
      • 2011-10-19
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      相关资源
      最近更新 更多