我正在使用大型数据集,因此希望删除无关的变量并调整每个分支的最佳m个变量。在R中,有两种方法可以帮助完成这两个任务,即rfcv和tuneRF。我正在尝试将它们组合以优化参数。

rfcv的工作大致如下:

create random forest and extract each variable's importance;
while (nvar > 1) {
    remove the k (or k%) least important variables;
    run random forest with remaining variables, reporting cverror and predictions
}


目前,我已经将rfcv重新编码为如下所示:

create random forest and extract each variable's importance;
while (nvar > 1) {
    remove the k (or k%) least important variables;
    tune for the best m for reduced variable set;
    run random forest with remaining variables, reporting cverror and predictions;
}


当然,这会使运行时间增加一个数量级。我的问题是这有多么必要(很难使用玩具数据集来获得一个主意),以及是否可以期望其他任何方式在更短的时间内也能正常工作。

最佳答案

与往常一样,答案是它取决于数据。一方面,如果没有不相关的功能,则可以完全跳过功能消除。随机森林实现中的树构建过程已经尝试选择预测性功能,从而为一些无关的功能提供了保护。

Leo Breiman作了一个演讲,他在一些医学预测任务中引入了1000个不相关的特征,这些特征仅具有输入域中的少数真实特征。当他使用单个重要性可变的过滤器消除了90%的特征时,随机森林的下一次迭代并没有选择任何不相关的特征作为其树中的预测变量。

10-08 09:13