插入符号:带有变量 tuneGrid 的 RFE

caret: RFE with variable tuneGrid

我正在尝试使用插入符号来拟合 PLS 模型,同时优化组件数量 'ncomps':

library("caret")
set.seed(342)
train <- as.data.frame ( matrix( rnorm(1e4) , 100, 100 ) )

ctrl <- rfeControl(functions = caretFuncs,                                                      
                   method = "repeatedcv",
                   number=2, 
                   repeats=1,
                   verbose =TRUE
)

pls.fit.rfe <- rfe(V1 ~ .,
                   data = train,   
                   method = "pls",                    
                   sizes =  6,
                   tuneGrid = data.frame(ncomp = 7), 
                   rfeControl = ctrl
)

{ 错误: 任务 1 失败 - "final tuning parameters could not be determined" 另外:有 50 个或更多警告(使用 warnings() 查看前 50 个)

组件数量无效,ncomp

将大小设置为 6 可以解决该问题。当 min(sizes) < max(ncomp) 时出现错误是有道理的,但是有没有办法根据 RFE 迭代中使用的特征数量(即 sizes 变量)来改变 ncomp?我只想同时优化各种尺寸和#components。

尝试使用 tuneLength = 7 而不是 tuneGrid。前者更灵活,将使用适当的 ncomp 给定数据集的大小:

> pls.fit.rfe  pls.fit.rfe

Recursive feature selection

Outer resampling method: Cross-Validated (2 fold, repeated 1 times) 

Resampling performance over subset size:

 Variables   RMSE Rsquared  RMSESD RsquaredSD Selected
         6 1.0229  0.01684 0.04192  0.0155092         
        99 0.9764  0.00746 0.01096  0.0008339        *

The top 5 variables (out of 99):

如果您不想那样做,您也可以随时 write your own 拟合函数。

最大