• XGBoost的原理、公式推导


    本文是基于刘启林老师的知乎文章所进行的学习笔记。
    XGBoost(eXtreme Gradient Boosting)极致梯度提升,是一种基于GBDT的算法或者说工程实现。

    XGBoost基础

    在这里插入图片描述

    1、GBDT基础

    梯度提升决策树(Gradient Boosting Decision Tree,GBDT)是一种基于boosting集成思想的加法模型,训练时采用前向分布算法进行贪婪的学习,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差。这也导致GBDT是串行的,无法并行计算。
    boosting集成策略:
    在这里插入图片描述

    预备知识:提升树的训练例子
    在这里插入图片描述
    在这里插入图片描述
    第一棵树:
    在这里插入图片描述

    第二棵树:
    在这里插入图片描述

    第三棵树:

    在这里插入图片描述

    以此类推
    在这里插入图片描述
    提升树使用的残差是真实值与预测值的差。而GBDT使用的是负梯度
    在这里插入图片描述

    GBDT高度概括:

    1. 使用基于提升树的算法
    2. 负梯度来模拟残差
    3. 针对上一轮的残差,使用一棵树来“拟合”
    4. 最终会得到M课树,每棵树有J个节点,那么最终GBDT的表达式如下所示:
      在这里插入图片描述

    XGBoost原理

    1、概述

    在这里插入图片描述

    XGBoost的基本思想和GBDT相同,但XGBoost进行许多优化,如下所示
    在这里插入图片描述

    2 XGBoost目标函数推导

    XGBoost目标函数由两块组成:损失函数和正则项
    在这里插入图片描述

    在这里插入图片描述

    二阶泰勒展开

    由于t-1棵树已经结构已经被确定(提升树的概念)、所以可以去掉不含有x的部分,即去掉二阶泰勒展开的常数项。
    在这里插入图片描述

    正则化项展开
    这里就是留下了当前t的这棵树的结构参数
    在这里插入图片描述

    合并一次项、二次项系数
    首先重新定义一棵树,其核心就是这种权重w,根据映射关系q和权重w可以“检索”到树上的每一个节点
    在这里插入图片描述

    然后,定义树的复杂度。其实就是算正则项。由叶子结点和权重w的l2范数决定。
    在这里插入图片描述

    最后合并系数
    请添加图片描述
    在这里插入图片描述

    XGBoost目标函数解求解

    这里其实就是用的是一元二次方程的最优解求解公式。
    在这里插入图片描述

    每个节点都是独立的,所以当每个节点取得最优解时,全局最优解也诞生了。

  • 相关阅读:
    Pandas的数据结构
    通用后台管理系统前端界面Ⅹ——前端数据表格的删除、查找
    排障:记录一次NFS无法共享
    小鼠血清白蛋白包裹四氧化三铁纳米粒
    深入理解RocketMQ 广播消费
    django开发个人博客系统
    【数模系列】03_层次分析法
    车联网产业中网络安全与数据安全应该怎么做
    Springboot 解决linux服务器下获取不到项目Resources下资源
    【Java中23种面试常考的设计模式之模板模式(Template)---行为型模式】
  • 原文地址:https://blog.csdn.net/qq_43454276/article/details/126332597