【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能

  • 建树过程中如何选择使用哪个特征哪个值来进行分裂?
  • 什么时候停止分裂?
  • 如何计算叶节点的权值?
  • 建完了第一棵树之后如何建第二棵树?
  • 为防止过拟合,XGB做了哪些改进

树的集成

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_02

本文主要针对xgboost的论文原文中的公式细节做了详细的推导,对建树过程进行详细分析。

对于样本个数为n特征个数为m的数据集

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_03

,其中

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_04


树的集成学习方法使用K个增量函数来预测输出:

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_05

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_06

为子模型的预测函数,每个

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_06

即是一棵树。函数空间

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_08

即树的搜索空间。其中q为每棵树的结构,q将

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_09

域中每个样本对应到唯一的叶节点上,最终产生T个叶节点,

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_10

则是该叶节点对应的权重,w即从节点到权重的映射(权重即叶节点的值)。每个

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_11

对应一个独立的树结构q和该树每个叶节点的权重w。(这里树结构是指每个分裂点和对应的分裂值)。

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_12

可以看做一个分段函数,q对应的不同的分段,w对应的为该分段的值,

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_12

即分段到值的映射。对我们的预测函数

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_14

,目标函数为:

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_15

从公式1中可以看出,对于最终的预测函数

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_16

,其参数为一个个的函数

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_17

,因为参数为函数,所以

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_16

无法使用传统的优化方法在欧氏空间中进行优化,而是采用了加法模型来进行训练。

boost的思想是将一系列弱分类器串行的组合起来,在前面的分类器的基础上迭代的优化新的分类器。

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_19

首先我们对所有的数据默认预测一个固定值

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_20

(对应xgboost中参数base_score,注意并不等于base_score,而是经过Sigmoid函数映射后的值),在此基础上根据该预测值与真实y值的损失 ,建立第一棵树

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_21

,之后每次迭代时都是根据其之前所有树做出的预测之和与真实y值的损失来建立新树。也就是每次迭代建树时用新树

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_21

来优化前一个树的损失 。

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_23

为第t棵树对第i个样本做出的预测。我们每次添加新树的时候,要优化的目标函数为上一个树产生的损失。

因此我们建立第t棵树时有损失函数:

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_24

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_25

为新建的这棵树做出的预测,

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_26

为之前所有的树预测值之和,

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_27

即是新建了当前这棵树后模型做出的预测值,求其与真实值

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_28

之间的损失(注意这里是损失不是残差,这里的

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_29

可以是log_loss, mse等)。

泰勒展开

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_30

gbdt的目标函数与xgboost区别就是带不带正则项,也就是上面式子中的

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_31

。gbdt对损失函数的优化是直接使用了损失函数的负梯度,沿着梯度下降的方向来减小损失,其是也就是一阶泰勒展开。而xgboost在这里使用了二阶泰勒展开,因为包含了损失函数的二阶信息,其优化的速度大大加快。

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_32

下面来看一下泰勒展开的推导。首先我们来复习一下泰勒定理:

设n是一个正整数。如果定义在一个包含a的区间上的函数f在a点处n+1次可导,那么对于这个区间上的任意x,则有:

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_33

其中的多项式称为函数在a处的泰勒展开式,剩余的

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_34

是泰勒公式的余项,是

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_35

的高阶无穷小。 该公式经过变换

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_36

可以得到二阶展开式:

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_37

对于式子:

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_38

可以这样分析,

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_39

为预测值

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_40

和真实值

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_41

之间的损失,

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_41

为常量,因此

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_39

是以预测值

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_40

为自变量的函数,当建立新树给出新的预测

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_45

后,相当于在上一次的预测

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_46

上增加了一个无穷小量

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_47

则有

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_48

其中真实标签

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_41

是常数,

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_50

是上次迭代求出的值即这里的

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_51


【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_45

为无穷小量

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_53

。有了这个对应之后。

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_54

因此我们建立第t棵树时有损失函数:

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_55

令损失函数的一阶、二阶偏导分别为

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_56

,其中

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_57


【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_58

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_59

式中

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_60

为常量,优化的是损失函数的最小值,因此常量值可以从损失函数中去掉。上式可简化为:

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_61

叶节点权重

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_62

式中正则项

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_63

进行展开,得:

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_64

其中

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_45

是新建的树的值,对于每个样本来说,就是对应的叶节点的权重

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_66

。定义

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_67

为分到叶节点

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_68

的样本(叶节点总数为T,样本总数为n)

上式是对本次建树时n个样本的损失求和,下面分两步:先对每个叶节点的样本损失求和,再对所有叶节点求和,两者结果一样。

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_69

对于叶节点

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_68

上的损失:

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_71

对于当前的树结构求

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_72

使

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_73

最小,显然这是个一元二次方程求最小值问题。

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_74

可以得到叶节点权重

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_66

的最优值:

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_76

分裂准则

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_77

上面是对单个叶节点计算出了最优权重,对于新建的这树(树结构

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_78

)在此权重下对应的的最小损失为每个叶节点上样本最小损失之和(将上式中的

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_79

代入):

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_80

在树结构

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_78

下产生的最优损失

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_82

可以做为树结构的评价函数,也就是作为树分裂时候的评价指标。令

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_83

为每次分裂时分到左子树上的样本,

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_84

为每次分裂时分到右子树上的样本,有

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_85

。则在该次分裂后损失的减小量为:

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_86

因此将分裂时增益定义为:

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_87

我们在建树的过程(也就是求分段函数的过程)包括两步:一是选择分裂依据的特征和特征值(将自变量分段),二是确定叶节点的权重(确定每段对应的函数值)。划分的依据准则是Gain,其实也就是损失函数的解析解,划分后叶节点的权重

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_79

是使函数达到解析解的权重

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_79


从最优化的角度来看:GBDT采用的是数值优化的思维, 用的最速下降法去求解Loss Function的最优解, 其中用CART决策树去拟合负梯度, 用牛顿法求步长。XGboost用的解析的思维, 对Loss Function展开到二阶近似, 求得解析解, 用解析解作为Gain来建立决策树, 使得Loss Function最优.

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_90

除了对目标函数添加正则项外,为了减小过拟合,xgboost还使用了列采样和缩减方法(Shrinkage,即Learning rate)。

损失函数计算

【机器学习】xgboost系列丨xgboost原理及公式推导_机器学习_91

对于二分类问题常使用log损失作为损失函数,下面推导一下log loss的一阶梯度G和海森矩阵H。

【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_92


【机器学习】xgboost系列丨xgboost原理及公式推导_数学建模_93

其中p为预测概率。若

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_94

为预测值,则有:

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_95

因此:

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_96

即:

【机器学习】xgboost系列丨xgboost原理及公式推导_数据挖掘_97

【机器学习】xgboost系列丨xgboost原理及公式推导_人工智能_98

【机器学习】xgboost系列丨xgboost原理及公式推导_深度学习_99