写个我能看得懂的XGBoost原理介绍

XGBoost(eXtreme Gradient Boosting),由华盛顿大学计算机系博士陈天奇开创,是一个具有可扩展性的基于树提升算法的机器学习系统。我们习惯称它为XGB算法,该算法在训练过程中通过输入含有特征集和目标值Y的样本,生成一个集成树模型,该模型会对每个样本进行打分作为y的预测值,这里Y既可为数值型,也可以是分类型,也就是说回归预测和分类预测XGB都支持。

既然是集成树模型,不得不提该类模型的两大流派boosting和Bagging,XGB属于前者,因为XGB只能在一棵基树(弱分类器)建好之后才能建下一棵,后面的树建立会依赖前面树。一个模型可能有成百上千棵基树构成,每个样本在每棵基树上都会得到一个分数,n棵树就有n个得分,然后将这n个得分相加就得到了XGB模型对每个样本的预测打分yhat。

那么XGB模型是怎样训练出来的呢,只要搞懂两个关键问题,一个是模型如何从开始只含有一棵树到最终训练成由成百上千个基树组成的模型,一个是每一棵基树是如何建立的。前者指的是模型如何迭代,后者指的是基模型如何构建。

首先看第一个问题。XGB每次迭代都会增加一棵新的基树,新基树通过拟合前面迭代模型对样本的预测值与真实值之间的残差来构建。第1次迭代后模型只有1棵树,第2次迭代模型有2棵树,第n次迭代模型就有n棵基树。比方说某个样本的y值为100分,第n次迭代出的模型预测其为60分,距离100分差了40分,差了很远,就需要加入新的树进行迭代,而新树就是以40分为预测目标,假设新树建立好之后预测为30分,则第n+1次模型的预测值为60+30=90分,逐渐靠近真实分数100。这就是XGB模型迭代的大致过程,也是为什么前面说各个树之前会存在依赖关系。

当然迭代的过程需要构建数学模型来实现,一个模型的构建离不开构造目标函数,XGB的目标函数是在损失函数的基础上加上了衡量模型复杂度的正则化项,前者反映模型的偏差,而后者反映模型的方差。其中,损失函数度量的是预测值与真实值的差异程度,形式不固定,不过后面会讲到需要满足一阶和二阶可导;而正则化项和树的叶子数量、叶子权重有关。模型迭代的过程也就是求解目标函数最优解的过程,这其中就有对目标函数的不断化简处理,包括泰勒二阶展开近似和将样本扫描转化为叶子节点扫描这两种关键方法,最后能将求解一个抽象模型变成了求解一元二次方程的问题(极值理论),而最优解对应的目标函数值我们称之为模型的结构分数,这个结构分数可以判断一棵树构建的有多好,对应的分数计算过程也会用到损失函数的一阶和二阶求导值。

接着再看第二个问题。因为光知道树建得好不好不够啊,一棵树的结构几乎无限多,总不能一个一个尝试来找出最好的那棵吧,所以一棵树该如何生长是个大问题。普通树模型的关键是每次分裂过程如何找到特征的最佳切分点来确定树的叶子该怎么生长,XGB的树模型也是一样,只是与其他树模型的不同之处在于,在分裂过程中,XGB使用的是前面提到的结构分数来计算分裂收益,另外在选择特征切分点时,除了主流的贪心算法,XGB提供了分位数切点方式,不需要对每个特征的每个取值都遍历分裂过程,从而让最佳切分点寻找过程更高效,也更容易作工程化实现。

这样,我们对从一棵树的生长过程,到多棵树如何集成为XGB模型就有个认识了。不过模型构建只是XGB的一部分,它最有特点的地方其实是工程上的应用,有很多巧妙的并行计算等设计。这是不是与我们之前介绍过的SynchroTrap系统的设计思路有异曲同工之妙呢。

至此,想必我们对XGB已经有了全局的认识,接下来就要结合数学公式进行说明了。1.XGB是由k个基模型组成的一个加法模型

图片

点击阅读全文

简介:FRM持证人|传播分享反欺诈风控知识。欢迎关注微信公众号:反欺诈攻防战
(0)
打赏 喜欢就点个赞支持下吧 喜欢就点个赞支持下吧

声明:本文来自“反欺诈攻防战”,分享链接:https://www.zyxiao.com/p/301594    侵权投诉

网站客服
网站客服
内容投稿 侵权处理
分享本页
返回顶部