XGBoost原理

作者: 老居搞机 | 来源:发表于2020-04-12 11:22 被阅读0次

前言

上一篇我们讲了GBDT,由陈天奇等人发明的XGBoost是GBDT的一种工程实现和改进, 在很多的kaggle比赛上效果都很好,也广泛应用于各大互联网公司

集成模型

XGBoost模型是学习K颗树,每棵树去拟合上一棵树学习的残差,预测结果是每一颗树预测结果的汇总

给定数据集D中有 n 条数据和 m 个特征: 训练K个树对样本结果进行预测:

其中 F 使用回归树比如CART回归树, q(x) 表示将样本 x 分到某个叶子节点上, w 是叶子节点的分数, 所以 wq(x) 表示回归树对样本的预测值

如图:

目标函数

XGBoost的目标函数由训练损失和正则项两部分组成,目标函数定义如下: 其中正则化函数(为了防止过拟合):

T为叶子节点数, w为叶子节点的得分

如图:

梯度提升

第 t 次迭代(生成树)后,模型的预测等于 t-1 次模型预测加上第 t 棵树的预测:

此时目标函数可以写作:

在该目标函数,把当前树ft作为增量部分,基于前 t-1 次的预测值y^(t-1)处做二阶的泰勒展开:

损失函数L关于 y^(t-1) 的一阶偏导数和二阶偏导数: 把常数项去掉最终我们得到的目标函数:

关于泰勒展开补充知识:

  • 泰勒公式是将一个在 x = x0 处具有n阶导数的函数 f(x) 利用关于 (x-x0) 的n次多项式来逼近函数的方法
定义每个叶子节点样本集合 转换成T棵树的表示: 其中:
  • Gj :叶子结点 j 所包含样本的一阶偏导数累加之和,是一个常量

  • Hj :叶子结点 j 所包含样本的二阶偏导数累加之和,是一个常量

为了使第j棵树目标函数最小化,可以在第j棵树上针对参数 w 求导数并且结果等于0(导数为0即函数的极值点),得第j个叶子节点最优化预测为: 代入目标函数, 得到最小损失为:

这个分数越小,代表着生成的这棵树结构越好

实例如图:

树的分裂

XGBoost每棵树分裂看的是叶子节点分裂后的信息增益,即分裂后的左子树得分加上右子树得分减去分裂前的得分: 分裂后L得分减少越多(信息增益Gain),说明效果越好,对每一个节点分割时,计算所有候选分裂点(m个特征,每个特征的值)的Gain得分,选取信息增益Gain最大的得分进行分割,如果最佳分裂点有负增益则停止分裂

这里有个问题在一个结点分裂时,可能有很多个分裂点,每个分裂点都会产生一个增益,如何才能寻找到最优的分裂点呢?论文中给出了两种分裂节点方法

1).贪心法

  • 1.遍历每个结点的每个特征
  • 2.对每个特征,按特征值大小将特征值排序
  • 3.线性扫描,找出每个特征的最佳分裂特征值
  • 4.在所有特征中找出最好的分裂点(分裂后增益最大的特征及特征值)
  • 2).近似算法
    主要针对数据太大,贪心法计算效率会很低或者根本无法计算时,对某个特征划分为m个分裂点集合,再计算每个分裂点信息增益,找到最大的得分
划分分裂点集合使用Weighted Quantile Sketch方法: 得到的划分集合:

为什么要使用hi加权呢?

把目标函数整理成以下形式,可以看出hi有对loss有加权的作用

与GBDT有哪些不同

  • 1.GBDT是机器学习算法思想,XGBoost是该算法的工程实现
  • 2.XGBoost加入了正则项防止过拟合的技术,来控制模型的复杂度,提高模型的泛化能力
  • 3.GBDT在模型训练的时候只使用了代价函数的一阶导数信息, XGBoost对代价函数进行了二阶泰勒展开, 同时使用了一阶和二阶导数
  • 4.在选择最佳分裂点,进行枚举的时候支持并行化
  • 5.传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机 森林相似的策略,支持对数据进行采样
  • 6.传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺 失值的处理策略

参考


关注公众号

相关文章

  • Xgboost原理与Sklearn参数详解

    目录 1、Xgboost原理 2、总结 1、Xgboost原理 2、总结:本文主要分析了Xgboost和GBDT原...

  • day01-集成决策树模型

    1、xgboost原理1.1 xgboost原始论文1.2 xgboost原始ppt介绍1.3 xgboost基础...

  • GBDT进化->XGBoost & LightGBM简记

    很全面的阐释XGBoost: 集成学习之Boosting —— XGBoost 大体来看,XGBoost 在原理方...

  • XGboost 基线模型及部分参数优化

    1 模型原理及调参参考 调参:XGBoost参数调优完全指南原理:xgboost入门与实战(原理篇) 2 输出基线...

  • 集成学习之Boosting-xgboost

    一、什么是Xgboost 二、Xgboost的基本原理 三、Xgboost的工作实例 四、算法的优缺点 *****...

  • xgboost 原理学习

    参考博客 :xgboost_原理GBM

  • 常用模型使用简介

    XGBoost xgboost入门与实战(原理篇)的后半部分介绍了需要注意的参数和基本使用方法。神器xgboost...

  • xgboost原理

    基本思想 xgboost的基本思想就是一种提升的思想,后一个模型在前一个模型的基础上再进行预测,弥补前一个模型做的...

  • xgboost原理

    阅读XGBoost 与 Boosted Tree 基学习器:CART 每个叶子节点上面有一个分数 不够厉害,所以找...

  • XGBoost原理

    更好的阅读体验请跳转至XGBoost原理[https://xv44586.github.io/2019/10/14...

网友评论

    本文标题:XGBoost原理

    本文链接:https://www.haomeiwen.com/subject/odhvmhtx.html