有人可以解释它们是如何计算的吗?我虽然是 -1 表示 N,+1 表示是,但后来我无法弄清楚这个小女孩是如何获得 0.1 的。但这也不适用于树 2。
3 回答
我同意@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次迭代时,是我们在第 (t-1) 次y_pred
迭代后的预测(我们在那之前得到的最好的)。
一些假设:
- 女孩、爷爷和奶奶不喜欢电脑游戏(
y_true = 0
每个人)。 - 初始预测是
1
针对所有 3 个人的(即,我们猜测所有人都喜欢游戏。请注意,我1
故意选择与第一棵树获得相同的结果。实际上,初始预测可以是均值(默认为均值)平方误差),中值(默认为平均绝对误差),...叶子中所有观察值的标签)。
我们为每个人计算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
。
The values of leaf elements (aka "scores") - +2
, +0.1
, -1
, +0.9
and -0.9
- were devised by the XGBoost algorithm during training. In this case, the XGBoost model was trained using a dataset where little boys (+2
) appear somehow "greater" than little girls (+0.1
). If you knew what the response variable was, then you could probably interpret/rationalize those contributions further. Otherwise, just accept those values as they are.
As for scoring samples, then the first addend is produced by tree1, and the second addend is produced by tree2. For little boys (age < 15
, is male == Y
, and use computer daily == Y
), tree1 yields 2
and tree2 yields 0.9
.