XGBoost目标函数公式推导

主要看了这几篇文章:

首先大背景是这样的:

对于加法策略可以表示如下:

初始化(模型中没有树时,其预测结果为0):XGBoost目标函数公式推导

往模型中加入第一棵树:XGBoost目标函数公式推导

往模型中加入第二棵树:XGBoost目标函数公式推导

往模型中加入第t棵树:XGBoost目标函数公式推导

其中XGBoost目标函数公式推导表示第XGBoost目标函数公式推导棵树,XGBoost目标函数公式推导表示组合XGBoost目标函数公式推导棵树模型对样本XGBoost目标函数公式推导的预测结果。

我们知道,每次往模型中加入一棵树,其损失函数便会发生变化。另外在加入第t棵树时,则前面第t-1棵树已经训练完成,此时前面t-1棵树的正则项和训练误差都成已知常数项。

(1)不懂的公式推导之一

基于以上背景,以下公式推导中,第1行蓝色方框圈住的,由于前面第t-1棵树已经训练完成可以当做已知常数项,因此相当于第2行绿色方框,第3行红色方框圈住的,同样的原因,以及XGBoost目标函数公式推导这一项与XGBoost目标函数公式推导无关,所以被纳入了constant项,因此两个红色方框相加相当于第4行的棕色方框。

XGBoost目标函数公式推导

(2)不懂的公式推导之二

XGBoost目标函数公式推导

很多XGBoost的讲解都有以上这张图片,但是,图中画蓝线的圈1式子是如何变为圈2式子的,始终没有说得很明白。

XGBoost目标函数公式推导(1)

以上的最后的XGBoost目标函数公式推导是真实值,即已知,可以当作一个常数,XGBoost目标函数公式推导当作XGBoost目标函数公式推导XGBoost目标函数公式推导当作XGBoost目标函数公式推导。例如以下a是一个常数:

XGBoost目标函数公式推导(2)

以上就可以把a当作一个常数,然后对x求偏导,利用公式:

XGBoost目标函数公式推导

得到:

XGBoost目标函数公式推导(3)

可以发现,(3)式与(2)式的结果相同。

基于这个例子,于是(1)式:

XGBoost目标函数公式推导

其中,标红色的XGBoost目标函数公式推导XGBoost目标函数公式推导等价,标蓝色的XGBoost目标函数公式推导XGBoost目标函数公式推导等价。并且,第3行的两个偏导数,即以下圈住的部分

XGBoost目标函数公式推导(4)

XGBoost目标函数公式推导XGBoost目标函数公式推导,于是就得到了(4)式中第4行的部分。

由于第t-1颗树的值XGBoost目标函数公式推导已知,XGBoost目标函数公式推导也是已知的,因此,XGBoost目标函数公式推导对目标函数的优化不影响,可以直接去掉,且常数项也可以移除,从而得到如下一个比较统一的目标函数。