`rfe(x, ...)`## S3 method for class 'default':
rfe(x, y,
sizes = 2^(2:4),
metric = ifelse(is.factor(y), "Accuracy", "RMSE"),
maximize = ifelse(metric == "RMSE", FALSE, TRUE),
rfeControl = rfeControl(),
...)

rfeIter(x, y,
testX, testY,
sizes,
rfeControl = rfeControl(),
...)

## S3 method for class 'rfe':
predict(object, newdata, ...)

- A list with elements
finalVariables a list of size `length(sizes) + 1`

containing the column names of the ``surviving'' predictors at each stage of selection. The first element corresponds to all the predictors (i.e.`size = ncol(x)`

)pred a data frame with columns for the test set outcome, the predicted outcome and the subset size.

`rfe`

can be used with "explicit parallelism", where different resamples (e.g. cross-validation group) can be split up and run on multiple machines or processors. By default, `rfe`

will use a single processor on the host machine. As of version 4.99 of this package, the framework used for parallel processing uses the `rfe`

does not change; prior to the call to `rfe`

, a parallel backend is registered with

`rfeIter`

is the basic algorithm while `rfe`

wraps these operations inside of resampling. To avoid selection bias, it is better to use the function `rfe`

than `rfeIter`

.

`rfeControl`

data(BloodBrain) x <- scale(bbbDescr[,-nearZeroVar(bbbDescr)]) x <- x[, -findCorrelation(cor(x), .8)] x <- as.data.frame(x) set.seed(1) lmProfile <- rfe(x, logBBB, sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65), rfeControl = rfeControl(functions = lmFuncs, number = 200)) set.seed(1) lmProfile2 <- rfe(x, logBBB, sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65), rfeControl = rfeControl(functions = lmFuncs, rerank = TRUE, number = 200)) xyplot(lmProfile$results$RMSE + lmProfile2$results$RMSE ~ lmProfile$results$Variables, type = c("g", "p", "l"), auto.key = TRUE) rfProfile <- rfe(x, logBBB, sizes = c(2, 5, 10, 20), rfeControl = rfeControl(functions = rfFuncs)) bagProfile <- rfe(x, logBBB, sizes = c(2, 5, 10, 20), rfeControl = rfeControl(functions = treebagFuncs)) set.seed(1) svmProfile <- rfe(x, logBBB, sizes = c(2, 5, 10, 20), rfeControl = rfeControl(functions = caretFuncs, number = 200), ## pass options to train() method = "svmRadial") ## classification with no resampling data(mdrr) mdrrDescr <- mdrrDescr[,-nearZeroVar(mdrrDescr)] mdrrDescr <- mdrrDescr[, -findCorrelation(cor(mdrrDescr), .8)] set.seed(1) inTrain <- createDataPartition(mdrrClass, p = .75, list = FALSE)[,1] train <- mdrrDescr[ inTrain, ] test <- mdrrDescr[-inTrain, ] trainClass <- mdrrClass[ inTrain] testClass <- mdrrClass[-inTrain] set.seed(2) ldaProfile <- rfe(train, trainClass, sizes = c(1:10, 15, 30), rfeControl = rfeControl(functions = ldaFuncs, method = "cv")) plot(ldaProfile, type = c("o", "g")) postResample(predict(ldaProfile, test), testClass) ####################################### ## Parallel Processing Example via multicore library(doMC) ## Note: if the underlying model also uses foreach, the ## number of cores specified above will double (along with ## the memory requirements) registerDoMC(cores = 2) set.seed(1) lmProfile <- rfe(x, logBBB, sizes = c(2:25, 30, 35, 40, 45, 50, 55, 60, 65), rfeControl = rfeControl(functions = lmFuncs, number = 200))