前面的文章已经介绍了五种不一样的分类器,它们各有优缺点。咱们能够很天然地将不一样的分类器组合起来,而这种组合结果则被成为集成方法(ensemble method)或者元算法(meta-algorithm)。使用集成方法时会有多种形式:能够是不一样算法的集成,也能够是同一种算法在不一样设置下的集成,还能够是数据集不一样部分分配给不一样分类器以后的集成。算法
集成方法(ensemble method)经过组合多个基分类器(base classifier)来完成学习任务,很有点“三个臭皮匠顶个诸葛亮”的意味。基分类器通常采用的是弱可学习(weakly learnable)分类器,经过集成方法,组合成一个强可学习(strongly learnable)分类器。所谓弱可学习,是指学习的正确率仅略优于随机猜想的多项式学习算法;强可学习指正确率较高的多项式学习算法。集成学习的泛化能力通常比单一的基分类器要好,这是由于大部分基分类器都分类错误的几率远低于单一基分类器的。bootstrap
集成方法主要包括Bagging和Boosting两种方法,Bagging和Boosting都是将已有的分类或回归算法经过必定方式组合起来,造成一个性能更增强大的分类器,更准确的说这是一种分类算法的组装方法,即将弱分类器组装成强分类器的方法。api
自举汇聚法(bootstrap aggregating),也称为bagging方法。Bagging对训练数据采用自举采样(boostrap sampling),即有放回地采样数据,主要思想:框架
Boosting是一种与Bagging很相似的技术。Boosting的思路则是采用重赋权(re-weighting)法迭代地训练基分类器,主要思想:函数
样本选择上:性能
样例权重:学习
预测函数:blog
并行计算:it
这两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不同,最终获得不同的效果,将不一样的分类算法套入到此类算法框架中必定程度上会提升了原单一分类器的分类效果,可是也增大了计算量。class
下面是将决策树与这些算法框架进行结合所获得的新的算法:
集成方法众多,本文主要关注Boosting方法中的一种最流行的版本,即AdaBoost。
代码以下: