XGBoost全名叫(eXtreme Gradient Boosting)极端梯度提升,GBDT(gradient boosting decision tree)的改进
XGBoost的核心算法思想:
1、不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。
2、当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
3、最后只需要将每棵树对应的分数加起来就是该样本的预测值。
关于XGBoost算法目标函数推导如下:
Xgboost与GBDT二者的不同与共同点:
1、GBDT是机器学习算法,XGBoost是该算法的工程实现
2、在使用CART作为基分类器时,XGBoost显示的加入了正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力【在AdaBoost与GBDT中也有正则化,只不过是以系数的形式出现】
3、GBDT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数
4、传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器
5、传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据的采样
6、传统的GBDT没有设计对缺失值的处理&#x