XGBoost
![7600e679fefee2bec5594ff53d0282b2.png](https://img-blog.csdnimg.cn/img_convert/7600e679fefee2bec5594ff53d0282b2.png)
XGBoost是一个优化的分布式梯度增强库,旨在实现高效,灵活和便携。
安装
python库文件安装:pip install xgboost
高阶安装可以参考:
这里xgboost.apachecn.org简介
XGBoost,Extreme Gradient Boosting。其基于梯度提升决策树 gradient boosted tree(GBDT/GBRT/GBM)。主要应用于监督学习中,是数据比赛中常用的大杀器。
CART,分类与回归树 Classification and Regression Tree,从名字就可以看出既可以处理分类也可以处理回归问题。CART能够通过对变量进行划分来不断分裂生成一个二叉树,首先对一维数据排序,然后对排序的特征进行切分,最终的切分点由评估指标确定,分类指标为基尼指数,回归指标是最小平方和,找到切分点后生成左右子树。
基尼指数 Gini指数
基尼值用来描述数据集的纯度,当这个值越小的时候说明整个数据集的纯度越高。直观的说,就是随机从数据集中抽两个样本,它们的标记不一致的概率。
![60c59acb214b6bfd3cdcdceb6d7dea3b.png](https://img-blog.csdnimg.cn/img_convert/60c59acb214b6bfd3cdcdceb6d7dea3b.png)
我们就可以计算基尼指数:
![711e7261993f971b650071a6d7955d23.png](https://img-blog.csdnimg.cn/img_convert/711e7261993f971b650071a6d7955d23.png)
在整个属性集合中,会选择使得划分后基尼指数最小的那个属性作为最优的分割属性。
梯度提升树
Boosting的思想即是“三个臭皮匠赛过一个诸葛亮”,将多个弱分类器转化为强分类器。这需要怎么做呢?最简单的方法就是将多个分类器的结果进行加权。再结合到决策树就得到了提升数Boosting Tree。
以损失函数MSE为例,
对于第一个弱分类器,我们的目标是
对于第二个弱分类器,我们的目标是
对于第t个弱分类器,我们的目标是
那么,对于第t+1个弱分类器,我们的目标是
即,
这就得到了提升树算法。
虽然这样能解决优化问题,但是对于其他一些损失函数,这种方法并不是很友好,有些情况下很难再去进行残差拟合了,所以就有了梯度提升树。重新回到我们的目标,最小化
令