一、极度梯度提升树(XGBoost)的算法原理
极度梯度提升树整体上仍属于GBDT算法,因此算法也一定是由多个基模型组成的一个加性模型,所以模型可以表示为:
-------(1)
根据前向分布算法,假设第t次迭代的基模型为 ,有:
-------(2)
损失函数基本形式由经验损失项和正则化项构成:
-------(3)
其中 上式第一项为经验损失项,表示训练数据预测值与真实值之间的损失;第二项为正则化项,表示全部t棵树的复杂度之和,这也是算法控制模型过拟合的方法。
根据前向分布算法,以第t步为例,假设模型对第i 个样本xi 的预测值为:
--------(4)
其中 是由第一步的模型给出的预测值,其作为一个已知常量存在,
作为第t步树模型的预测值。因而式(3)式的目标函数可以表示为:
-----(5)
-----(6)
------(7)
因为前 t-1 棵树的结构已确定,所以前 t-1 棵树的复杂度之和也可以表示为常数,所以上式后面可分为 与常数项。
然后针对(7)式的第一项,使用二阶泰勒展开式(注:形如 ,取k =2 即展开至二阶项),得到:
-----(8)
将(8)式代入(7)式 ,因为在该算法的应用中,损失函数最终是用来比较节点分裂前后损失值差值计算的,因此可以去掉常数项(包括 和 Constant),并可重新定义损失函数为去除常数项的新损失函数,可得:
-------(9)
上式还不能在待分裂节点集中直接求出损失(或者说不方便求出),因此还需要继续推导。可以对决策树做一下定义,假设一颗决策树是由叶子结点的权重w和样本实例到叶子结点的映射关系q构成
------------(10)
然后对决策树复杂度的正则化项,模型复杂度可由单棵决策树的叶子结点数T(最大叶子结点数,由实际分裂数量决定)和叶子权重w决定,模型复杂度可由表示为:
---------------(11)
下面将决策树所有叶子结点重新进行归组,即以样本求和方式转为以对应叶子结点的求和方式。将属于第 j 个叶子结点的所有样本划入一个子节点的样本集合中,即 因而(9)式可以改写为:
-----------(12)
-----(13)
----(14)
将 定义为
,将
定义为
,前者 可以裂解为叶子结点所包含样本的一阶偏导数(对应于t-1 步模型预测值的偏导数)累加之和,后者可以理解为相应的二阶偏导数之和,对应于待分裂的某个结点的集合而言,两者均为常数。
-----(15)
观察上述求和式的通项,可知,损失函数变为 分裂后的叶子结点损失函数之和,对于第t棵树,未分裂前 T = 1 ,通过求解 式的极值,得到未分裂前的最优权重和最优损失函数值,w1 和 L1, 然后继续分裂(分裂成w2,w3),按某个特征某个值分裂后 的 叶子(预定的节点数)结点的最优权重(一般为二分树)和对应损失函数,就是求分裂后的节点的
式的w极值点和 损失函数极值(若每一次分裂每个叶子结点都达到最优值,整个损失函数也达到最优),因此对应某一节点令前式导数为0 可求得最优的权重与对应损失函数:
----(16)
-----(17)
在此分裂前的损失函数写为:
---(18)
---(19)
因此分裂后信息增益为:
Gain = ---(20)
如果Gain > 0 则目标函数下降,则考虑此次分裂结果,并考虑遍历所有特征寻找最优特征,即Gain值最大的 作为最优分裂特征,因此w2 、w3 确定,在此基础上进行下一次叶节点分裂,直到达到树分裂约束条件为止。
因此,可见极度梯度提升树(XGBoost)最大特点是损失函数展开到了二阶导数来进一步逼近真实损失, 所以该算法的先天特点是 倾向于过拟合。 以上是该算法 的数学推导和基本过程。