使用递归特征消除进行随机森林优化的树数

机器算法验证 r 机器学习 随机森林 特征选择
2022-03-19 11:42:32

您建议选择多少棵树来执行递归特征消除 (RFE) 以优化随机森林分类器(针对二元分类问题)。我的数据集非常高维(> 200 000 个特征),我通常在运行分类时选择约 10 000 棵树而不选择特征。但我只是想知道将 RFE 设置为 ~ 500-1000 是否足以节省时间和 RAM。

PS:如果有任何区别,我会使用“randomForest”“caret” R-packages。

2个回答

优化 ntree 和 mtry(高于 mtry=sqrt(#features) 和 ntree 足够大以稳定 OOB)是一个危险的领域——你需要硬核嵌套交叉验证来避免过度拟合,所以你最终可能会做更多的计算你试图避免的。

我会说更好的主意是不使用 RFE - 具有 200k 的功能,它将有可怕的要求和很小的稳定机会。相反,您可以使用一些全相关的 RF 包装器,例如ACEBoruta——返回的集合可能大于最小最优,但仍然比原始集合小得多,因此更容易使用 RFE 处理。

并且记住无论使用哪种方法都要验证特征选择(=

我现在实际上正在做这个实验。我从事文本分类工作,因此我的训练集通常具有数十万个特征,我正在研究将线性 SVM(针对 c 参数优化)与随机森林的 weka 实现进行比较。我发现,就我的数据而言,到目前为止,大约 74 棵树和 32 个特征似乎提供了相当不错的性能。当然,增加这些值往往会增加我观察到的 AUC,但它通常在千分之一位。我仍在尝试了解该算法如何处理我的数据,但我怀疑,基于Breiman 论文,您的训练集中的通用特征越多,树参数的数量就越不重要。如果您阅读了这篇论文(这是一篇非常棒的论文),每棵树都包含数据中特征的随机抽样,因此,如果您的集合中有很多有用的特征,那么您更有可能找到一些东西在任何特定的树中都有用。也就是说,我认为针对特定数据优化算法总是一个好主意。对于我的实验,我留出了一个训练/优化集,我在其上跨不同的参数值执行交叉验证。我很想听听你的发现!