与水平生长相比,垂直生长基于树的学习算法有什么区别?

What is the difference between growing a tree based learning algorithm vertically as compared to horizontally?

我遇到了基于树的算法 Light GBM,我读到它垂直生长树,这意味着 Light GBM 树是逐叶生长的(而其他一些算法是逐层生长的)。我只是想知道和思考:垂直种植一棵树有什么好处?有吗?

我能看到的一个区别(不一定是优势)是您在生长树时需要定义提前停止标准的方式。对此有什么想法吗?

this section of LightGBM's documentation

所述

LightGBM 使用逐叶(或 XGBoost 所称的 lossguide)树生长,因为它可以实现比深度树生长更低的损失(即更好地适应训练数据),保持叶子的数量常数。

在逐叶树生长中,无论深度级别如何,都会选择增益最大的分割。

A difference ... I can see is the way you need to define early-stopping criteria while growing the tree

的确,在这种类型的树生长中,您现在必须考虑两种密切相关的方法来防止过拟合:

  • 最大深度(LightGBM 中的max_depth
  • 允许的叶子总数(num_leaves 在 LightGBM 中)

我假设这就是您所说的“提前停止标准”的意思,但我还想指出“提前停止”一词在 GBM 中具有特殊含义,与单个树的行为方式无关长大的。提前停止,正如 XGBoost、LightGBM 和其他 GBM 库所指的那样,意味着“如果保留数据的性能在 n 次迭代后未能提高,则停止训练”。