MLR 中的嵌套 cv 中的内调学习器 return 会是什么?
What will the inner tuning learner return in nested cv in MLR?
在MLR
中有一个实现嵌套交叉验证的方法。在nested cv中,内层循环用于select最佳调整参数,外层循环用于评估模型性能。当我将嵌套 cv 与特征 selection 过程相结合时,我对内部最佳调优模型的 MLR
return 感到有点困惑。例如,我想首先应用一个基于结果 <0.05 的相关 p 值的过滤器。在嵌套的cv中(我在training, validation and test set里说的),应该是:
在内部循环中,对于每个训练集,应用过滤器,然后调整我们感兴趣的参数并在验证集中进行测试。在内循环中,我们可以得到最佳调优参数和与之关联的特征集。
我想知道的是内部最佳调整参数将 return 用于外循环训练,我假设有两种可能的模型:
内部最佳调整模型只是 return 最佳调整参数,而不是 selected 特征子集。所以在外循环中,我们将首先应用相同的过滤器,然后使用最佳调整参数训练训练+验证集。
内部最佳调整模型 return 最佳调整参数和 selected 特征子集。因此,在外循环中,我们将仅使用最佳调整参数和 selected 特征子集(来自内循环)训练训练+验证集。
在我看来,我认为第一个更符合逻辑。我的部分代码如下:
svm_learner<-makeLearner("classif.svm",predict.type="prob",fix.factors.prediction = TRUE)
svm_filter<-makeFilterWrapper(learner = svm_learner,
fw.method = "t.test.filter", fw.threshold = -0.05)
svm_filter_nested<-makeTuneWrapper(svm_filter,par.set=ps,
control=ctrl,resampling=inner)
r=resample(svm_filter_nested,task,resampling=outer,models=TRUE)
选项 2) 正确。
Hyperpars 针对所选的特征子集进行了优化。如果您在外循环中再次重新运行过滤过程,我这样做是没有意义的。
在每个外部折叠中发生的参数不超过 train/predict,其参数来自内部优化循环。外循环中没有进行优化。
PS:您可能想在 https://stats.stackexchange.com/ 上而不是在 Whosebug 上提出此类一般性问题,因为它们与一般(统计)概念而不是编程相关。
人们会投票关闭此类问题,因为它们与编程没有关系。 (请注意,尽管 mlr 团队中没有人在看 stats.stackexchange 个问题)
在MLR
中有一个实现嵌套交叉验证的方法。在nested cv中,内层循环用于select最佳调整参数,外层循环用于评估模型性能。当我将嵌套 cv 与特征 selection 过程相结合时,我对内部最佳调优模型的 MLR
return 感到有点困惑。例如,我想首先应用一个基于结果 <0.05 的相关 p 值的过滤器。在嵌套的cv中(我在training, validation and test set里说的),应该是:
在内部循环中,对于每个训练集,应用过滤器,然后调整我们感兴趣的参数并在验证集中进行测试。在内循环中,我们可以得到最佳调优参数和与之关联的特征集。
我想知道的是内部最佳调整参数将 return 用于外循环训练,我假设有两种可能的模型:
内部最佳调整模型只是 return 最佳调整参数,而不是 selected 特征子集。所以在外循环中,我们将首先应用相同的过滤器,然后使用最佳调整参数训练训练+验证集。
内部最佳调整模型 return 最佳调整参数和 selected 特征子集。因此,在外循环中,我们将仅使用最佳调整参数和 selected 特征子集(来自内循环)训练训练+验证集。
在我看来,我认为第一个更符合逻辑。我的部分代码如下:
svm_learner<-makeLearner("classif.svm",predict.type="prob",fix.factors.prediction = TRUE)
svm_filter<-makeFilterWrapper(learner = svm_learner,
fw.method = "t.test.filter", fw.threshold = -0.05)
svm_filter_nested<-makeTuneWrapper(svm_filter,par.set=ps,
control=ctrl,resampling=inner)
r=resample(svm_filter_nested,task,resampling=outer,models=TRUE)
选项 2) 正确。
Hyperpars 针对所选的特征子集进行了优化。如果您在外循环中再次重新运行过滤过程,我这样做是没有意义的。
在每个外部折叠中发生的参数不超过 train/predict,其参数来自内部优化循环。外循环中没有进行优化。
PS:您可能想在 https://stats.stackexchange.com/ 上而不是在 Whosebug 上提出此类一般性问题,因为它们与一般(统计)概念而不是编程相关。 人们会投票关闭此类问题,因为它们与编程没有关系。 (请注意,尽管 mlr 团队中没有人在看 stats.stackexchange 个问题)