在随机森林中,为什么在节点级别而不是在树级别选择特征的随机子集?

机器算法验证 机器学习 特征选择 随机森林 重要性 历史
2022-01-21 18:36:01

我的问题:为什么随机森林会考虑在每棵树的节点级别而不是树级别进行拆分的随机特征子集?

背景:这是一个历史问题。1998 年, Tin Kam Ho 发表了这篇关于通过随机选择特征子集来构建“决策森林”的论文,以用于生长每棵树。几年后,在 2001 年,Leo Breiman 发表了他的开创性随机森林论文,其中特征子集是随机的在每棵树的每个节点上选择,而不是在每棵树上。虽然 Breiman 引用了 Ho,但他没有具体解释从树级到节点级随机特征选择的转变。

我想知道是什么特别推动了这一发展。似乎在树级别选择特征子集仍然可以实现所需的树去相关。

我的理论:我还没有在其他地方看到这一点,但似乎随机子空间方法在估计特征重要性方面效率较低。为了获得变量重要性的估计,对于每棵树,特征被一一随机排列,并记录袋外观察的错误分类增加或误差增加。由这种随机排列导致的错误分类或误差增加较高的变量是最重要的变量。

如果我们使用随机子空间方法,对于每棵树,我们只考虑个特征个。甚至可能需要几棵树来考虑所有个预测变量。另一方面,如果我们在每个节点个特征我们将在更少的树之后更多次地考虑每个特征,从而为我们提供对特征重要性的更稳健的估计。mppmip

到目前为止我所看到的:到目前为止,我已经阅读了 Breiman 的论文和 Ho 的论文,并在网上广泛搜索了这些方法的比较,但没有找到明确的答案。请注意,之前有人问过类似的问题。这个问题更进一步,包括我对可能解决方案的推测/工作。我会对比较这两种方法的任何答案、相关引用或模拟研究感兴趣。如果没有,我计划运行我自己的模拟来比较这两种方法。

1个回答

假设我们有 10 个特征 f1, f2, ..., f9, f10,那么当我们取一个子集让我们假设树级别本身的特征 f1, f3, f4, f8 时,我们用这 4 个特征构建整棵树考虑到。

我们计算熵,只比较每个节点的这 4 个特征,然后取那个产生最大熵的特征。这没什么用,因为我们将树学习限制在这 4 个特征上。与此相反,当我们在第一个节点取一些特征子集,比如 f1、f8、f9 时,我们计算熵并在这 3 个特征之间进行比较,然后选择给出最大值的那个。我们没有使用相同的特征进一步增长树,而是选择了另一个特征子集,比如 f4、f7、f2,并根据这些特征进行拆分。假设在第一个节点选择了 f8,在第二个节点选择了 f2。模型能够学习这两者之间的关系

通过这种方式,模型可以以更多样化的方式学习不同特征之间的关系。这种方法将在单个树中探索许多特征,因此保留了它们之间的关系。希望你现在明白了:)