GBM 中的交互深度是什么意思?

机器算法验证 r 机器学习 助推
2022-02-02 01:01:06

我对 R 中 gbm 中的交互深度参数有疑问。这可能是一个菜鸟问题,对此我深表歉意,但是我认为表示树中终端节点数的参数如何基本上表示 X-way预测变量之间的相互作用?只是想了解它是如何工作的。此外,如果我有一个数据集,其中包含两个不同的因子变量与相同的数据集,除了这两个因子变量组合成一个因子(例如因子 1 中的 X 水平,因子 2 中的 Y 水平,组合变量有X * Y 因素)。后者比前者更具预测性。我曾认为增加互动深度会改善这种关系。

4个回答

前面两个答案都是错误的。包 GBM 使用interaction.depth参数作为它必须在树上执行的拆分数量(从单个节点开始)。随着每次拆分,节点总数增加 3,终端节点数量增加 2(节点{left node, right node, NA node}) 树中的节点总数为3N+1和终端节点数2N+1. 这可以通过查看pretty.gbm.tree函数的输出来验证。

这种行为相当具有误导性,因为用户确实期望深度是结果树的深度。它不是。

我对 R 中 gbm 中的交互深度参数有疑问。这可能是一个菜鸟问题,对此我深表歉意,但是我认为表示树中终端节点数的参数如何基本上表示 X-way预测变量之间的相互作用?

交互深度与终端节点数之间的联系

一视作interaction.depth分裂节点的数量。固定在 k将interaction.depth导致节点具有 k+1 个 终端节点(省略 NA 节点),所以我们有:

interaction.depth=#{TerminalNodes}+1

交互深度和交互顺序之间的联系

和交互顺序之间的联系interaction.depth更加繁琐。

让我们用终端节点的数量来推理,而不是用interaction.depth来推理,我们称之为J。

示例: 假设您有 J=4 个终端节点(interaction.depth=3),您可以:

  1. 在根上进行第一次拆分,然后在根的左节点上进行第二次拆分,在根的右节点上进行第三次拆分。此树的交互顺序将为 2。
  2. 在根上进行第一次拆分,然后在根的左侧(分别为右侧)节点进行第二次拆分,并在此最左侧(分别为右侧)节点上进行第三次拆分。此树的交互顺序将为 3。

因此,您无法提前知道给定树中特征之间的交互顺序是什么。但是,可以设置此值的上限。P为给定树中特征的交互顺序。我们有 :

Pmin(J1,n)
其中 n 是观察次数。有关详细信息,请参阅Friedman原始文章的第 7 节。

以前的答案不正确。

树桩的交互深度为 1(并且有两个叶子)。但是interaction.depth=2 给出了三片叶子。

所以:NumberOfLeaves = interaction.depth + 1

实际上,前面的答案是不正确的。

设K为interaction.depth,则节点N和叶子L(即终端节点)的数量分别由下式给出:

N=2(K+1)1L=2K
前面的 2 个公式很容易证明:深度为 K 的树可以被视为具有从 0(根级别)到 K(叶级别)的 K+1 个级别 k。

这些级别中的每一个都有2k节点。而树的节点总数是每一层节点数的总和。

用数学术语来说:

N=k=0K2k)

这相当于:

N=2(K+1)1
(根据几何级数之和的公式)。