随机森林:为每棵树与每个节点选择随机子集特征的优点/缺点?

机器算法验证 随机森林
2022-03-03 07:15:11

在随机森林中构建树时,有两种方法可以选择特征子集:

根据“随机森林”中的 Leo 布雷曼所说:

“……具有随机特征的随机森林是通过在每个节点上随机选择一小组输入变量进行分割而形成的。”

Tin Kam Ho 使用了“ random subspace method”,每棵树都有一个随机的特征子集。

我可以想象,通过在每个节点上选择特征子集会更优越,因为相关变量仍然可以参与整个树的构建。然而,如果我们为每棵树选择一个特征子集,其中一个相关变量将失去其重要性。

还有其他原因可以说明一种方法比另一种方法执行得更好吗?

2个回答

总体思路是 Bagging 和随机森林都是减少方差的方法。这意味着它们可以很好地与具有LOW BIASHIGH VARIANCE的估计器(简单地说,过度拟合的估计器)一起工作。此外,如果它们彼此不相关,则估计量的平均效果最好

决策树非常适合这项工作,因为特别是在完全成长时,它们可以学习非常复杂的交互(因此具有低偏差),但对输入数据非常敏感(高方差)。

两种采样策略的目标都是降低树之间的相关性,从而降低平均集成的方差(我建议使用 Elements of Statistical Learning,第 15 章进行澄清)
然而,虽然每个节点的采样特征仍然允许树看到大多数变量(以不同的顺序)并学习复杂的交互,但对每棵树使用子样本极大地限制了单个树可以学习的信息量。这意味着以这种方式种植的树木将不那么深,并且偏差更高,特别是对于复杂的数据集。另一方面,以这种方式构建的树确实往往彼此之间的相关性较低,因为它们通常构建在完全不同的特征子集上,但在大多数情况下,这不会加重偏差的增加,因此给出大多数用例的性能较差。

在整洁数据的上下文中,一个引导样本(行),一个引导样本(行)和变量(列)。据我所知,它们总是成排引导。

以下是 Hadley Wickham [ 1 , 2]最初提出的“整洁”规则

  1. 每个变量形成一列。
  2. 每个观察形成一行。
  3. 每种类型的观测单元形成一个表格。

所以问题变成了“在列上引导的优势是什么”

它为您提供了引导程序始终提供的功能,但适用于列空间:

  • 强大的表征。当一列很重要并被排除时,错误会更大,反之亦然。这可以增加对更高重要性变量赋予更高权重的强调,并且鉴于树权重与误差成反比,这可以减少不太重要变量的影响。
  • 加速计算:当你在更少的数据上运行时,在其他条件不变的情况下,你的算法运行得更快。如果你让每棵树都有 75% 的列,那么它们的构建速度会更快。

更新:

经典的 CART 模型查看超矩形的沿边缘,以找到域的二元分割最能提高优度度量的位置。这是树桩。然后它对域的每个子地块重复该过程,直到满足停止条件。CART 模型是弱学习器。

在随机森林(CART 模型的并行集合)中,人们试图聚合弱学习者来克服他们的偏见。因为“集成”需要多个元素,所以集成可以脱离经典的 CART 并在行和列空间中执行诸如引导之类的操作。通过按列引导,我们只查看轴的子集进行拆分。通过逐行引导,我们在评估分割指标时查看点的子集。

该方法的价值取决于数据。里程变化,一如既往。

我听说有一些显着的计算加速可以被发现,但它们只有在将整个列视为单个实体时才有效。我在考虑基尼重要性或基于方差的树。您可以计算整体和子集的分数,然后在 O(1) 中获得另一个子集的分数。如果您在行(样本)上引导但仅在列(变量)上引导,这将不起作用。

因此,权衡是每棵树对行重新采样一次,并且在每次拆分时对列进行重新采样。这允许每棵树的计算速度更快,每次拆分的速度更快,并允许在两者上进行引导。