在这个 XGBoost 树中如何计算休假的分数?

don*_*son 3 xgboost lightgbm

我在看下面的图片。 在此处输入图片说明

有人可以解释它们是如何计算的吗?我虽然 N 为 -1,是的 +1,但后来我无法弄清楚这个小女孩是如何拥有 0.1 的。但这对树 2 也不起作用。

Cat*_*lts 7

我同意@user1808924。我认为仍然值得解释 XGBoost 在幕后如何工作。

  • 叶子的分数是什么意思?

首先,你在叶子上看到的分数不是概率。它们是回归值。

在梯度提升树中,只有回归树。为了预测一个人是否喜欢电脑游戏,模型 (XGboost) 会将其视为回归问题。这里的标签变为 1.0 表示是,0.0 表示否。然后,XGboost 将回归树放入训练中。树当然会返回 +2、+0.1、-1 之类的东西,我们在叶子上得到。

我们总结所有“原始分数”,然后通过应用sigmoid函数将它们转换为概率。

  • 如何计算叶子的分数?

叶分数 ( w) 由以下公式计算

w = - (sum(gi) / (sum(hi) + lambda))
Run Code Online (Sandbox Code Playgroud)

其中gh是一阶导数(梯度)和二阶导数(hessian)。

为了演示起见,让我们选择具有-1第一棵树值的叶子。假设我们的目标函数是均方误差 (mse),我们选择lambda = 0.

使用mse,我们有g = (y_pred - y_true) 和h=1。我只是去掉了常量2,事实上,你可以保留它,结果应该保持不变。另一个注意事项:在t_th迭代时,y_pred是我们在第(t-1) 次迭代之后的预测直到那时我们得到的最好的)。

一些假设:

  • 女孩、爷爷和奶奶不喜欢电脑游戏(y_true = 0每个人)。
  • 初始预测是1针对所有 3 个人的(即,我们猜测所有人都喜欢游戏。注意,我1故意选择与第一棵树相同的结果。实际上,初始预测可以是均值均值的默认值)平方误差)中值平均绝对误差的默认值),...叶中所有观察值的标签)。

我们计算gh每一个人:

  • g_girl = y_pred - y_true = 1 - 0 = 1. 同样,我们有g_grandpa = g_grandma = 1.
  • h_girl = h_grandpa = h_grandma = 1

将这些g, h值代入上面的公式,我们有:

w = -( (g_girl + g_grandpa + g_grandma) / (h_girl + h_grandpa + h_grandma) ) = -1
Run Code Online (Sandbox Code Playgroud)

最后一点:在实践中,我们在绘制树时看到的叶子分数有点不同。它将乘以学习率,即w * learning_rate


use*_*924 4

叶子元素的值(又名“分数”) - +2+0.1-1+0.9--0.9是由 XGBoost 算法在训练期间设计的。在本例中,XGBoost 模型使用小男孩 ( +2) 看起来比小女孩 ( ) “更大”的数据集进行训练+0.1。如果您知道响应变量是什么,那么您可能可以进一步解释/合理化这些贡献。否则,就按原样接受这些值。

对于对样本进行评分,第一个加数由tree1 产生,第二个加数由tree2 产生。对于小男孩 ( age < 15is male == Y、 和use computer daily == Y),tree1 产生2,tree2 产生0.9