随机森林的特征选择和参数调整

机器算法验证 回归 特征选择 随机森林 插入符号
2022-03-28 05:46:38

我有几千个特征的数据,我想做递归特征选择(RFE)来删除无信息的特征。我用插入符号和 RFE 做到这一点。但是,我开始思考,如果我想获得最佳回归拟合(例如随机森林),我应该何时执行参数调整(mtry对于 RF)?也就是说,据我了解,插入符号在具有固定 mtry 的不同特征子集上反复训练 RF。我想mtry应该在特征选择完成后找到最优值,但是插入符号mtry使用的值会影响所选特征子集吗?当然,使用插入符号要快得多。mtry

希望有人可以向我解释这一点。

2个回答

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

通过正则化树进行特征选择

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

关于你最初的问题,我能给出的唯一建议是,如果你有很多共线性,那么你需要使用更小的树大小。这允许算法确定重要性,而共线性效应的干扰较少。

您也许可以使用这样的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这里提到的有什么不同。