二阶差分预测后数据还原公式_xgboost系列丨xgboost原理及公式推导

c81649d67a33b8811cd4af3045648a0b.gif

戳上面的蓝字关注我们哦! be71a82343948e64456b1d2b992c94c6.png 5077db58d637f1acd9937d146b60e3dc.gif
  • 建树过程中如何选择使用哪个特征哪个值来进行分裂?
  • 什么时候停止分裂?
  • 如何计算叶节点的权值?
  • 建完了第一棵树之后如何建第二棵树?
  • 为防止过拟合,XGB做了哪些改进

树的集成

68fdaa61c3602cea499e648c0cc3ed5e.png 本文主要针对xgboost的论文原文中的公式细节做了详细的推导,对建树过程进行详细分析。 对于样本个数为n特征个数为m的数据集5e28e4a8e39eb258e356ac0063ab09b7.png ,其中fd2b724f281c2a08af83da3912081f99.png。 树的集成学习方法使用K个增量函数来预测输出: 1644b19ea15584b5c6b71c14eedb093e.png

fd17a1d0ecc62f8e68e7a8a428895c33.png为子模型的预测函数,每个fd17a1d0ecc62f8e68e7a8a428895c33.png即是一棵树。

函数空间 3b0a719dfeaca63154a301d7e7f21742.png 即树的搜索空间。其中q为每棵树的结构,q将 95632dc99af76b0e14fb99f4cb82e043.png 域 中每个样本对应到唯一的叶节点上,最终产生T个叶节点, a65c140a4c2842c7781e17703aac8c86.png 则是该叶节点对应的权重,w即从节点到权重的映射(权重即叶节点的值)。 每个 f9fe6829226c26c2be75f5743eabdbc0.png 对应一个独立的树结构q和该树每个叶节点的权重w。 (这里树结构是指每个分裂点和对应的分裂值)。 82b681b2f95a16281cce54ac421151e1.png 可以看做一个分段函数,q对应的不同的分段,w对应的为该分段的值,82b681b2f95a16281cce54ac421151e1.png即分段到值的映射。 对我们的预测函数 f7fbfe09dbcd723acdae587dc7cc5ae4.png ,目标函数为: bbe477ef96cf39988134e24517701210.png 从公式1中可以看出,对于最终的预测函数24bd1f0a24f8f60da69aeb340568e22a.png,其参数为一个个的函数f8ac5c0eaf8df5ee7bd7cff6645fd246.png,因为参数为函数,所以24bd1f0a24f8f60da69aeb340568e22a.png无法使用传统的优化方法在欧氏空间中进行优化,而是采用了加法模型来进行训练。 boost的思想是将一系列弱分类器串行的组合起来,在前面的分类器的基础上迭代的优化新的分类器。 90129f731a69d4376022b7664167b7f9.png 首先我们对所有的数据默认预测一个固定值 ccfe3d9dcb3568bacfc0312f97f8d283.png (对应xgboost中参数base_score,注意并不等于base_score,而是经过Sigmoid函数映射后的值),在此基础上根据该预测值与真实y值的损失 ,建立第一棵树8d0ca4b11553e36fe437e147725ae532.png,之后每次迭代时都是根据 其之前所有树做出的预测之和与真实y值的损失来建立新树。 也就是每次迭代建树时用新树8d0ca4b11553e36fe437e147725ae532.png来优化前一个树的损失 。

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

因此我们建立第t棵树时有损失函数: 7a342f82a8420b128c88cabe34cec8f0.png 76c08ffe7591de17ed5228f2ced305fd.png为新建的这棵树做出的预测, 6d4ce18948dff214f092fb9702250bbc.png为之前所有的树预测值之和, 3f73fcbec2ae89b870331bac9ac3e09a.png 即是新建了当前这棵树后模型做出的预测值,求其与真实值 b137010e58f8dc58526c35246f3459c1.png 之间的损失(注意这里是损失不是残差,这里的 40d166d3ba566cb62fce76d9a2bad7b3.png 可以是log_loss, mse等)。 泰勒展开 853378031938d7c1b7c60d6f2208760b.png gbdt的目标函数与xgboost区别就是带不带正则项,也就是上面式子中的 2a4f5d73646ea7ae5fbc1d18c408a236.png 。 gbdt对损失函数的优化是直接使用了损失函数的负梯度,沿着梯度下降的方向来减小损失,其是也就是一阶泰勒展开。 而xgboost在这里使用了二阶泰勒展开,因为包含了损失函数的二阶信息,其优化的速度大大加快。 b7b47379dbc67f330352ee0310d695f1.png 下面来看一下泰勒展开的推导。首先我们来复习一下泰勒定理: 设n是一个正整数。如果定义在一个包含a的区间上的函数f在a点处n+1次可导,那么对于这个区间上的任意x,则有:ee2c857d762f93c28faec6054d5c559e.png其中的多项式称为函数在a处的泰勒展开式,剩余的6127d32cc10f98a9c5253a165a5ad55d.png是泰勒公式的余项,是87d850ee2918261f2e7e1da6ed93e567.png的高阶无穷小。  该公式经过变换7493613af7fb102dd1a942eea7131500.png可以得到二阶展开式: 0f5b346c62515447b03883aa27d34286.png 对于式子: 2f317ee4527cf20f23a3cf1d7f8ed8b1.png 可以这样分析, 79bc1e7949355e07d8c996b93ba0b90f.png 为预测值 2c9b2c1d03da1c85b7e3c445d944576a.png 和真实值 fb03d28324698911538d84d1f04b6375.png 之间的损失, fb03d28324698911538d84d1f04b6375.png 为常量,因此79bc1e7949355e07d8c996b93ba0b90f.png是以预测值2c9b2c1d03da1c85b7e3c445d944576a.png为自变量的函数,当建立新树给出新的预测4469311e5f0acb98c60f843fc002a928.png后,相当于在上一次的预测 bc7b248b48dd2922efc0bd8151f4efd6.png 上增加了一个无穷小量4ba90b96a27dcf0563a57e69e063de55.png 则有 9efe0dae5497c3642c07eb2e02ed562e.png 其中真实标签fb03d28324698911538d84d1f04b6375.png是常数, 38424075600a6cbed4ae5b6e0b9169ac.png是上次迭代求出的值即这里的 f0ccc9181817910fc7cfaa09a2621074.png4469311e5f0acb98c60f843fc002a928.png 为无穷小量 f3a807466362a67e2224b273836eb35c.png 。 有了这个对应之后。 adb54ef6eb776ff78b54ceba4103a942.png 因此我们建立第t棵树时有损失函数: 54c526c12c800774edbdba3b8c0956e0.png 令损失函数的一阶、二阶偏导分别为72fa359397a0144d6468200ed419146e.png,其中 fe26ab2c196ce9bc5fc31fcdf02208a4.pngb493e082d07e8bd1dc9338b5bd29a9d3.png d27ebc89fbae5f4029ac4e8c0c536f66.png 式中5e5dc7c69462dedcfd072cc5017d9433.png为常量,优化的是损失函数的最小值,因此常量值可以从损失函数中去掉。上式可简化为: eb725cc2d7a2ce1617092e2532db4efa.png

叶节点权重

ff57364831dd26927c005e728c27ffbf.png 式中正则项8a04c3809b65f1d9d954e6791d914873.png进行展开,得: 0e8dad127473253ba877991f73fefb51.png 其中4469311e5f0acb98c60f843fc002a928.png是新建的树的值,对于每个样本来说,就是对应的叶节点的权重 3892d82afd485cca9cc723091f4565e4.png 。定义 63015732594a76247ab8955cfbb9e9b9.png 为分到叶节点 269e604b37c644cd248dd19ebed44f27.png 的样本(叶节点 总数为T,样本总数为n) 上式是对本次建树时n个样本的损失求和,下面分两步:先对每个叶节点的样本损失求和,再对所有叶节点求和,两者结果一样。 c6317170924554b8fd2a4879258a0b11.png 对于叶节点269e604b37c644cd248dd19ebed44f27.png上的损失: 51316130f225b46211eb1151fab1d683.png 对于当前的树结构求 96a557ea63d2b061766bd5e9f0e6e683.png 使 8c69c708eb64b137ab0e0dda1ee886bc.png 最小,显然这是 个一元二次方程求最小值问题。 3212fbf6e2396b3f8ba2a6cbe3db8bec.png 可以得到叶节点权重3892d82afd485cca9cc723091f4565e4.png的最优值: 75d4c5bdb89df88f5898a30eb4027c34.png

分裂准则

da06f1771227e1dc00e2542256185a83.png 上 面是对 单个叶节点计算出 了最优权重,对于新建的这树(树结构 accc0fb42ec0afee8a1fca62b67d3ccf.png )在此权重下对应的的最小损失为每个叶节点上样本最小损失之和(将上式中的 f984029e72bd207b26485784f16cdbae.png 代入): ef1e2ac22f17df30117ebb1e2d914c28.png 在树结构accc0fb42ec0afee8a1fca62b67d3ccf.png下产生的最优损失d3c8b8fd6ad29f1b12c2a3f482a0dda2.png可以做为树结构的评价函数,也就是作为树分裂时候的评价指标。 令 34fe707dd35f1ecf6340bdf6fdacb9ac.png 为每次分裂时分到左子树上的样本, 815a00c0174669312ae5d98edaca6753.png 为每次分裂时分到右子树上的样本,有 50d9c2eca2b7889a9174cebaee6b3551.png 。 则在该次分裂后损失的减小量为: ec332af8a4f1a5ea3c3c40c23750c65d.png 因此将分裂时增益定义为: ac7ea596600c17d81fb79f5f6cd017d6.png 我们在建树的过程(也就是求分段函数的过程)包括两步:一是选择分裂依据的特征和特征值(将自变量分段),二是确定叶节点的权重(确定每段对应的函数值)。划分的依据准则是Gain,其实也就是损失函数的解析解,划分后叶节点的权重f984029e72bd207b26485784f16cdbae.png是使函数达到解析解的权重f984029e72bd207b26485784f16cdbae.png。 从最优化的角度来看:GBDT采用的是数值优化的思维, 用的最速下降法去求解Loss Function的最优解, 其中用CART决策树去拟合负梯度, 用牛顿法求步长。XGboost用的解析的思维, 对Loss Function展开到二阶近似, 求得解析解, 用解析解作为Gain来建立决策树, 使得Loss Function最优.

7edee50bfbaa9dda18e2a60bb8c7acb7.gif

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

损失函数计算

de1ba8a0a9e9314efccf0e119f5dbe34.png 对于二分类问题常使用log损失作为损失函数,下面推导一下log loss的一阶梯度G和海森矩阵H。ad2f9411903900d9eccdc894415e2324.pngce285577efc9011ace372c014def9ca5.png 其中p为预测概率。 若 98efb59f37a3d5041fee6772bc850836.png 为预测值,则有: d342d3851fa785eac1da50e3576858ee.png 因此: 59a4631dc585a7633e2aa4332cb0262d.png 即: 0378343dcdd5cf5f7bdbceefa551d9d4.png 851b21b2a0969a6a74ce0b0def11b074.png

网络人工智能园地,力求打造网络领域第一的人工智能交流平台,促进华为iMaster NAIE理念在业界(尤其通信行业)形成影响力!

d4e93ae420028125ac5f5157e4090260.png

a61573925de46bc30a210f81fdfa28db.png

851b21b2a0969a6a74ce0b0def11b074.png

11129490f094aa34d1d95dacb190f0fe.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值