根据上面的知识对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代入目标函数,可以得到最终的损失为:
下面看个图来理解上面的公式,损失函数越小,我们的树形结构越好: