我一直在sklearn上使用mlp库来处理一些数据。我的训练集得分在0.7-0.9之间。但是我的测试成绩一直很低。我认为这是由于过度拟合并已阅读并理解正规化(以帮助平滑重量/偏差)和提前停止将有助于防止此问题。但是我觉得很难实现它,有人可以帮我实现一个实现,或者用合适的链接指导我走正确的道路。
(sklearn上关于clf正则化的教程并没有真正帮助我,因为我发现它很容易引起混淆)
答案 0 :(得分:0)
离开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。他们非常善于用简单的术语解释事物。这可以帮助您直观地了解您的网络正在发生的事情,而不仅仅是试验和错误(有时需要它)。