根据上面的知识对XGBoost公式推导
回顾: 第t次迭代后,模型的预测值= t-1次模型的预测值+第t棵树的预测值。

目标函数可以写成:

回顾泰勒公式:

将误差函数在yi^ (t-1)处进行二阶泰勒展开。即对原损失函数进行泰勒展开,yi是定值,y^t是变化量,即泰勒公式中的Δx。
然后将yit展开: yit = L( y^ it-1 + ft(x))


至此,我们使用了一个二阶的泰勒展开公式,代表了原有的损失函数。这是一个近似值。
gi :第i个观测值在t-1个模型下的一阶偏导数的值。

将损失函数中所有的常数项去掉:

将函数f和正则项代入公式得到以下公式:
使用贪心算法计算得: (前t-1棵树已经是定值了)

最后求上面这个loss函数最小时的最优模型即可。
定义每个叶子节点 j 上的样本集合为 Ij

解释这个式子,我们回到最初的一张图来理解:
j=1时,i=男孩;
j=2时,i=女孩;
j=3时,i=爷爷、奶奶、妈妈;
Ij 就是包含了上面三项的样本集合。

将样本累加操作转换为叶子节点的操作

最终目标函数

如果树的结构确定(q函数确定),为了使目标函数最小,可以令导数为0,可以求得最优的w,将w代入目标函数,可以得到最终的损失为:

下面看个图来理解上面的公式,损失函数越小,我们的树形结构越好:

网友评论