集成学习
集成方法的目标是把多个使用给定学习算法构建的基估计器的预测结果结合起来,从而获得比单个估计器更好的泛化能力/鲁棒性。简单来说集成学习就是把若干个基学习器通过某种学习算法结合起来,进而达到比单个基学习更好的效果。
主要有两个问题:
(1)选择若干个基学习器
(2)选择某种学习算法
首先,选择的基学习器的方法有两种:一种是选择相同的基学习器,如决策树DT、KNN、神经网络。集成学习中使用的都是相同的基学习器。另一种方法是选择不同的基学习器。
其次,集成学习的常用的方法有Bagging方法和Boosting方法。Bagging方法的典型例子是RF(随机森林 Random Forest),Boosting方法的典型例子是Adaboost、GBDT(梯度提升树)。
1、Bagging方法和Boosting方法
1.1Bagging(套袋法)
借用一张比较形象的图来描述一下Bagging方法:
从图中可以看到,Bagging方法对m个样本的训练集采取随机采样的方法(Bootstraping方法)抽取m个样本,进行T轮抽取,得到T个训练集。对这T个训练集,独立训练T个弱学习器,然后使用某种集合策略组合成强学习器。
其中,随机采样(也称为自助采样法)方法是Bootstrapping方法。这是一种有放回的抽样方法。是非系数统计中一种重要的估计统计量方差而进行区间估计的统计方法。若训练集大小为N,对于每个弱学习器来说,随机有放回的从训练集中抽取N个训练,作为该弱学习器的训练集。
随机:如果不随机的话,每个弱学习器的训练集一样,训练出的弱学习器的预测结果一样。
有放回:有放回抽样,每个弱学习器的训练集之间才会有交集。完全不同的话,在做分类的时候,最后的分类结果取决于多个弱学习的投票表决,则每个都不同。
结合策略:对于分类和回归问题采取的结合策略不同
分类:所有弱学习器投票产生最终分类结果
回归:所有弱学习器预测结果均值作为最终预测结果
随机森林RF是Bagging算法的一个典型例子,是Bagging算法结合决策树DT,多棵决策树组成森林,在随机取样的基础上加上特征的随机选取,结合构成随机森林。
在scikit-learn中,bagging 方法使用统一的 BaggingClassifier 元估计器(或者 BaggingRegressor ),基估计器和随机子集抽取策略由用户指定。
eg:
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.neighbors import KNeighborsClassifier
>>> bagging = BaggingClassifier(KNeighborsClassifier(),
... max_samples=0.5, max_features=0.5)
1.2、Boosting(提升法)
继续上图:
从图中可以看到,Boosting算法是从弱学习器开始加强,通过加权来进行训练。首先对训练集中的每个样本建立初始权值,表示对每个样本的关注度。首先从训练集中用初始权重D(1)训练弱学习器1,然后根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的在弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting算法中典型的例子是GBDT和Adaboost。
1.3两种方法区别
1). 样本选择:Bagging采取Bootstraping的是随机有放回的取样,Boosting的每一轮训练的样本是固定的,改变的是每一个样本的权重。
2). 样本权重:Bagging采取的是均匀取样,且每个样本的权重相同,Boosting根据错误率调整样本权重,错误率越大的样本权重会变大
3). 并行计算:Bagging 的各个预测函数可以并行生成;Boosting的各个预测函数必须按照顺序迭代生成。
将决策树与以上框架组合成新的算法:
- Bagging + 决策树 = 随机森林
- AdaBoost + 决策树 = 提升树
- gradient boosting+ 决策树 = GBDT
2.结合策略
对于Bagging和Boosting方法训练完弱学习器后,都需要通过某种结合策略把不同弱学习器的结果结合起来,主要有三种结合策略。
2.1平均法
该方法的原理是构建多个独立的估计器,然后取它们的预测结果的平均。一般来说组合之后的估计器是会比单个估计器要好的,因为它的方差减小了。
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
主要有算术平均和加权平均两种。
2.2投票法
对于分类问题的预测,通常使用的是投票法。
最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数。如果多个最高票,则随机从中选择。
稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
2.3学习法
学习法的代表是stacking方法,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。