简介:
xgboost是Boosting算法的其中一种,Boosting算法的思想是许多弱分类器集成在一起,形成一个强分类器。以为xgboost是一种提升树模型,所以他是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是cart回归树模型。
xgboost是在GBDT的基础上进行改进,使得更加强大,使用范围更大
xgboost一般和sklearn一起使用,但是由于sklearn中没有集成Xgboost,所以需要单独安装
在安装的时候要注意安装多线程版本
1. XGBoost的优势
XGBoost算法可以给预测模型带来能力的提升。当我对它的表现有更多了解的时候,当我对它的高准确率背后的原理有更多了解的时候,我发现它具有很多优势:
1.1 正则化
标准GBM的实现没有像XGBoost这样的正则化步骤。正则化对减少过拟合也是有帮助的。
实际上,XGBoost以“正则化提升(regularized boosting)”技术而闻名。
1.2 并行处理
XGBoost可以实现并行处理,相比GBM有了速度的飞跃。
不过,众所周知,Boosting算法是顺序处理的,它怎么可能并行呢?每一课树的构造都依赖于前一棵树,那具体是什么让我们能用多核处理器去构造一个树呢?我希望你理解了这句话的意思。如果你希望了解更多,点击这个链接。
XGBoost 也支持Hadoop实现。
1.3 高度的灵活性
XGBoost 允许用户定义自定义优化目标和评价标准
它对模型增加了一个全新的维度,所以我们的处理不会受到任何限制。
1.4 缺失值处理
XGBoost内置处理缺失值的规则。
用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。XGBoost在不同节点遇到缺失值时采用不同的处理方法,并且会学习未来遇到缺失值时的处理方法。
1.5 剪枝
当分裂时遇到一个负损失时,GBM会停止分裂。因此GBM实际上是一个贪心算法。
XGBoost会一直分裂到指定的最大深度(max_depth),然后回过头来剪枝。如果某个节点之后不再有正值,它会去除这个分裂。
这种做法的优点,当一个负损失(如-2)后面有个正损失(如+10)的时候,就显现出来了。GBM会在-2处停下来,因为它遇到了一个负值。但是XGBoost会继续分裂,然后发现这两个分裂综合起来会得到+8,因此会保留这两个分裂。
1.6 内置交叉验证
XGBoost允许在每一轮boosting迭代中使用交叉验证。因此,可以方便地获得最优boosting迭代次数。
而GBM使用网格搜索,只能检测有限个值。
1.