【机器学习基础】XGBoost公式推导

XGBoost是Boosting算法的一种,Boosting算法的核心思想就是将许多基模型加在一起,形成一个强分类器。XGBoost就是将许多的CART树结合在一起,对于那些一颗树无法很好拟合的数据用多颗CART树不断地去逼近。本文从Boosting方法-->BDT(提升树)-->GBDT(梯度提升树)-->XGBoost的脉络来描述XGBoost.

一 Boosting

Boosting方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造一个基函数系列,然后以一定的方式将他们组合成一个预测函数。所以Boosting是一系列算法,其中包含AdaBoost,GradientBoosting,LogitBoost等算法。Boosting算法有两个重要的要素:加法模型和前向分步算法。

1.1 加法模型

加法模型可以表达成如下的形式:

                                                     f(x)=\sum_{m=1}^{M}\beta_mb(x;\theta_m)

其中,b(x;\theta_m)表示基模型,x表示样本集,\theta_m表示基模型的参数,\beta表示基模型的系数。如果要能够应用加法模型,则要求这个选取的基模型是要可加的,一般来说我们会选择树模型或者线性模型来作为基模型,不太适合选取较复杂的模型。既然有了模型的表达式,那么要构造模型,只需要给出经验风险然后极小化经验风险即可,经验风险最小化可以表达为如下形式:

                                                    \underset{\theta,\beta}{min}\sum_{i=1}^{N}L(y_i,\sum_{m=1}^{M}\beta_mb(x_i;\theta_m))

从上面这个式子可以看出,要求得极小值还是比较复杂的,因为L中还有一个求和函数,所以这个时候引入前向分步算法来转换成迭代的方式来一步步的逼近最优值。前向分步算法的基本思想:从一个最基础的基模型开始,逐步优化,每次学习只学习一个基函数及其系数,逐步逼近上述目标函数,具体的,每一步只需要优化如下:

                                                  min\sum_{i=1}^{N}L(y_i,\beta b(x_i;\theta))

1.2 前向分步算法

前向分步算法的伪代码如下:

算法 1. 前向分步算法

输入:训练集D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\},其中x\in R^n,y \in R,损失函数L(y,f(x)),基函数集合\{b(x;\theta)\}

输出:加法模型f(x)=\sum_{m=1}^{M}\beta_m b(x;\theta_m)

第1步:构造初始模型f(x_0)=0

第2步:对于m=1,2,\cdots,M

        1.构造每一步迭代的损失函数

                                    L(y,f(x))=\sum_{i=1}^{N}L(y_i,f_{m-1}(x)+\beta b(x_i;\theta))

        2.极小化损失函数

                                    (\beta_m,\theta_m)=argmin\sum_{i=1}^{N}L(y_i,f_{m-1}(x)+\beta b(x_i;\theta))

        3.更新当前模型

                                     f_m(x)=f_{m-1}(x)+\beta_mb(x;\theta_m)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值