machine-learning - lightgbm中min_sum_hessian_in_leaf的含义是什么?

标签 machine-learning

lightgbm 中 min_sum_hessian_in_leaf 的含义是什么(参见 http://lightgbm.readthedocs.io/en/latest/Parameters.html )?我知道 hessian 是二阶导数的矩阵,但我不明白这在 lightgbm (或一般梯度增强)的上下文中意味着什么。 lightgbm 如何将该矩阵压缩为单个值?

最佳答案

简单回答:

封面(又名 min_sum_hessian_in_leaf )只是一个参数,用于考虑我们分割的叶子中的观察数量(实际上不止于此)。在 m=1,..,M 估计器中进行分割时;如果叶子中的粗麻布总和低于 min_sum_hessian_in_leaf,树将停止生长。 例如,在最简单的情况下,当我们谈论回归时,损失函数是典型的 (1/2)*sum(y_i-ypred_i )^2 (无正则化),则 sum_hessian_in_leaf 等于叶子。 所以假设 min_sum_hessian_in_leaf = 3 ;因此,我们需要在每个叶子中至少进行 3 个观察才能考虑新的 split 。因此,如果 min_sum_hessian_in_leaf = 0 ,m 树(记住 gbm 是 m=1,..,M 树/估计器)将自由生长,当然,不受约束生长的树往往会过度拟合。另一方面,min_sum_hessian_in_leaf 足够高,m=1,..,M 将具有较低的复杂性(如树桩/短树)。

更复杂(我的解释):

此时您可能会问自己为什么我们要谈论粗麻布。 答案相当复杂,但解决 GBM 算法的一种方法(参见此处的算法 https://en.wikipedia.org/wiki/Gradient_boosting ) iS 不是最小化实际损失函数,而是最小化损失函数的近似值。哪个正在采取 0 附近的二阶多项式(这将使我们能够通过牛顿拉夫森算法解决问题)。因此,现在要最小化的损失函数取决于一阶导数(也可以被视为雅可比矩阵)和二阶导数(也可以被视为海森矩阵)。 此时,我们知道在决策树的背景下,当我们有一个具有高 Hessian 的新分割时,这意味着分割可以很好地减少损失(由于近似,实际上我们正在尝试减少GBM 背景下的损失)。 因此,当 min_sum_hessian_in_leaf > sum_hessian_in_leaf 时,这意味着我们的分割不够好,因此我们无法在树中进行分割。另一方面,如果 min_sum_hessian_in_leaf <= sum_hessian_in_leaf ,这意味着我们的分割足以减少损失(实际上是损失的梯度),因此我们可以保持树生长。 sum_hessian_in_leaf 的公式因损失函数而异。因此,您打赌根据您试图最小化的损失函数设置不同的 min_sum_hessian_in_leaf (在回归问题中 - 没有正则化 sum_hessian_in_leaf = 叶子中的观测值数量,如我之前所述)。 ´

引用文献:

youtuber joshstarmer 在他的 xgboost/gbms 播放列表中解释了这些细节。 统计学习的要素(tibshirani 等人)有一章是关于 GBMS 的,但没有关于 lightGBM 的。但这很有帮助。 XGBOOST论文:https://arxiv.org/pdf/1603.02754.pdf (你也可以阅读 lgbm 论文,但这对我更有帮助,因为除了 EFB 和 GOOS 的部分以及其他细节之外,算法非常相似)。

关于machine-learning - lightgbm中min_sum_hessian_in_leaf的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45248001/

相关文章:

machine-learning - 如何从深度模型中获取输入图像的特征向量(softmax之前的N-1层的输出)?

machine-learning - 在 tensorflow 中堆叠 LSTM 层/单元

python - Scikit-学习 GridSearchCV : Avoid function to copy data for each process in parallel

machine-learning - 将预测数据放入训练数据集中是否有效?

machine-learning - 训练算法时处理稀疏矩阵和多个数值特征

python - 将 Gridsearch 中的最佳参数保存在 pandas 数据框中

python - 如何在 Scikit 中构建线性加性模型?

machine-learning - 我什么时候应该停止训练我的模型?

statistics - 非独立同分布数据示例

python - deeppavlov意图dstc2分类输出不清楚(python)