简述
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。
集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差(bagging)、偏差(boosting)或改进预测(stacking)的效果。
集成学习在各个规模的数据集上都有很好的策略。
- 数据集大:划分成多个小数据集,学习多个模型进行组合
- 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
集成学习的分类
集合方法可分为三类:
-
序列集成方法boosting
其中参与训练的基础学习器按照串行生成(例如 AdaBoost)。
基本思路:将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果加权得到最终结果。这样就利用基础学习器之间的依赖关系。通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。 -
并行集成方法bagging
在训练过程中,参与训练的基学习器之间无强依赖,可以进行并行训练(例如 Random Forest)。为了让基分类器之间相互独立,可以将训练集分为若干子集(训练样本较少时,子集之间可能有交叠)。Bagging方法更像时一个集体决策的过程,每个个体都进行单独学习,学习的内容可以相同也可以不同,也可以部分重叠。但由于个体之间存在差异性,最终做出的判断不会完全一致。在最终决策时,每个个体单独做出判断,在通过投票的方式做出最后的集体决策。并行方法的原理是利用基础学习器之间的独立性,通过平均可以显著降低错误。 -
模型融合Stacking
Stacking方法是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。理论上,Stacking可以表示上面提到的两种Ensemble方法,只要我们采用合适的模型组合策略即可。但在实际中,我们通常使用logistic回归作为组合策略。如下图,先在整个训练数据集上通过bootstrap抽样得到各个训练集合,得到一系列分类模型,然后将输出用于训练第二层分类器。
偏差与方差
基分类器的错误率要大于集成分类器。基分类器的错误,是偏差和方差两种错误之和。
偏差主要是由于分类器的表达能力有限导致的系统性错误,表现为训练误差不收敛;方差是由于分类器对样本分布过于敏感,导致在训练样本较少时,产生过拟合。
Boosting方法是通过逐步聚焦基分类器分错的样本,减少集成分类器的偏差。
Bagging方法是采取对训练样本多次采样,并分别训练出多个不同模型,然后做综合,减少集成分类器的方差。
集成学习法的特点:
- 将多个分类方法聚集在一起,以提高分类的准确率(这些算法可以是不同的算法,也可以是相同的算法)
- 集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类
- 严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。
- 通常一个集成分类器的分类性能会好于单个分类器
- 如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。