XGBoost算法的原理GBDT对于简单的损失函数,如指数损失和平方损失,每一次提升都较为简单,但是对于一般的损失函数(如绝对损失),优化难度大大增加。因此 GBDT 利用损失函数负梯度在当前模型的值作为提升树中残差的近似值,拟合一个回归树。
GBDT 的具体算法如下:

2.循环训练 K 个模型𝑘 = 1,2, … ,𝐾
(1) 计算负梯度:对于i = 1,2, … , M

(2) 以负梯度𝑟𝑘𝑖训练模型,得到第 k 颗树的叶结点区域$𝑅_{𝑘𝑗}$,𝑗 = 1,2, … ,𝐽 (3) 对𝑗 = 1,2, … ,𝐽,计算:

(3)更新模型:

XGBoost 是一种高效的 Boosting 训练器,可以实现 GBDT 的功能。且不同于一般的GBDT,XGBoost 采用损失函数的二阶泰勒展开来近似原损失函数,同时在损失函数后加入惩罚项:

以树模型作为弱分类器为例,得到区别于 GBDT 构造树的过程。
首先将𝑓𝑡和Ω的表达式带入目标函数中,得到目标函数的如下形式:
由此可得函数的极小值点:

每次对已有的叶子加入一个分割时,只需通过以下式子判断是否进行分割:

全文见pdf