与水平生长相比,垂直生长基于树的学习算法有什么区别?
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
次迭代后未能提高,则停止训练”。
我遇到了基于树的算法 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
次迭代后未能提高,则停止训练”。