这就是XGBoost算法原理

本文深入探讨了XGBoost算法,它是基于GBDT(梯度提升决策树)的一种优化实现。文章首先介绍了GBDT的基本原理和回归树的构建过程,然后详细解释了加法模型和泰勒公式在XGBoost中的应用。通过泰勒公式,将目标函数转换为可优化的形式,进而学习每棵树的结构。最后,总结了XGBoost算法的关键步骤,并讨论了机器学习算法的目的,强调了损失函数和正则化的平衡对于避免过拟合的重要性。
摘要由CSDN通过智能技术生成

说到XGBoost,不得不说GBDT,GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。
GBDT是基于决策树,想学习关于决策树的内容可以看这篇文章https://blog.csdn.net/blank_tj/article/details/82081002


决策树分为两大类,回归树和分类树。前者用于预测实数值,如明天的温度、用户的年龄、网页的相关程度;后者用于分类标签值,如晴天/阴天/雾/雨、用户性别、网页是否是垃圾页面。这里要强调的是,前者的结果加减是有意义的,如10岁+5岁-3岁=12岁,后者则无意义,如男+男+女=到底是男是女? GBDT的核心在于累加所有树的结果作为最终结果,就像前面对年龄的累加(-3是加负3),而分类树的结果显然是没办法累加的,所以GBDT中的树都是回归树,不是分类树,这点对理解GBDT相当重要(尽管GBDT调整后也可用于分类但不代表GBDT的树是分类树)。

回归树总体流程是在每个节点(不一定是叶子节点)都会得一个预测值,以年龄为例,该预测值等于属于这个节点的所有人年龄的平均值。分枝时穷举每一个feature的每个阈值找最好的分割点,但衡量最好的标准不再是最大熵,而是最小化均方差:即(每个人的年龄-预测年龄)^2 的总和 / N,或者说是每个人的预测误差平方和 除以 N。这很好理解,被预测出错的人数越多,错的越离谱,均方差就越大,通过最小化均方差能够找到最靠谱的分枝依据。


加法模型

XGBoost算法可以看成是由K棵树组成的加法模型:

y^i=Kk=1fk(xi),fkF(1) y ^ i = ∑ k = 1 K f k ( x i ) , f k ∈ F ( 1 )

其中 F F 为所有树组成的函数空间,以回归任务为例,回归树可以看作为一个把特征向量映射为某个score的函数。该模型的参数为: Θ = f 1 , f 2 , . . , f K 。于一般的机器学习算法不同的是,加法模型不是学习d维空间中的权重,而是直接学习函数(决策树)集合。上述加法模型的目标函数定义为:

Obj=ni=1 l(yi,y^i)+Kk=1Ω(fk) O b j = ∑ i = 1 n   l ( y i , y ^ i ) + ∑ k = 1 K Ω ( f k )

其中 Ω Ω 表示决策树的复杂度,那么该如何定义树的复杂度呢?比如,可以考虑树的节点数量、树的深度或者叶子节点所对应的分数的 L2 L 2 范数等等。

如何来学习加法模型呢?

解这一优化问题,可以用前向分布算法(forward stagewise algorithm)。因为学习的是加法模型,如果能够从前往后,每一步只学习一个基函数及其系数(结构),逐步逼近优化目标函数,那么就可以简化复杂度。这一学习过程称之为Boosting。具体地,我们从一个常量预测开始,每次学习一个新的函数,过程如下:

y^0i=0y^1i=f1(xi)=y^0i=f1(xi)y^2i=f1(xi)+f2(xi)=y^1i+f2(xi)...y^ti=tk=1fk(xi)=y^t1i+ft(xi) y ^ i 0 = 0 y ^ i 1 = f 1 ( x i ) = y ^ i 0 = f 1 ( x i ) y ^ i 2 = f 1 ( x i ) + f 2 ( x i ) = y ^ i 1 + f 2 ( x i ) . . . y ^ i t = ∑ k = 1 t f k ( x i ) = y ^ i t − 1 + f t ( x i )

那么,在每一步如何决定哪一个函数 f f 被加入呢?指导原则还是最小化目标函数。
在第 t 步,模型对 xi x i 的预测为: y^ti=y^t1i+ft(xi) y ^ i t = y ^ i t − 1 + f t ( x i ) ,其中 ft(xi) f t ( x i ) 为这一轮我们要学习的函数(决策树)。这个时候目标函数可以写为:

Obj(t)=nt=1 l(yi,y^ti)+ti=iΩ(f

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值