首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >caret:rfe获取特定大小的最佳性能变量

caret:rfe获取特定大小的最佳性能变量
EN

Stack Overflow用户
提问于 2015-03-23 18:15:30
回答 1查看 2.3K关注 0票数 3

我运行了一个大约有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)之间的输出差异。关于感兴趣的大小,获得最佳性能变量的正确方法是什么?

可以使用以下示例:

代码语言:javascript
复制
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)

EN

回答 1

Stack Overflow用户

发布于 2015-03-28 02:11:09

最简单的方法是使用update函数:

代码语言:javascript
复制
new_profile <- update(rfProfile, x = x, y = logBBB, size = 10) 

在内部,它使用以下代码:

代码语言:javascript
复制
selectedVars <- rfProfile$variables
bestVar <- rfProfile$control$functions$selectVar(selectedVars, 10)

最大值

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29207675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档