【问题标题】:Early stopping and regularization早期停止和正则化
【发布时间】:2018-09-21 18:46:26
【问题描述】:

我一直在使用 sklearn 上的 mlp 库处理一些数据。我的训练集分数一直在 0.7 - 0.9 之间。但是我的测试集分数一直很低。我认为这是由于过度拟合造成的,并且已经阅读并理解正则化(以帮助平滑权重/偏差)和提前停止将有助于防止此问题。但是我发现很难实现它,有人可以帮助我实现还是通过合适的链接引导我走上正确的道路。

(关于 sklearn 上 clf 正则化的教程并没有真正帮助我,因为我发现它几乎没有解释就令人困惑)

【问题讨论】:

  • 到目前为止你得到了什么?如果您正在尝试构建 NN 模型,我建议使用 Keras 或等效的 keras.io

标签: machine-learning scikit-learn neural-network


【解决方案1】:

离开sklearn documentation,你可以设置..

early_stopping=True

来自 sklearn 的笔记:

当验证分数没有提高时,是否使用提前停止来终止训练。如果设置为 true,它将自动留出 10% 的训练数据作为验证,并在验证分数在连续两个时期内没有提高至少 tol 时终止训练。仅在solver='sgd'或'adam'时有效

您可以通过此参数修改分配给验证集的百分比。

validation_fraction=0.1

对于正则化,他们通过参数alpha 提供 L2 正则化。为此,我强烈建议使用网格搜索进行优化。

alpha = 0.0001

编辑

然后我会尝试优化学习率。基于此很难判断,但它可能会跳过“错误谷”或陷入局部最小值。使用网格搜索尝试 0.01 和 0.0005 以及介于两者之间的一些。

此外,如果您还没有调整输入,请务必调整输入,这也可能导致问题。

编辑

如果您更喜欢音频学习者,我会尝试查看他们的深度学习计划中的一些 videos from Udacity。他们真的很擅长用简单的术语来解释事情。这可以帮助您直观地了解网络正在发生的事情,而不仅仅是反复试验(有时需要这样做)。

【讨论】:

  • 我的求解器是 lbfgs,当求解器设置为 adam/sgd 时,它的性能似乎非常糟糕
  • 无论如何感谢您的帮助,我正在查看网格搜索,它似乎会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
  • 2017-07-16
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
相关资源
最近更新 更多