在MLR
中,有一种实现嵌套交叉验证的方法。在嵌套cv中,采用内环来选择最优的调谐参数,用外环来评价模型的性能。当我将嵌套的cv与特性选择过程结合在一起时,我对MLR
将返回的内部优化模型的内容有些困惑。例如,我想首先应用基于outcome<0.05的关联p值的过滤器。在嵌套的cv中(我在培训、 validation 和测试集合中这么说),应该是:在内部循环中,对每个训练集应用过滤器,然后调优我们感兴趣的参数,并在验证集中进行测试。在内循环中,我们可以得到最佳的调优参数和与其相关的特征集。
我想知道的是,内部最优的调优参数将返回给外部循环训练,我假设有两种可能的模型:
在我看来,我认为第一个更符合逻辑。我的代码的一部分如下:
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)
发布于 2020-01-13 22:00:02
备选案文2)是正确的。
针对所选特征子集对Hyperpars进行了优化。如果您在外部循环中再次运行筛选过程,那么这样做是没有意义的。
在每个外褶皱中都没有超过训练/预测的情况,参数来自于内部优化回路。在外部循环中没有进行优化。
PS:您可能希望在https://stats.stackexchange.com/上提出这样的一般性问题,而不是关于堆栈溢出,因为它们与一般(统计)概念有关,而不是编程。人们将投票结束这类问题,因为它们与编程没有关系。(注意,mlr-团队中没有人在关注stats.stackexchange的问题)
https://stackoverflow.com/questions/59723915
复制相似问题