面对一个机器学习问题,通常有两种策略,一种是尝试各种模型选择其中表现最好的模型做重点调参优化。另外一种策略是集各家之长,核心是将多个分类器的结果统一成一个最终的决策,使用这类策略的机器学习方法称为集成学习,其中的每个单独的分类器成为基分类器。
Boosting
boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。
它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。
Bagging
bagging与boosting的串行训练方式不同,bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。其中很著名的算法之一是基于决策树基分类器的随机森林。为了让基分类器之间相互独立,将训练集分为若干个子集(当训练样本数量较少时,子集之间可能有交叠)。bagging方法更像是一个集体决策的过程,每个个体都进行单独学习,学习的内容可以相同,也可以不同,也可以部分重叠。但由于个体之间存在差异性,最终做出的判断不会完全一致。在最终做决策时,每个个体单独做出判断,再通过投票的方式做出最后的集体决策。
从消除基分类器的偏差和方差的角度来理解boosting和bagging方法的差异。
基分类器,有时也称为弱分类器,因为基分类器的错误率要大于集体分类器。基分类器的错误,是偏差和方差两种错误之和。偏差主要是由于分类器的表达能力有限导致的系统性错误,表现在训练误差不收敛。方差是由于分类器对于样本分布过于敏感,导致在训练样本数较少时,产生过拟合。
boosting方法是通过逐步聚焦于基分类器分错的样本,减少集成分类器的偏差。bagging方法则是采取分而治之的策略,通过对训练样本多次采样,并分别训练出多个不同模型,然后做综合,来减少集成分类器的方差。假设所有基分类器出错的概率是独立的,在某个测试样本上,用简单多数投票方法来集成结果吗,超过半数基分类器出错的概率会随着基分类器的数量增加而下降。