我正在使用大型数据集,因此希望删除多余的变量并调整每个分支的最佳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;
}
这当然会使运行时间增加一个数量级。我的问题是这是多么必要(使用玩具数据集很难得到一个想法),以及是否可以在更短的时间内以任何其他方式大致工作。
答案 0 :(得分:11)
与往常一样,答案取决于数据。一方面,如果没有任何不相关的功能,那么你可以完全跳过功能消除。随机森林实现中的树构建过程已经尝试选择预测特征,这为您提供了一些保护,以防止不相关的特征。
Leo Breiman发表了一个演讲,他在一些医学预测任务中引入了1000个不相关的特征,这些特征只有输入领域的少数真实特征。当他使用变量重要性的单个过滤器消除了90%的特征时,随机森林的下一次迭代没有选择任何不相关的特征作为其树中的预测变量。