【发布时间】:2020-02-11 22:26:52
【问题描述】:
GridSearchCV()(和或RandomizedSearchCV())如何在 scikit 中实现?我想知道以下几点:在使用其中一种技术时,如何考虑以下方面:
- 验证集
- 型号选择
- 超参数调优
- 预测
?这是一张总结我困惑的图片:
什么时候发生什么,多久发生一次?也许为了简单起见,让我们假设一个单一的神经网络作为我们的模型。 到目前为止我的理解:
在第一次迭代中,模型适合训练折叠,分成不同的折叠。在这里我已经很挣扎了:模型是在单折上训练然后在验证折上测试的吗? 那么下一个折叠会发生什么?模型是否保持其第一次训练折叠所获得的权重,还是会为下一次训练折叠重新初始化?
更准确地说:在第一次迭代中,模型是否在所有折叠之间独立地在验证集上拟合了四次并测试了四次?
当下一次迭代开始时,模型不会保留第一次迭代的信息,对吧? 因此,所有迭代和所有折叠都是相互独立的吗? 这里的超参数是如何调整的?
在上面的例子中,总共有 25 个折叠。具有一组恒定超参数的模型是否适合并测试了 20 次? 假设我们有两个超参数需要调整:学习率和辍学率,都有两个级别:
- learning_rate = [0.3, 0.6] 和
- dropout_rate = [0.4, 0.8]。
神经网络现在能拟合 80 次吗?当不仅有一个模型,而且例如两个模型(神经网络和随机森林),整个过程会执行两次?
有没有可能看看GridSearchCV()会考虑多少折?
我见过Does GridSearchCV perform cross-validation?、Model help using Scikit-learn when using GridSearch 和scikit-learn GridSearchCV with multiple repetitions,但我看不到对我的问题的清晰准确的答案。
【问题讨论】:
-
是的,您的 NN 将被安装 80 次,是的,如果您在另一个模型上测试,它将是 x2
标签: python keras neural-network cross-validation