我运行了一个大约有400个变量的rfe模型,得到的结果是最优模型使用了40个变量。然而,基于交叉验证绘制误差的标准差表明,40个变量的模型仅比只有10个变量的模型性能略好。这就是为什么我想选择有10个变量的模型。我想使用十个变量模型中表现最好的10个变量,并再次训练模型。
如何获得rfe对象中显示的导致模型性能的10个变量?
因为我使用的是rerank=TRUE,所以我不能只从varImp(rfeModel$fit)中挑选排名最高的10个变量,对吧?(如果我不使用"rerank“,这可以工作吗?)
我还在努力处理varImp(rfeModel$fit)、varImp(rfeModel)和pickVars(rfeModel$variables,40)之间的输出差异。关于感兴趣的大小,获得最佳性能变量的正确方法是什么?
可以使用以下示例:
data(BloodBrain)
x <- scale(bbbDescr[,-nearZeroVar(bbbDescr)])
x <- x[, -findCorrelation(cor(x), .8)]
x <- as.data.frame(x)
set.seed(1)
rfProfile <- rfe(x, logBBB,
sizes = c(2, 5, 10, 20),
method="nnet",
maxit=10,
rfeControl(functions = caretFuncs,
returnResamp="all",
method="cv",
rerank=TRUE))print(rfProfile)、varImp(rfProfile$fit)、varImp(rfProfile)、pickVars(rfProfile$variables, rfProfile$optsize)
发布于 2015-03-28 02:11:09
最简单的方法是使用update函数:
new_profile <- update(rfProfile, x = x, y = logBBB, size = 10) 在内部,它使用以下代码:
selectedVars <- rfProfile$variables
bestVar <- rfProfile$control$functions$selectVar(selectedVars, 10)最大值
https://stackoverflow.com/questions/29207675
复制相似问题