注:本文中所有公式和思路来自于邹博先生的《机器学习升级版》,我只是为了加深记忆和理解写的本文。
XGBoost是陈天奇先生提出的一种提升方法,较GBDT不同的是,XGBoost采用了二阶导的信息,不说废话,直接介绍推导过程。我们以CART树为例:
首先我们设定目标函数为:
这其中yi为第i个样本标记值,y~(t-1)为第t-1棵树的预测值,ft(xi)是第t棵树,Ω是为了防止过拟合加入的正则项,C我们先不理会它,后边再解释它的由来。
推导这个过程我们先要回顾一个公式:Taylor展式:
我们可以将y~(t-1)看做x, ft(xi)看做Δx,令:
可得:
现在目标函数已经得到,现在来重新说一下决策树的结构:我们使用决策树做分类或者回归,无非是从根节点到叶子节点的细化过程,落在同一个叶节点的预测值也是一样的,假设某个决策树有T个叶节点,每个叶节点的权值为W=(w1,w2...wT),决策树的学习过程就是构造如何使用特征得到划分,从而得到这些权值的过程。如下图所示:
这里边的q(x)就是如果输入x值最终落到第几个叶节点上而已。w就是叶节点的预测值。目标函数J中的Ω的成分分析如下图:
需要解释的:正则项也就是对决策树的惩罚主要包含两部分,1.如果叶节点越多也就是T越大,越惩罚,2.叶权值平方和越大,越惩罚。
目前准备工作完成,开始计算目标函数:
此时,定义:
从而:
对wj求偏导:
最后将w带回目标函数J中:
其中G、H都是我们实现可以计算出来的:
虽然说目标函数确定了,但是这棵树是我们假设的,所以我们需要先确定这棵树的结构,可以使用ID3/C4.5/CART等方式,用贪心法实现:
1.对于某个划分点,计算划分后的J
2.对于所有的划分,选择J降低最小的分割点
枚举所有划分点,选择最大的增益,直到达到阀值或者得到纯节点:
至此,XGBoost就介绍完毕了,相对于GBDT,XGBoost采用二阶导信息,更快收敛,由于属于“随机森林族”,所以有天然好的泛华能力。
致谢:邹博先生