预测连续变量时应该如何实现决策树拆分?

机器算法验证 算法 大车 随机森林
2022-02-17 05:26:51

我实际上正在编写随机森林的实现,但我相信这个问题特定于决策树(独立于 RF)。

所以上下文是我在决策树中创建一个节点,并且预测变量和目标变量都是连续的。该节点有一个分割阈值,可以将数据分成两组,我根据每组中的平均目标值为每个子集创建一个新的预测。这是正确的方法吗?

我问的原因是,在预测二进制变量时,我相信典型的(正确的?)方法是将数据分成 0 和 1 个子集,而不对每个子集中的数据行取平均值。随后的拆分将划分为更细粒度的子集,并在每个拆分结果中取平均值随后的拆分(决策树的下方)对现在的连续变量而不是二元变量进行操作(因为我们正在对残差值而不是原始变量进行操作)目标)。

附带问题:这两种方法(二元与连续)之间的区别是否显着 - 或者它们实际上是否会为完整的决策树提供相同的结果?

1个回答

树木的一个潜在问题是它们往往不太适合尾部。考虑一个捕获训练集低范围的终端节点。它将使用那些训练集点的平均值进行预测,这总是会低估结果(因为它是平均值)。

您可以尝试模型树 [1]。这些将适合终端节点中的线性模型,并且(我认为)比回归树做得更好。更好的是,使用更先进的版本,称为 Cubist,它结合了不同的方法(下面的 [1] 和 [2])。

这些模型还以不同的方式处理连续和离散的预测变量。他们可以对分类变量进行多路拆分。拆分标准与 CART 树非常相似。

模型树可以在 RWeka 包(称为“M5P”)的 R 中找到,而 Cubist 在 Cubist 包中。当然,您也可以使用 Weka,并且 Cubist 在 RuleQuest 网站上提供了 C 版本。

[1] 昆兰, J. (1992)。通过连续课程学习。第五届澳大利亚人工智能联合会议论文集,343-348。

[2] 昆兰, J. (1993)。结合基于实例和基于模型的学习。第十届机器学习国际会议论文集,236-243。