有人可以解释这些XGBoost树中的得分是如何得出的吗?

时间:2017-01-02 20:59:21

标签: xgboost

我正在查看下图。 enter image description here

有人可以解释一下它们的计算方法吗? 我虽然是N为-1而+1是肯定但是我无法弄清楚这个小女孩的情况.1。但这对树2来说也不起作用。

3 个答案:

答案 0 :(得分:2)

叶元素的值(又名"得分") - +2+0.1-1+0.9-0.9 - 在训练期间由XGBoost算法设计。在这种情况下,使用数据集训练XGBoost模型,其中小男孩(+2)以某种方式出现"更大"比小女孩(+0.1)。如果您知道响应变量是什么,那么您可以进一步解释/合理化这些贡献。否则,只要接受这些值即可。

对于评分样本,第一个加数由tree1生成,第二个加数由tree2生成。对于小男孩(age < 15is male == Yuse computer daily == Y),tree1会产生2,而tree2会产生0.9

答案 1 :(得分:2)

答案 2 :(得分:2)

我同意@ user1808924。我认为仍然值得解释XGBoost是如何在后台运行的。

  • 叶子分数的含义是什么?

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

在梯度提升树中,只有回归树。为了预测某个人是否喜欢计算机游戏,模型(XGboost)会将其视为回归问题。这里的标签为“是”为1.0,否为“ 0.0”。然后,XGboost将回归树放入训练中。当然,这些树将返回类似我们在叶子处得到的+ 2,+ 0.1,-1。

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

  • 如何计算叶子的分数?

叶子分数(w)由this formula计算:

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

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

为了演示,让我们选择第一棵树的值为-1的叶子。假设我们的目标函数是mean squared error (mse),我们选择lambda = 0

对于 mse ,我们有g = (y_pred - y_trueh=1。我只是摆脱了常量 2 ,实际上,您可以保留它,并且结果应该保持不变。另一个注意事项:在 th_th 迭代中,y_pred是我们在(t-1)迭代之后得到的预测(直到那个时候我们得到的最好结果)。 / p>

一些假设:

  • 女孩,爷爷和奶奶不像电脑游戏(每个人{y_true = 0)。
  • 三个人的初始预测为1(即我们猜到所有人都喜欢玩游戏。请注意,我故意选择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

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