输入样本集\(\{(x_1,y_1),\cdots ,(x_N,y_N)\}\),对于每个样本,其损失函数为
$$L(F_m(x_i),y_i)$$
其中\(F_m(x_i)\)表示已经学习到的\(m\)棵树对\(y_i\)的预测。
考虑所有样本的损失
$$L_m=\sum_{i=1}^N L(F_m(x_i),y_i) + \gamma \left |T\right | + \lambda \Omega (f)$$
现在要求第\(m+1\)棵树,即求得一颗树\(f_{m+1}\)使得以下目标函数最小,
$$L_{m+1} =\sum_{i=1}^N L(F_m(x_i)+f_{m+1}(x_i),y_i)+\gamma T +\lambda \sum_{i=1}^T w_i^2$$
对该目标函数在\(F_m(x_i)\)处进行二阶泰勒展开
$$\sum_{i=1}^N L(F_m(x_i)+f_{m+1}(x_i),y_i) = \sum_{i=1}^N L(F_m(x_i),y_i)+g_if_{m+1}(x_i)+\frac{1}{2}h_if_{m+1}^2(x_i) +\gamma T +\lambda \sum_{i=1}^T w_i^2$$
其中\(g_i=\frac{\partial L_{m+1}}{\partial F_m(x)}|_{x=x_i}\), \(h_i=\frac{\partial^2 L_{m+1}}{\partial F_m^2(x)}|_{x=x_i}\) ,\(T\)表示叶子节点的数目,\(w_j\)表示第\(i\)个叶子节点值。
因为每个样本点都被映射到了唯一一个叶子节点,令\(I_j\)表示映射到第\(j\)个节点的样本序号的集合,上式可以转换为对叶子节点的求和。
$$L_{m+1}=\sum_{i=1}^N L(F_m(x_i)+f_{m+1}(x_i),y_i)=\sum_{j=1}^T (\sum_{i\in I_j}g_i)w_j+\frac{1}{2}(\sum_{i\in I_j}h_i)w_j^2+\gamma T+\lambda w_j^2+constant$$
求上述目标函数关于\(w_j\)的导数
$$\frac{\partial L_{m+1}}{\partial w_j}=\sum_{i\in I_j}g_i+(\sum_{i\in I_j}h_i+2\lambda) w_j=0$$
$$w_j^*=-\frac{\sum_{i\in I_j}g_i}{\sum_{i\in I_j}h_i+2\lambda}$$
将\(w_j^*\)代入原目标函数得
$$L_{m+1}=-\frac{1}{2}\sum_{j=1}^T \frac{(\sum_{i\in I_j})^2}{\sum_(i\in I_j)+2\lambda}+\gamma T$$
XGBoost在寻找最优分裂点时是寻找能够使得目标函数减少最多的分裂点。