Xgboost算法详解(原理+公式推导)

 xgboost是华盛顿大学博士陈天奇创造的一个梯度提升(Gradient Boosting)的开源框架。至今可以算是各种数据比赛中的大杀器,被大家广泛地运用。接下来,就详细介绍一下xgboost的原理和公式推导。

    XGBoost其实是一个树集成模型,他将K(树的个数)个树的结果进行求和,作为最终的预测值。好比接下来有两颗决策树:tree1和tree2

图片

    小男孩的回归预测分数是tree1叶子结点的权重和tree2叶子结点的权重相加:2 + 0.9 = 2.9。爷爷的预测分数同理:-1 + (-0.9)= -1.9。

    所以我们可以得出Xgboost的预测函数

图片

    由此得出我们的目标函数(实际值-预测值):

图片

    而接下来的优化就是使得我们的目标函数最小,即预测值无限接近真实值。

    那么Xgboost就可以抽象成如下方程式,即第t轮的模型预测等于前面t-1轮的模型预测再加上一个新的函数,这个新的函数就是当前的决策树。每加一个函数预测效果都要比之前更好一些。

图片

    我们之前讲决策树的时候,讲到决策树自身会有一些惩罚项,比如叶子结点过多,决策树过拟合的风险就会变大。所以说我们设置一个损失函数来表述惩罚项,比如叶子的个数,还有对权重的l2惩罚项。

图片

所以我们的目标函数就变成了如下的方程式所示:

图片

接下来我们使用泰勒来展开我们的目标函数:

图片

接下来我们进一步化简目标函数,把ft换成权重与叶子结点的函数,把样本遍历换成叶子结点上的遍历,减少遍历次数。

图片

继续化简,展开惩罚项,一并进行化简,可化简如下所示公式:

图片

为了使得目标函数最小,我们需要对其对权重w进行求导后使其偏导数为0,然后再带入目标函数中,如下:

图片

目标函数代表了当我们指定一个树的结构的时候,我们在目标上面最多减少多少,我们可以把它叫做结构分数,你可以认为这个就是类似基尼系数一样更加一般的对于树结构进行打分的函数,下面是一个具体的例子:

图片

如上就是比赛战斗机Xgboost集成算法的原理和推导公式,他的优缺点如下所示:

XGBoost的主要优点:
1. 简单易用。相对其他机器学习库,用户可以轻松使用XGBoost并获得相当不错的效果。
2. 高效可扩展。在处理大规模数据集时速度快效果好,对内存等硬件资源要求不高。
3. 鲁棒性强。相对于深度学习模型不需要精细调参便能取得接近的效果。
4. XGBoost内部实现提升树模型,可以自动处理缺失值。
XGBoost主要缺点
1. 相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
2. 在拥有海量训练数据,并能找到合适的深度学习模型时,深度学习的精度可以遥遥领先XGBoost。

怎么样,大家学会了嘛,快来点个赞吧~

喜欢的话点个关注哦~ 会每天分享人工智能机器学习内容,回复关键字可获取相关算法数据及代码~

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
XGBOOST是一种梯度提升算法,它是由多个弱学习器组成的集成模型。XGBOOST的核心是构建一棵决策树,每个决策树都是一个弱学习器。XGBOOST使用梯度提升算法来训练这些弱学习器,每个弱学习器都是在前一个弱学习器的残差上进行训练。最终的预测结果是所有弱学习器的加权和。 XGBOOST的主要优点是它可以处理大规模数据集,并且具有较高的预测准确性。此外,它还提供了一些先进的特性,如缺失值处理、多分类、正则化等。 下面是XGBOOST算法公式: 设 $f_k(x)$ 是第$k$个决策树的预测值,$T$ 是决策树的集合,$J$ 是损失函数,$w_i$ 是样本$i$的权重,$y_i$ 是样本$i$的真实值,$h$ 是新的弱学习器,$\gamma$ 和 $\lambda$ 是正则化参数。 XGBOOST的目标函数可以表示为: $$ Obj^{(t)} = \sum_{i=1}^n L(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) + \sum_{k=1}^t \Omega(f_k) $$ 其中,第一项是损失函数,第二项是正则化项。 损失函数可以是任何可微分的函数,比如平方损失函数、对数损失函数、指数损失函数等。常用的损失函数有: 平方损失函数: $$ L(y, \hat{y}) = \frac{1}{2}(y-\hat{y})^2 $$ 对数损失函数: $$ L(y, \hat{y}) = y\log(\hat{y}) + (1-y)\log(1-\hat{y}) $$ 指数损失函数: $$ L(y, \hat{y}) = e^{-y\hat{y}} $$ 正则化项可以是任何可微分的函数,比如L1正则化、L2正则化等。常用的正则化项有: L1正则化: $$ \Omega(f) = \lambda \sum_{j=1}^J |w_j| $$ L2正则化: $$ \Omega(f) = \frac{1}{2}\lambda \sum_{j=1}^J w_j^2 $$ 最终的目标是找到最优的决策树集合$T$ 和弱学习器$h$: $$ (T^*, h^*) = \arg\min_{T,h}\ Obj(T,h) $$ XGBOOST使用贪心算法来构建决策树。在每个节点上,它选择最优的分裂点,使得损失函数最小化。XGBOOST还使用了特征重要性评估方法,可以评估每个特征对模型的重要性程度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值