叶子元素(又名“得分”) - +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
。
我同意@ user1808924。我认为仍然值得解释一下XGBoost如何在幕后工作。
首先,你在树叶中看到的分数不是概率。它们是回归值。
在Gradient Boosting Tree中,只有回归树。为了预测某人是否喜欢电脑游戏,该模型(XGboost)会将其视为回归问题。这里的标签变为1.0表示是,0.0表示否。然后,XGboost将回归树放入训练中。树当然会返回类似+2,+ 0.1,-1的东西,我们在树叶处得到它们。
我们总结所有“原始分数”,然后通过应用sigmoid函数将它们转换为概率。
叶子得分(w
)由this formula计算:
w = - (sum(gi) / (sum(hi) + lambda))
其中g
和h
是一阶导数(梯度)和二阶导数(粗麻布)。
为了演示,让我们选择具有第一棵树的-1
值的叶子。假设我们的目标函数是mean squared error (mse),我们选择lambda = 0
。
有了mse,我们有g = (y_pred - y_true
)和h=1
。我只是摆脱常数2,事实上,你可以保留它,结果应该保持不变。另一个注意事项:在第t次迭代时,y_pred
是我们在第(t-1)次迭代后得到的预测(直到那时我们得到的最好)。
一些假设:
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
。