答案 0 :(得分:2)
叶元素的值(又名"得分") - +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
。
答案 1 :(得分:2)
阅读
https://towardsdatascience.com/xgboost-mathematics-explained-58262530904a
然后是
https://medium.com/@gabrieltseng/gradient-boosting-and-xgboost-c306c1bcfaf5
和附录
答案 2 :(得分:2)
我同意@ user1808924。我认为仍然值得解释XGBoost是如何在后台运行的。
首先,您在叶子上看到的分数不是概率。它们是回归值。
在梯度提升树中,只有回归树。为了预测某个人是否喜欢计算机游戏,模型(XGboost)会将其视为回归问题。这里的标签为“是”为1.0,否为“ 0.0”。然后,XGboost将回归树放入训练中。当然,这些树将返回类似我们在叶子处得到的+ 2,+ 0.1,-1。
我们总结所有“原始分数” ,然后通过应用 sigmoid 函数将其转换为概率。
叶子分数(w
)由this formula计算:
w = - (sum(gi) / (sum(hi) + lambda))
其中g
和h
是一阶导数( gradient )和二阶导数( hessian )。
为了演示,让我们选择第一棵树的值为-1
的叶子。假设我们的目标函数是mean squared error (mse),我们选择lambda = 0
。
对于 mse ,我们有g = (y_pred - y_true
和h=1
。我只是摆脱了常量 2 ,实际上,您可以保留它,并且结果应该保持不变。另一个注意事项:在 th_th 迭代中,y_pred
是我们在(t-1)迭代之后得到的预测(直到那个时候我们得到的最好结果)。 / p>
一些假设:
y_true = 0
)。1
(即我们猜到所有人都喜欢玩游戏。请注意,我故意选择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
。