启用提前停止时,我对Scikit-Learn MLPRegressor有一些疑问:


是否在提供的测试数据的前面或后面随机选择了验证数据(请参见“ validation_fraction”)?
在训练的连续迭代过程中,验证数据是相同还是不同?
培训的最后阶段是否会自动包含/修改验证数据?
如果对于n_iter_no_change连续时期,验证得分至少没有提高tol,那么将返回前一个最佳回归值,还是fit()函数将仅返回最后一个回归值?

最佳答案

是否随机选择了验证数据(请参见“ validation_fraction”),
  在提供的测试数据的前面还是后面?


MLPRegressor在内部使用train_test_split创建验证数据。如果shuffleMLPRegressor参数设置为false,则从测试数据的末尾获取分数。如果shuffle设置为true,则将随机选择数据。


  验证数据在连续过程中是相同还是不同
  训练的迭代?


训练的所有迭代的验证数据都相同


  验证数据是否会在验证期间自动包含/修改
  培训的最后阶段?


验证数据将永远不会用于训练模型。它仅用于对模型评分。


  当验证分数没有改善至少为
  n_iter_no_change连续的历元,将前一个最佳回归
  返回,还是将fit()函数简单地返回最后一个
  回归器?


如果验证得分没有提高,而不是继续,那么提前停止将停止训练模型(避免过度拟合),并返回模型的最佳参数(link

08-19 20:01