1.集成学习
集成学习(ensemble learning)是通过构建并结合多个学习器来完成学习任务。将多个学习器进行结合,常常可以获得比单一学习器更显著优越的泛化性能。根据集成学习中个体学习器的生成方式,目前的集成学习方法可以大致分为两类:
- Boosting:个体学习器之间存在强依赖关系,必须串行生成的序列化方法;
- Bagging: 个体学习器之间不存在强依赖关系,可同时生成的并行化方法;
2.Boosting
Boosting算法的工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本进行调整,使得先前基学习器做错的训练样本在后续收到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先指定的值 T T T,最终将这 T T T个基学习器进行加权结合。
3.Bagging
Bagging算法的工作机制:先使用自助采样法(bootstrap samping,一种有放回地抽样方法)采样出
T
T
T个含
m
m
m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些学习器进行结合。再对基学习器结果进行结合时,对于分类任务通常采用简单投票法,对于回归任务使用简单平均法。若分类预测时出现两个类收到同样票数的情形,则最简单的做法就是随机选择一个,也可进一步考察学习器投票置信度来确定最终胜者。
使用自助采样法对初始数据集进行采样后得到的数据集形成集学习器的训练集,该训练集大概只使用了初始数据集中约
63.2
%
63.2\%
63.2%的样本,剩下的样本可以用作验证集来对每个基学习器的泛化性能进行包外估计(out-of-bag estimate)。
Sklearn中提供了专门的类来构造Bagging型的分类器(BaggingClassifier)和回归器(BaggingRegressor),下面以分类器为例进行说明:
其主要参数及其作用如下:
- base_estimator:基学习器类型,默认使用决策树分类器作为基学习器。
- n_estimators:基学习器个数。
- max_samples:每个基学习器的训练数据样本数。当其取值为float类型时,训练集X.shape[0]*max_sample为每个基学习器的训练数据样本数(Bagging中默认采样后的训练集样本数目与原始训练集样本数目相同)。
- max_features:每个基学习器使用的训练样本特征数。
- bootstrap:是否使用bootstrap方式对训练样本进行抽样。
- bootstrap_features:是否使用bootstrap方式对训练样本的特征进行抽样(Bagging的原理中并没有要求对属性进行采样,所以该参数的默认值为False)。
- oob_score: 是否使用包外估计对每个基学习器的泛化性能进行评估。
其主要属性如下:
总结
- 为了得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立,即基学习器之间应尽可能具有较大的差异;同时使基学习器的性能不能太差。
- 从偏差-方差角度,Bagging主要关注降低方差(方差是指同样大小的训练集的变动所导致的学习性能的变化),则Boosting主要关注降低偏差(偏差刻画地是学习算法本身的拟合能力)。