我对 R 中 gbm 中的交互深度参数有疑问。这可能是一个菜鸟问题,对此我深表歉意,但是我认为表示树中终端节点数的参数如何基本上表示 X-way预测变量之间的相互作用?只是想了解它是如何工作的。此外,如果我有一个数据集,其中包含两个不同的因子变量与相同的数据集,除了这两个因子变量组合成一个因子(例如因子 1 中的 X 水平,因子 2 中的 Y 水平,组合变量有X * Y 因素)。后者比前者更具预测性。我曾认为增加互动深度会改善这种关系。
GBM 中的交互深度是什么意思?
前面两个答案都是错误的。包 GBM 使用interaction.depth
参数作为它必须在树上执行的拆分数量(从单个节点开始)。随着每次拆分,节点总数增加 3,终端节点数量增加 2(节点{left node, right node, NA node}) 树中的节点总数为和终端节点数. 这可以通过查看pretty.gbm.tree
函数的输出来验证。
这种行为相当具有误导性,因为用户确实期望深度是结果树的深度。它不是。
我对 R 中 gbm 中的交互深度参数有疑问。这可能是一个菜鸟问题,对此我深表歉意,但是我认为表示树中终端节点数的参数如何基本上表示 X-way预测变量之间的相互作用?
交互深度与终端节点数之间的联系
一视作interaction.depth
分裂节点的数量。固定在 k将interaction.depth
导致节点具有 k+1 个 终端节点(省略 NA 节点),所以我们有:
交互深度和交互顺序之间的联系
和交互顺序之间的联系interaction.depth
更加繁琐。
让我们用终端节点的数量来推理,而不是用interaction.depth来推理,我们称之为J。
示例: 假设您有 J=4 个终端节点(interaction.depth=3),您可以:
- 在根上进行第一次拆分,然后在根的左节点上进行第二次拆分,在根的右节点上进行第三次拆分。此树的交互顺序将为 2。
- 在根上进行第一次拆分,然后在根的左侧(分别为右侧)节点进行第二次拆分,并在此最左侧(分别为右侧)节点上进行第三次拆分。此树的交互顺序将为 3。
因此,您无法提前知道给定树中特征之间的交互顺序是什么。但是,可以设置此值的上限。令P为给定树中特征的交互顺序。我们有 :
以前的答案不正确。
树桩的交互深度为 1(并且有两个叶子)。但是interaction.depth=2 给出了三片叶子。
所以:NumberOfLeaves = interaction.depth + 1
实际上,前面的答案是不正确的。
设K为interaction.depth,则节点N和叶子L(即终端节点)的数量分别由下式给出:
这些级别中的每一个都有节点。而树的节点总数是每一层节点数的总和。
用数学术语来说:
这相当于: