1 Boosting原理
集成学习的一般结构是:先学习一组“个体学习器”,再将他们根据某种策略组合起来。而这些“个体学习器”对于当前数据集的学习能力有强有弱,那么这些“个体学习器”的学习性能就可以用”弱学习器“和”强学习器“来表示。
1.1 弱学习与强学习
那么什么是弱学习器和强学习器呢?历史上Valiant和 Kearns提出了"强可学习"和"弱可学习"的概念。
- 弱可学习:识别错误率小于1/2(即准确率仅比随机猜测略高的学习算法)
- 强可学习:识别准确率很高并能在多项式时间内完成的学习算法
非常有趣的是在PAC 学习的框架下,强可学习和弱可学习是等价的,也就是说一个概念是强可学习的充分必要条件是这个概念是弱可学习的。那么一个弱可学习,经过一定的策略,也可以被提升为强可学习,而弱分类器一般比强分类器要简单得多。我们可以从弱学习器出发,经过反复的学习,得到一组弱分类器,然后通过一定的形式组合它们,进而达到强可学习的目的。
1.2 Boosting思想
而Boosting就是一族可将弱学习器提升为强学习器的算法。Boosting算法的大概思想是:先从训练样本训练出一个基学习器(该学习器为弱学习器),再根据基学习器的表现对训练样本的分布进行调整,使得先前做错的训练样本在后续的训练中得到更多的关注,然后基于调整分布后的训练样本训练下一个基学习器,如此往复,直到基学习器的数目达到预先设定好的阈值 T T T,最后将这 T T T个基学习器进行加权结合。
Boosting思想最终的预测效果是不断减少偏差,与Bagging有着本质的不同(减小方差)。
而且大多数的Boosting方法都是通过改变训练数据集的概率分布(训练数据不同样本的权值),针对不同概率分布的数据调用弱分类算法学习一系列的弱分类器,最终形成一个强分类器。而这过程中有两个问题需要给出答案:
- 第一个是每一轮学习应该如何改变数据的概率分布;
- 第二个是如何将各个弱分类器组合起来。
对于这两个问题,不同的Boosting方法有不同的答案。目前较热的Boosting方法有如下几种:AdaBoost、梯度提升决策树(GBDT)、XGBoost、LightGBM。
2 AdaBoost
AdaBoost链接
通过提高那些在前一轮分类器中被错误分类的样本的权重,减小那些被正确分类样本的权重,并将各个弱分类器的组合是通过加权表决进行组合来得到最终的模型。
3 梯度提升决策树(GBDT)
梯度提升决策树(GBDT)链接
是基于残差学习的梯度提升树,我们用每个样本的残差表示每次使用基函数预测时没有解决的那部分问题,每一颗新树拟合的是前边所有树结果和的残差,以进一步减小偏差。
4 XGBoost
XGBoost链接
本质上是一个GBDT,通过Gradient Tree Boosting实现多棵CART树的集成学习。
5 LightGBM
LightGBM链接
本质上与Xgboost没有出入,只是在XGBoost的基础上进行了优化