随机森林的特征选择和带有尖号的参数调整


12

我有具有数千个功能的数据,并且我想进行递归功能选择(RFE)以删除无信息的功能。我使用插入符号和RFE 进行此操作。但是,我开始思考,如果我想获得最佳的回归拟合(例如,随机森林),什么时候应该执行参数调整(mtry针对RF)?也就是说,据我所知,插入符号使用固定的mtry在不同的特征子集上反复训练RF。我想mtry应该在特征选择完成后找到最佳mtry值,但是插入符号使用的值会影响特征的所选子集吗?使用插入符号mtry的速度要快得多,当然。

希望有人可以向我解释。


2
RF具有强大的内置功能选择-无需使用RFE,因此只需调试即可完成。
Yevgeny 2012年

Answers:


11

您可能要研究的一件事是正规化随机森林,该森林是专门为特征选择而设计的。本文解释了这个概念,以及它们与普通随机森林的区别

通过正则树进行特征选择

在randomForest的基础上,还有一个CRAN软件包RRF,可以让您轻松地在R中实现它们。我自己对这种方法很幸运。

关于您的第一个问题,我唯一能给出的建议是,如果您有很多共线性,那么您需要使用较小的树大小。这使算法可以确定共线性影响较少的干扰的重要性。


1

您可能可以使用caretFuncs 类似这样的东西:

myRFE <- caretFuncs
myRFE$summary <- twoClassSummary  (default is defaultSummary)

rctrl <- rfeControl(method='repeatedcv', repeats=5, number=10,
                   functions=myRFE)

tctrl <- trainControl(method = "cv",
                      classProbs = TRUE,
                      summaryFunction = twoClassSummary)

rfeObj = rfe(x,y,sizes=seq(1,ncol(x),2),
             rfeControl=rctrl,  
             # to be passed to train()
             method='rf',
             importance=T,  # do not forget this
             ntree=1000,
             metric = "ROC",
             tuneLength = 10,
             # mtry=c(1,3,5,50),
             # specify the exact mtry, or tuneLength
             # can auto truncate the grid to minimal sizes (with or without warning)
             # p <- ncol(x) ... if (mtry < 1 || mtry > p) warning("invalid try: reset to within valid range") try <- max(1, min(p, round(try))) 
             trControl=tctrl)

另外,可以检查valSelRF包裹。不知道它与regularized random forest这里提到的有何不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.