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
,从而增加了算法的运行时间。