xgboost

xgboost 节点值的选择与分裂

xgboost 节点值的选择以及分裂方法的选择

在上篇文章里引用的图片上,没有对打分函数进行具体解释,本节具体说一下,今天面试问道为什么xgboost是二阶泰勒展开,我觉得是和这一部分有关。

损失函数

xgboost 的损失函数

如何确定一个节点的值

目标就是找到 f 使得上式达到最小,通过泰勒展开以后,得到下式。
其中需要注意一点 l作为loss 其自变量是$\hat y ^{(t-1)}$ 是泰勒展开中的$x_0$ 而f可以看作是增加量,即泰勒展开中的$\Delta x$ 所以得到下式, $ y ^{(t-1)}$ 是常数

省略与f 无关的项,得到下式:

又因为f 其实就是w ,所以整理得到按照节点划分的目标函数,最终这个二次函数直接求最值点,就是这个节点的w值。

如何分裂节点

通过贪心算法,生成树时,计算左子树,右子树的误差和,和未分裂的进行比较,确定分裂是否合理,然后将每一种分裂,每一次可能进行遍历,进而选择最佳分裂

参考