集成学习通过构建并结合多个学习器来完成学习任务,有时也称为多分类器系统,可以获得比单一学习器显著优越的泛化性能。其中,集成中包含同种类型的个体学习器称为“同质”集成,包含不同类型的个体学习器称为“异质”集成。
集成中的个体学习器需要满足:准确性,即每个学习器不能太差;多样性,即学习器间要有差异(泛化性强)。实际上,上述二者是存在冲突的,一般准确性很高时,要增加多样性就需牺牲准确性,所以如何产生和结合“好而不同”的个体学习器恰是集成学习研究的核心。根据个体学习器的生成方式,集成学习可以分为两大类:
1、个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表有Boosting。
Boosting是一族可将弱学习器提升为强学习器的算法: 先从原始数据集中训练一个基学习器,再根据基学习器的表现对训练数据分布进行调整,使得先前基学习器做错的样本后续受到更多的关注,然后再用调整后的训练样本去训练下一个基学习器;如此反复进行,直至训练出设定好的T个基学习器并进行加权结合。最著名的代表就是AdaBoost算法。
2、个体学习器间不存在强依赖关系、可同时并行化的方法,代表有Bagging和随机森林。
为了获得泛化性能强的集成,我们应该尽可能保证基学习器间有较大差异。一种方法是是将原始数据集划分为T个子集,来分别训练T个基学习器,但这样数据集小导致无法生成较好的基学习器,为了解决这个问题,Bagging采用交叉子集的方式来训练。 随机森林(Random Forest,RF)是Bagging的扩展,在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。