交叉验证是如何执行的,具体来说GridSearchCV()是如何执行的?

2024-09-30 20:33:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在scikit中实现GridSearchCV()(和或RandomizedSearchCV())?我想知道以下几点:在使用其中一种技术时,如何考虑以下方面:

  • 验证集
  • 选型
  • 超参数调谐
  • 预测

什么?下面是一张总结我困惑的图片:

CV

什么时候发生,多久发生一次?为了简单起见,我们假设一个神经网络作为我们的模型。 我目前的理解是:

在第一次迭代中,将模型拟合到训练褶层上,将其划分为不同的褶层。在这里我已经挣扎了:模型是在一个单一的折叠训练,然后在验证折叠测试? 下一次折叠会发生什么?模型是否保持其第一次训练折叠所获得的权重,还是将为下一次训练折叠重新初始化?你知道吗

更精确地说:在第一次迭代中,模型是否四次拟合,并在验证集上测试四次,独立于所有折叠?你知道吗

当下一次迭代开始时,模型不会保留第一次迭代的任何信息,对吗? 因此,所有的迭代和折叠都是相互独立的吗? 这里的超参数是如何调整的?你知道吗

在上面的例子中,总共有25个折叠。具有一组恒定超参数的模型是否拟合并测试了20次? 比如说,我们有两个超参数需要调整:学习率和辍学率,都有两个级别:

  • 学习率=[0.3,0.6]和
  • 辍学率=[0.4,0.8]。你知道吗

神经网络现在能适应80次吗?当不仅有一个模型,而且有两个模型(神经网络和随机森林)时,整个过程将执行两次?你知道吗

有没有可能知道GridSearchCV()会考虑多少次折叠?你知道吗

我见过Does GridSearchCV perform cross-validation?Model help using Scikit-learn when using GridSearchscikit-learn GridSearchCV with multiple repetitions,但我看不到对我的问题的明确和准确的答案。你知道吗


Tags: 模型信息参数图片神经网络scikitlearn技术
1条回答
网友
1楼 · 发布于 2024-09-30 20:33:56

所以k-folds方法:

你把你的训练集分成n个部分(k个折叠),例如5。将de第一部分作为验证集,其他4部分作为训练集。你训练,这给你一个训练/CV表现。这样做5次(折叠次数),每个折叠成为验证集,其他折叠成为反训练集。最后,你做的平均性能,以获得您的模型的cv性能。这是k字折叠的。你知道吗

现在,GridSearchCV是一个使用k-folds方法的超参数调谐器。原则是你给gridsearch一个字典,里面有你想要测试的所有超参数,然后它会测试所有的超参数(字典),并选择一组最佳的超参数(那些模型cv性能最好的)。可能要花很长时间。你知道吗

你在gridsearch中传递一个模型(估计器),一组参数,如果你想要k-折叠的数目。你知道吗

示例:

GridSearchCV(SVC(), parameters, cv = 5)

其中SVC()是估计量,parameters是超参数字典,cv是折叠数。你知道吗

相关问题 更多 >