XGBoost目标函数公式推导
主要看了这几篇文章:
首先大背景是这样的:
对于加法策略可以表示如下:
初始化(模型中没有树时,其预测结果为0):
往模型中加入第一棵树:
往模型中加入第二棵树:
…
往模型中加入第t棵树:
其中
表示第
棵树,
表示组合
棵树模型对样本
的预测结果。
我们知道,每次往模型中加入一棵树,其损失函数便会发生变化。另外在加入第t棵树时,则前面第t-1棵树已经训练完成,此时前面t-1棵树的正则项和训练误差都成已知常数项。
(1)不懂的公式推导之一
基于以上背景,以下公式推导中,第1行蓝色方框圈住的,由于前面第t-1棵树已经训练完成可以当做已知常数项,因此相当于第2行绿色方框,第3行红色方框圈住的,同样的原因,以及这一项与
无关,所以被纳入了constant项,因此两个红色方框相加相当于第4行的棕色方框。
(2)不懂的公式推导之二
很多XGBoost的讲解都有以上这张图片,但是,图中画蓝线的圈1式子是如何变为圈2式子的,始终没有说得很明白。
(1)
以上的最后的是真实值,即已知,可以当作一个常数,
当作
,
当作
。例如以下a是一个常数:
(2)
以上就可以把a当作一个常数,然后对x求偏导,利用公式:
得到:
(3)
可以发现,(3)式与(2)式的结果相同。
基于这个例子,于是(1)式:
其中,标红色的和
等价,标蓝色的
和
等价。并且,第3行的两个偏导数,即以下圈住的部分
(4)
令,
,于是就得到了(4)式中第4行的部分。
由于第t-1颗树的值已知,
也是已知的,因此,
对目标函数的优化不影响,可以直接去掉,且常数项也可以移除,从而得到如下一个比较统一的目标函数。