我正在使用“party”包来创建回归树的随机森林。 我创建了一个 ForestControl 类,以限制树的数量 (ntree)、节点的数量 (max深度) 以及用于拟合树的变量的数量 (mtry)。 我不确定的一件事是 cforest 算法是否为其生成的每棵树使用我的训练集的子集。
我在文档中看到它正在装袋,所以我认为它应该如此。但我不确定很好地理解该函数中的“子集”输入是什么。
我也对使用 ctree 得到的结果感到困惑:在绘制树时,我看到训练集的所有变量都分类在不同的终端树节点中,而我预计它也只在这里使用一个子集.
所以我的问题是,cforest 与 ctree 做同样的事情还是它真的装满了我的训练集?
预先感谢您的帮助!
本
如果
mtry
设置为数据集中的变量数量(或 Inf
),cforest
执行“装袋”(引导聚合,cforest 文档)。 Bagging 可用于克服决策树对额外训练数据敏感的限制(QuantAcademy Bootstrap 聚合、随机森林和提升树)。它通过聚合输入训练数据的引导样本来实现这一点。由于 ctree
是一种使用条件推理框架来减少偏差的决策树,因此它可能也受到“高方差估计器”2的限制。树的集合被聚合以产生预测。然而,每棵树都基于所有输入特征。
否则,(如果
mtry
小于变量数量)cforest
将基于条件推理树 1 创建随机森林。随机森林将装袋扩展到(通常)大量树上的装袋特征选择,然后再次聚合各个树的结果。每棵树都基于随机特征选择和训练数据的随机子集。