有人可以解释它们是如何计算的吗?我虽然 N 为 -1,是的 +1,但后来我无法弄清楚这个小女孩是如何拥有 0.1 的。但这对树 2 也不起作用。
我同意@user1808924。我认为仍然值得解释 XGBoost 在幕后如何工作。
首先,你在叶子上看到的分数不是概率。它们是回归值。
在梯度提升树中,只有回归树。为了预测一个人是否喜欢电脑游戏,模型 (XGboost) 会将其视为回归问题。这里的标签变为 1.0 表示是,0.0 表示否。然后,XGboost 将回归树放入训练中。树当然会返回 +2、+0.1、-1 之类的东西,我们在叶子上得到。
我们总结所有“原始分数”,然后通过应用sigmoid函数将它们转换为概率。
叶分数 ( w
) 由以下公式计算:
w = - (sum(gi) / (sum(hi) + lambda))
Run Code Online (Sandbox Code Playgroud)
其中g
和h
是一阶导数(梯度)和二阶导数(hessian)。
为了演示起见,让我们选择具有-1
第一棵树值的叶子。假设我们的目标函数是均方误差 (mse),我们选择lambda = 0
.
使用mse,我们有g = (y_pred - y_true
) 和h=1
。我只是去掉了常量2,事实上,你可以保留它,结果应该保持不变。另一个注意事项:在t_th迭代时,y_pred
是我们在第(t-1) 次迭代之后的预测(直到那时我们得到的最好的)。
一些假设:
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
Run Code Online (Sandbox Code Playgroud)
最后一点:在实践中,我们在绘制树时看到的叶子分数有点不同。它将乘以学习率,即w * learning_rate
。
叶子元素的值(又名“分数”) - +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
。
归档时间: |
|
查看次数: |
2745 次 |
最近记录: |