机器学习篇——boosting

boosting是ensemble集成方法之一,
引入函数空间概念,使用损失函数的导数,采用迭代思想优化弱分类器
1、模型
加法模型,即基分类器组合(一般为决策树)、可分类可回归、判别模型
2、策略
引入前向分步算法,让加法模型中每一轮增加的部分由该轮的决策树决定
分类问题时,最小化指数损失函数,即是adaboost算法
回归问题时,最小化自定义的损失函数,每一轮对残差构造回归树,当残差用梯度下降法更新时,即是gbdt算法,当残差用牛顿法更新时,即是xgboost算法。
3、算法
每一轮之间是由前向分步算法连接的
每一轮中,拟合对象由梯度下降法和牛顿法得到,树的构造可用贪心法
gbdt和xgboost只是拟合对象(可以理解为残差)不同,前者用梯度下降法,后者用牛顿法,故后者收敛速度较快。除此之外,二者基本无差别,均可对树的复杂度正则化,进行剪枝操作,列抽样(特征抽样),行抽样(样本抽样,相当于批梯度下降法),个人认为xgboost也可以用一般决策树进行拟合。
当然如果是面试的话,可以这样说:
GBDT算法是优化经验损失函数,通过迭代反复拟合损失函数的负梯度并利用线性搜索法来生成最优的弱学习器。而XGBoost 算法是通过优化结构化损失函数(加入了正则项的损失函数,可以起到降低过拟合的风险)来实现弱学习器的生成,并且XGBoost算法没有采用上述搜索方法,而是直接利用了损失函数的一阶导数和二阶导数值最大化损失减小值作为分裂条件,生成每一轮的树,并通过预排序、加权分位数、稀疏矩阵识别以及缓存识别等技术来大大提高了算法性能
4、分类与回归
回归问题好理解,梯度累加即可
分类问题,采用一对多策略,对每个类别训练M个分类器,假设有K个类别,那么训练完之后总共有M*K颗树
机器学习篇——boosting
5、适用场景及优缺点
传统机器学习算法中最完美的算法,kaggle最常用算法,等我看到别人总结的缺点时再写,,
6、参考
https://blog.****.net/qq_22238533/article/details/79199605