随机森林工作流程?

数据挖掘 机器学习 特征选择 随机森林 交叉验证
2022-02-02 11:53:37

我有一个数据集,由相当多的列(超过 1000)组成,相对于我目前正在运行随机森林回归的行数(370)。对于完成各种任务(例如特征选择和交叉验证)的最佳方式,我有点困惑。

目前,我正在执行以下操作:

  1. 拆分数据集 90/10,并使用默认超参数在所有特征上运行 RF

  2. 使用网格搜索微调超参数,然后使用这些调整运行“优化”模型

  3. 使用 5 折交叉验证来评估模型

  4. 获取特征重要性分数以指示哪些特征表现最佳

鉴于我拥有的大量功能以及我的模型相当低的性能,我想找到一个更智能的工作流程。

对我来说,使用特征重要性分数来过滤掉表现不佳的人似乎是明智的,但我会在交叉验证之前还是之后这样做?例如,在完成上述步骤并删除低于某个阈值的功能后,我是否会再次运行步骤 1-3?或者我会在参数调整之前使用特征选择吗?我只交叉验证一次吗?我应该整合其他明显的步骤吗?

我很欣赏这不是一门精确的科学,但如果有一些行业标准我错了,或者完全错过了,那么我将非常感谢您的反馈。

1个回答

370 行是相当多的,RF 确实引导但它仍然很少信息。列太多会导致模型更复杂(因为该算法将适用于 1 000 个维度)。

考虑做一个包含所有步骤的管道,并在那里搜索超参数和特征选择。https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html

你可以在这里查看一个简单的教程

总之,尝试构建一个包含所有步骤的管道,但问题可能在于您的数据 370 行只是一个小样本。