泛统计理论初探——初探XGBoost方法

数据挖掘-XGBoost方法简介

初探XGBoost方法
    在本文中将会继续介绍集成学习里的boosting思路,并且会选用XGBoost方法来介绍。XGBoost是一种优化过的提升学习方法,该方法在一些竞赛或者项目中经常被使用,它的预测正确率是比较高的,总体来说性能不错。其实从该方法的名字我们可以发现,这是一种在GBDT方法的基础上进行优化的方法,该方法可以直接用作预测或者和其他机器学习算法一起进行预测。
    我们如何理解XGBoost的思路,其实就是在GBDT的基础上,修改了损失函数的表达式,因为XGBoost本质上内部也是由一些CART树按顺序排列,每次都是当前的CART树去学习之前树的残差的,但是在损失函数的定义上,XGBoost并不是简单将各个CART树的损失函数进行叠加,而是在这个基础上加上了参数的二阶正则项,通过约束参数来达到更强的稳健性;与此同时,在损失函数的内部,与传统的一阶泰勒展开近似方法不同的是,XGBoost使用的是二阶泰勒展开近似,这种近似是更加消耗计算机资源的,但是显然会使得预测结果更加准确。所以XGBoost方法某种程度上是通过空间和时间换取模型的准确率,从而提升模型的预测效果。
    对于XGBoost方法的处理步骤其实就是三个步骤,在这里简单进行说明:
    1)初始化相关的参数,包括树的个数、深度等参数,这个和之前GBDT的初始化基本相同。
    2)开始反复迭代地添加CART树,和GBDT一样进行特征的分裂后生成新的CART树,并且这个新的CART树是去拟合之前所有树的预测值和准确值的残差的,我们可以很明显地发现,当前这个步骤和GBDT是完全一样的。
    3)通过得到的N棵CART树来进行样本的打分,将每个样本的特征代入每一棵树后落到的叶子节点,每棵树的那个叶子节点就是一个分数,代入N个这样的树后得到N个分数,将N个分数进行汇总后得到这个样本的预测值。
    其实XGBoost在前面两个步骤和GBDT是一样的,在第三个步骤计算分数是和GBDT有所不同的,当然最大的区别还是在损失函数的公式,我们见下图的损失函数公式:
在这里插入图片描述
在这里插入图片描述
    根据公式我们发现,在中括号里面就是之前说的二阶泰勒展开,通过这个平方项可以将预测变得更加准确,当然后面还有高阶无穷小的项被省略了。与此同时,在中括号的外面加了正则项,正则项是由叶子节点数量T和每棵树的叶子节点组成的集合w所构成的,通过正则项来对树进行约束防止过拟合。
    对于XGBoost模型来说,它的优点其实比较多,在此处说三点:
    1)对损失函数使用了二阶泰勒展开使得预测更精准、使用了正则项约束使得模型更加稳健并且泛化性更好。
    2)XGBoost不仅仅支持传统的CART树,还支持其他的线性分类器,因为这个模型其实是更像一种策略,模型的通用性更强。
    3)XGBoost模型的实现方式是可以使用并行的,和传统的boosting学习策略不同,XGBoost模型的工具包将最耗时的特征排序进行并行化处理,加快模型训练的时间。
    当然对于该模型来说,当数据量较为庞大的时候训练时间依旧是比较慢的,后续还可以继续优化,所以有了LightGBM模型。总的来说,XGBoost模型是一个较为稳健并且准确率很好的模型,初学者在学习这个模型的时候需要先了解boosting集成学习的思路和GBDT的原理,然后在这个基础上进行优化后才有了XGBoost模型,在使用的时候需要明白该模型的原理和实现步骤。

猜你喜欢

转载自blog.csdn.net/qq_26727101/article/details/108298366