您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在xgboost中访问单个决策树的权重?

如何在xgboost中访问单个决策树的权重?

eta正如您所说,每棵树都具有相同的权重,总预测是每棵树的预测总和。

您可能希望前面的树比后面的树具有更大的权重,但这不是必须的,因为在每棵树之后更新响应的方式都是如此。这是一个玩具示例:

假设我们有5个观测值,响应分别为10、20、30、40、50。第一棵树被构建并给出12、18、27、39、54的预测。

现在,如果eta= 1,则传递到下一棵树的响应变量将为-2、2、3、1,-4(即,预测与真实响应之间的差)。然后,下一棵树将尝试学习第一棵树未捕获的“噪声”。如果nrounds= 2,则来自两棵树的预测之和将给出模型的最终预测。

如果取而代之的是eta= 0.1,则所有树的预测都将按缩小eta,因此第一棵树将“预测” 1.2、1.8、2.7、3.9、5.4。传递给下一棵树的响应变量将具有值8.8、18.2、27.3、36.1、44.6(缩放后的预测与真实响应之间的差)。第二轮使用这些响应值来构建另一棵树- 再次是预测由缩放eta。因此,树2预测说7、18、25、40、40,一旦缩放,它们将变为0.7、1.8、2.5、4.0、4.0。和以前一样,第三棵树将被传递这些值与前一棵树的响应变量之间的差(即8.1、16.4、24.8、32.1。40.6)。同样,来自所有树的预测的总和将给出最终的预测。

显然,当eta= 0.1且base_score为0时,您至少需要十轮才能获得接近明智的预测。通常,您需要绝对最小为1 /eta轮,通常更多。

使用“小”的基本原理eta是该模型受益于对预测采取小步骤,而不是让树1承担大部分工作。有点像结晶- 缓慢冷却,您会得到更大,更好的晶体。缺点是您需要增加nrounds,从而增加了算法的运行时间。

其他 2022/1/1 18:29:00 有384人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶