最新公告
  • 欢迎光临数据科学与编程,我们是数据学科学兴趣交流小组立即加入我们
  • XGBoost算法

    自从陈天奇于2015年提出XGBoost以来,该模型就一直在各大数据竞赛中当作大杀器被频繁祭出。速度快、效果好是XGBoost的最大优点。XGBoost与GBDT同出一脉,都属于boosting集成学习算法,但XGBoost相较于GBDT要青出于蓝而胜于蓝。

         XGBoost的全程为eXtreme Gradient Boosting,即极端梯度提升树。要深入理解整个XGBoost模型系统,建议还是要认真研读陈天奇的 XGBoost: A Scalable Tree Boosting System 论文,深入损失函数的推导,这样才能更好的掌握XGBoost。本文仅对模型最重要的部分,即XGBoost损失函数的数学推导过程和结点分裂的增益计算方式进行阐述。
    XGBoost原理推导
     
         以上就是XGBoost完整的损失函数推导过程。基本框架仍然是GBDT框架,但XGBoost的最大特色是用到了损失函数的二阶导数信息,目的就在于能够更加准确的逼近真实损失。
         下图是XGBoost论文中给出的叶子结点权重计算:

         根据二阶导信息把XGBoost的优化推到了极为逼近真实损失的状态,其结点分裂方式就跟CART树的结点分裂方式本质上并没有太大区别,但信息增益的计算方式有所不同。
       
         以上就是XGBoost模型核心数学推导部分。完整的XGBoost模型还有很多工程上的细节,这里不做过多阐述,各位读者最好把XGBoost论文认真研读一遍。完整的XGBoost推导示意图如下所示。
    XGBoost算法实现
         有了GBDT的算法实现经验,XGBoost实现起来就并没有太多困难了,大多数底层代码都较为类似,主要是在信息增益计算、叶子得分计算和损失函数的二阶导信息上做一些变动。同样先列出代码框架:

         底层的决策树结点和树模型定义基本差别不大,具体这里不再列出,可参考第15讲GBDT实现方式。主要是继承底层的树结点和树来定义XGBoost单棵树和XGBoost树模型拟合方式。


     

     

    参考资料:

    XGBoost: A Scalable Tree Boosting System

    https://www.jianshu.com/p/ac1c12f3fba1

    本站上原创文章未经作者许可,不得用于商业用途,仅做学习交流使用,本站免责声明。转载请注明出处,否则保留追究法律责任的权利。《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
    数据科学与编程 » XGBoost算法

    发表评论

    • 53会员总数(位)
    • 321资源总数(个)
    • 19本周发布(个)
    • 2 今日发布(个)
    • 334稳定运行(天)

    提供最优质的博文资源集合

    立即阅览 了解详情