XGBoost 树中休假分数是如何计算的?

问题描述 投票:0回答:3

我正在看下面的图片。

有人可以解释一下它们是如何计算的吗? 我以为 N 是 -1,是 +1,但后来我不明白这个小女孩怎么有 0.1。但这对于树 2 也不起作用。

xgboost lightgbm
3个回答
9
投票

我同意@user1808924。我认为仍然值得解释一下 XGBoost 在幕后的工作原理。

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

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

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

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

  • 如何计算叶子中的分数?

叶子分数(

w
)通过这个公式计算:

w = - (sum(gi) / (sum(hi) + lambda))

其中

g
h
是一阶导数 (gradient) 和二阶导数 (hessian)。

为了演示,我们选择第一棵树具有

-1
值的叶子。假设我们的目标函数是 均方误差 (mse) 并且我们选择
lambda = 0

有了 mse,我们就有了

g = (y_pred - y_true
) 和
h=1
。我只是去掉了常数 2,事实上,你可以保留它,结果应该保持不变。另一个注意事项:在 t_th 迭代中,
y_pred
是我们在 (t-1)th 迭代之后的预测(迄今为止我们得到的最好预测)。

一些假设:

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

我们计算每个人的

g
h

  • 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

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

w * learning_rate


4
投票

叶元素(又名“分数”)的值 -

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

对于对样本进行评分,则第一个加数由tree1产生,第二个加数由tree2产生。对于小男孩(

age < 15
is male == Y
use computer daily == Y
),tree1 产生
2
,tree2 产生
0.9


© www.soinside.com 2019 - 2024. All rights reserved.